伪类经常与伪元素混淆,伪元素的效果类似于通过添加一个实际的元素才能达到,而伪类的效果类似于通过添加一个实际的类来达到。实际上css3为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。伪类与伪元素的本质区别就是是否抽象创造了新元素,具体的伪类和伪元素相关知识本文就不深入,下面介绍一下从青铜到王者10个css3伪类使用技巧和运用。
青铜1,伪类实现盒子阴影
众所周知,动画/过渡不必可以使用 来实现盒子阴影效果,但重画消耗较多,于是这里提出
* *通过改变透明度,这样从一个非默认值更新它的值,就不需要承担任何重绘
这里设置一个空的伪元素设置阴影透明度为0隐藏,再通过鼠标悬停恢复它的透明度、下面是传统和伪类实现的代码对比
<前> & lt; div 类=癰efore"祝辞 ,,,& lt; h2> Before ,,,& lt; p>动画/transition box-shadow 可以使用不必属性来实现盒子阴影效果,但重绘消耗较多& lt;/p> & lt;/div> ,& lt; hr /比; & lt; div 类=癮fter"祝辞 ,,,& lt; h2>肝移植后迟发性肝;/h2> ,,,& lt; p>通过修改伪元素的透明度来实现同样的效果,没有重绘消耗& lt;/p> & lt;/div> >之前 <前> .before { ,,,填充:,1 em; background - color,,,,, # fff; ,,,-webkit-transition:, 0.2年代; ,,,的转变:,0.2年代; } .before: hover { ,,,不必:,0,0,10 px 0, rgba (0, 0, 0, 0.3); } .after { ,,,位置:,相对; ,,,填充:,1 em; background - color,,,,, # fff; } 后:before { 内容,,,:,“,“; ,,,位置:,绝对的,,, ,,,:,0; ,,,右:,0; ,,,底部:,0;,, ,,,左:,0; ,,,z - index:, 1; ,,,不必:,0,0,10 px 0, rgba (0, 0, 0, 0.3); ,,,不透明度:,0; ,,,将会改变:,不透明; ,,,-webkit-transition:, 0.2年代; ,,,的转变:,0.2年代; } 后:徘徊:before { ,,,不透明度:,1; } >之前青铜2,伪元素:在实现的面包屑导航栏
<前> & lt; ul 类=癰readcrumb"祝辞 ,,,& lt; li> & lt; a https://www.yisu.com/zixun/href=" # "> > 李> <李> >照片 李> <李> 夏季15 > 李> <李> 李>意大利 >之前 <前> ul.breadcrumb { ,,,填充:,8 px 16 px; ,,,list-style:,没有; background - color,,,,, # eee; } ul.breadcrumb li  { ,,,显示:,内联; } ul.breadcrumb 李+李:before { ,,,填充:,8 px; ,,,颜色:,黑色; ,,,内容:,“/\ 00 a0"; } ul.breadcrumb li  a { ,,,颜色:,绿色; } >之前
青铜3,伪元素实现悬停时按钮填充和边界浮动动画
青铜4,伪类后实现的三角箭头
实现原理:三边设置边框,箭头指向的那个方向的边境不用设置,位于箭头两边的边框颜色为透明(透明),对边为主体边框颜色(较大的)/主体背景颜色(较小的),因为我们要有边框颜色的三角箭头,当第一个箭头(较大的)被第二个箭头(较小的)通过准确覆盖之后剩下没被覆盖的边缘就是合成三角箭头的边框了,其颜色就是较大的那个三角箭头的颜色,可调。而较小的那个三角箭头的颜色要设置成主体颜色,进行负值定位偏移时要把主体边框盖住,从而与主体合在一起了
<前> & lt; div 类=& # 39;容器# 39;比; ,,,& lt; img alt=& # 39; & # 39; https://www.yisu.com/zixun/, src=" http://placehold.it/400x200 ">