日期:2014-05-17 浏览次数:20903 次
日期:2012/02/25? 来源:GBin1.com

?
在过去的几年中,但页面的网站设计越来越多了,大多数都是使用javascript来实现过渡效果。那么今天我们讲介绍使用CSS的transition和:target属性来实现同样的过渡效果。
HTML标签包含了5个主要的部分:一个header及其4个内容区域。每一个区域都拥有一个id和class panel.而且我们会添加另外一个用来获得class为content的部分。
<!-- Home --> <div id="home" class="content"> ??? <h2>Home</h2> ??? <p>Some content</p> ??? <!-- ... --> </div> <!-- /Home --> ? <!-- Portfolio --> <div id="portfolio" class="panel"> ??? <div class="content"> ??????? <h2>Portfolio</h2> ??????? <p>Some content</p> ??????? <!-- ... --> ??? </div> </div> <!-- /Portfolio --> ? <!-- About --> <div id="about" class="panel"> ??? <div class="content"> ??????? <h2>About</h2> ??????? <p>Some content</p> ??????? <!-- ... --> ??? </div> </div> <!-- /About --> ? <!-- Contact --> <div id="contact" class="panel"> ??? <div class="content"> ??????? <h2>Contact</h2> ??????? <p>Some content</p> ??????? <!-- ... --> ??? </div> </div> <!-- /Contact -->
在header中我们将添加主要的导航和标题:
<!-- Header with Navigation --> <div id="header"> ??? <h1>Page Transitions with CSS3</h1> ??? <ul id="navigation"> ??????? <li><a id="link-home" href="#home">Home</a></li> ??????? <li><a id="link-portfolio" href="#portfolio">Portfolio</a></li> ??????? <li><a id="link-about" href="#about">About Me</a></li> ??????? <li><a id="link-contact" href="#contact">Contact</a></li> ??? </ul> </div>
如此无规律添加header到末尾的原因在于我们想让导航可以被siblings选择器所控制,这样我们可以分别的对他们处理颜色。
主要的想法就是使用伪class:target来添加页面间的过渡效果,在这个例子中,我们将会幻灯上下我们的页面部分
首先我们将设计header和导航的样式。我们希望所有这些都在同一个位置,即使其它部分都会移动
#header{
??? position: absolute;
??? z-index: 2000;
??? width: 235px;
??? top: 50px;
}
#header h1{
??? font-size: 30px;
??? font-weight: 400;
??? text-transform: uppercase;
??? color: rgba(255,255,255,0.9);
??? text-shadow: 0px 1px 1px rgba(0,0,0,0.3);
??? padding: 20px;
??? background: #000;
}
#navigation {
??? margin-top: 20px;
??? width: 235px;
??? display:block;
??? list-style:none;
??? z-index:3;
}
#navigation a{
??? color: #444;
??? display: block;
??? background: #fff;
??? background: rgba(255,255,255,0.9);
??? line-height: 50px;
??? padding: 0px 20px;
??? text-transform: uppercase;
??? margin-bottom: 6px;
??? box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
??? font-size: 14px;
}
#navigation a:hover {
??? background: #ddd;
}
除了#home的所有的部分都拥有panel class。这里我们将在任何时候元素取得“target”的时候使用过渡效果。主要技巧是在一般class中使用一个负的margin,而在:target中不使用margin
.panel{
??? min-width: 100%;
??? height: 98%;
??? overflow-y: auto;
??? overflow-x: hidden;
??? margin-top: -150%;
??? position: absolute;
??? background: #000;
??? box-shadow: 0px 4px 7px rgba(0,0,0,0.6);
??? z-index: 2;
??? -webkit-transition: all .8s ease-in-out;
??? -moz-transition: all .8s ease-in-out;
??? -o-transition: all .8s ease-in-out;
??? transition: all .8s ease-in-out;
}
.panel:target{
??? margin-top: 0%;
??? background-color: #ffcb00;
}
接下来我们设计content class:
.content{
??? right: 40px;
??? left: 280px;
??? top: 0px;
??? position: absolute;
??? padding-bottom: 30px;
}
.content h2{
??? font-size: 110px;
??? padding: 10px 0px 20px 0px;
??? margin-top: 52px;
??? color: #fff;
??? color: rgba(255,255,255,0.9);
??? text-shadow: 0px 1px 1px rgba(0,0,0,0.3);
}
.content p{
??? font-size: 18px;
??? padding: 10px;
??? line-height: 24px;
??? color: #fff;
??? display: inline-block;
??? background: bla