这是一款效果非常炫酷的纯css3 tabs选项卡动画特效插件。自从css3被更多的浏览器所支持,以前许多用javascript才能完成的特效都被css3所替代。这款插件就是使用纯css制作出效果极酷的tabs选项特效。
HTML结构
<ul class="tabs"> <li> <input type="radio" checked name="tabs" id="tab1"> <label for="tab1">tab 1</label> <div id="tab-content1" class="tab-content animated fadeIn"> ... </div> </li> <li> <input type="radio" name="tabs" id="tab2"> <label for="tab2">tab 2</label> <div id="tab-content2" class="tab-content animated fadeIn"> ... </div> </li> <li> <input type="radio" name="tabs" id="tab3"> <label for="tab3">tab 3</label> <div id="tab-content3" class="tab-content animated fadeIn"> ... </div> </li> </ul>
CSS样式
body, html { height: 100%; margin: 0; -webkit-font-smoothing: antialiased; font-weight: 100; background: #aadfeb; text-align: center; font-family: helvetica; } .tabs input[type=radio] { position: absolute; top: -9999px; left: -9999px; } .tabs { width: 650px; float: none; list-style: none; position: relative; padding: 0; margin: 75px auto; } .tabs li{ float: left; } .tabs label { display: block; padding: 10px 20px; border-radius: 2px 2px 0 0; color: #08C; font-size: 24px; font-weight: normal; font-family: 'Lily Script One', helveti; background: rgba(255,255,255,0.2); cursor: pointer; position: relative; top: 3px; -webkit-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } .tabs label:hover { background: rgba(255,255,255,0.5); top: 0; } [id^=tab]:checked + label { background: #08C; color: white; top: 0; } [id^=tab]:checked ~ [id^=tab-content] { display: block; } .tab-content{ z-index: 2; display: none; text-align: left; width: 100%; font-size: 20px; line-height: 140%; padding-top: 10px; background: #08C; padding: 15px; color: white; position: absolute; top: 53px; left: 0; box-sizing: border-box; -webkit-animation-duration: 0.5s; -o-animation-duration: 0.5s; -moz-animation-duration: 0.5s; animation-duration: 0.5s; }
首先,为了实现javascript的功能,我们需要让CSS知道以后什么时候点击了按钮。如果是使用javascript,我们可以简单的在按钮上添加一个"click" 的class用以操控按钮。在不适用javascript的情况下,我们使用了一个小技巧,隐藏radio按钮,radio按钮通过rel属性链接到label上。当你点击了label的时候,实际上是点击了radio按钮。通过lable来触发radio按钮的“checked”属性,我们可以通过:checked来控制它们。
通过上面的html结构,你可以看到我们将radio按钮、label和选项卡内容放在DOM的同一层上。这样做的原因,是为了方便使用“~”兄弟选择器来触发同一级别上的元素。
在demo中,我们在tabs选项卡内容切换时添加了Dan Eden的CSS animation library 来添加各种动画效果。