这篇文章将为大家详细讲解有关HTML5 + CSS3怎么实现灵动的动画选项卡切换效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
设计师给了一个选项卡切换的效果图。虽然是一个很小的功能,但是前端工程师在实现的时候还是有很多细节需要注意。我写了一个演示给大家参考。
最终实现效果如下:
为了gif动画能够展示细节,我将动画时间延长到3秒了
代码分享地址:http://runjs.cn/detail/h3dqt3td
<强>实现思路强>
间隔竖线,因为不是顶天立地的,所以不能用边框。我准备用伪元素实现。
只有3个竖线,但是有4个,这个简单,可以用:没有(第一个孩子)选择器来选择。
切换的背景颜色变化,因为想要有从小到大的效果,因此,也不能直接使用背景颜色实现,我也准备用伪元素实现。
如果用伪元素的大小来控制,计算会比较复杂,因此,我想用不必阴影来实现。
好,大体就是如此了,下面开始写代码,如下:
<强> HTML代码强>
,, & lt; div 类=癿"比; ,,,& lt; ul 类=皌ab"比; ,,,,,& lt; li> & lt; https://www.yisu.com/zixun/a href=" ">导航1 > 李> <李> 导航2 > 李> <李> 导航3 > 李> <李> 导航4 > 李>
上面的代码结构是之前已经写好的,我看可以,就不做任何调整了。没有什么累赘的代码。
<强> CSS代码强>
.m {,保证金:100 px;,} .tab {,宽度:400 px;,保证金:,0,汽车;,边界:,1 px solid # ddd;,高度:,40 px;, text-align:,中心;,行高:,40 px;,背景:,# fff;, border - radius:, 10 px;,溢出:,隐藏,,} .tab li {,浮动:左;,宽度:,100 px;,位置:,相对;,溢出:,隐藏,,} .tab 李:以前,.tab 李:之后,,.tab li a {, -webkit-transition: all 0.25 s ease-in-out;,转型:,all 0.25 s ease-in-out;,} .tab 李:以前,.tab 李:after {,内容:““,,显示:,块,,} .tab 李:没有(:第一个孩子):after {,背景:# ddd;,高度:,20 px;,宽度:,1 px;,左:,0;,:,10 px;,位置:,绝对的,,} .tab li  a {,显示:块;,位置:,相对,,z - index,, 2,,颜色:,# 000;,字体大小:,14 px;,} .tab 李:before {,宽度:0;,高度:,0;,:,50%;,左:,50%;,z - index:, 1;,位置:,绝对的,,} .tab 李:hover a {,颜色:# fff;,} .tab 李:徘徊:before {,不必:0,0,0,100 px # 36 bc99;,} .tab 李:hover +,李:之后,,.tab 李:徘徊:after {,高度:0;,:,20 px;,}
<强>代码分析:强>
动画实现非常简单,只要使用过渡属性即可。
控制自己的伪元素和下一个同级元素的伪元素,只需要使用+选择器即可。
其他代码都比较清晰简单,自己分析即可。
实现这个效果还是非常简单的,重点是平时的积累,以及各种参数的灵活搭配。想到实现方法,最终写代码是很快的事情。而且没有什么知识高点在里面。
CSS之所以难,不是你不会,而是不不会去搭配。
,
其实,还是只还原了99%的设计效果,两条线一个在背景里面,一个在背景外面,想要把两条分割线都放到背景里面来,应该如何实现呢?可以思考一下。
安利一下scss。上面的CSS是编译出来的。其实用scss实现非常方便快捷,代码可读性也更高。
演示如下:
.m { ,,保证金:100 px; } .tab { ,,宽度:400 px;保证金:,0,汽车;边界:,1 px solid cdd美元;高度:,40 px; text-align:,中心;行高:,40像素; 背景:才能,cff美元;border - radius:, 10 px;溢出:,隐藏; li {才能 ,,,:浮动,左,宽度:,100 px;位置:,相对;溢出:,隐藏; ,,,,,,:之后,a {@include dz ();} ,,,,,,:after { ,,,,,内容:,““显示:,块; ,,,} ,,,,:没有(第一个孩子),{ ,,,,,,:after { ,,,,,,,背景:,cdd美元;高度:,20 px;宽度:,1 px;左:,0;:,10 px;位置:,绝对; ,,,,,} ,,,} ,,,a { ,,,,,显示:,块;位置:,相对;z - index:, 2,颜色:,c00美元;字体大小:,14 px; ,,,} ,,,,:before { ,,,,,宽度:,0;高度:,0;:,50%;左:,50%;z - index:, 1;位置:,绝对; ,,,} ,,,,:hover { ,,,,,a {颜色:,cff美元;} ,,,,,,:before { ,,,,,,,不必:,0,0,0,100 px $青色; ,,,,,} ,,,,,,,+,李:之后,,:after { ,,,,,,,身高:,0;:,20 px; null null null nullHTML5和CSS3怎么实现灵动的动画选项卡切换效果