CSS3给伪元素before添加hover操作:
1、伪元素的由两个冒号“::”开头,然后是伪元素的名称 ,使用两个冒号是为了区别伪类和伪元素。当然,考虑到兼容性,CSS2中已存的伪元素仍然可以使用一个冒号的语法,但是CSS3中新增的伪元素必须使用两个冒号;
2、一个选择器只能使用一个伪元素,并且伪元素必须处于选择器语句的最后,如果我们利用伪元素来进行动画设置,需要给父元素添加样式(position:relative);给:after或者:before添加(position:absolute);
3、某些内容时,只用在css样式表中利用:after与:before来输入内容样式,但更多的,可以结合伪类:hover 来设置动画样式。
这里要注意的是,这几个伪类如果同时出现在一个元素的操作上,顺序不能改变,否则很大程度上会产生紊乱,效果不生效。
经测试,采用Firefox 45.0.1存在闪烁问题,并发现以下浏览器的某个版本:微信内置浏览器、QQ浏览器、Safari手机浏览器及早期的Chrome可能存在类似情况,包括载入闪动,悬停后闪动。分析:Blink对transition中,属性transform的动画渲染存在差异,而Chrome中的最新版本,已经不存在此情况。解决方法:<style>.outter { height: 375px margin: 10px auto width: 500px }.inner{}img:hover { width:110% margin-left:-5% margin-top:-5%}img{width:100% transition:0.4s ease-in-out}</style>复制代码以上CSS,在IE10、IE11、Chrome及Firefox 45.0.1中调试通过:首次载入,及Ctrl+F5刷新,均不会有闪动情况下面两种效果 ,一种是鼠标移走后回原位,一种是鼠标移上去的时候文字像右边滑动30px 滑动完了之后再滑到原位<div class="demo1">我是黎明</div>
<div class="demo2">我是黎明</div>
<style>
.demo1{transition: 1s}
.demo1:hover{margin-left:30px}
.demo2:hover
{
animation: myfirst 1s
-moz-animation: myfirst 1s/* Firefox */
-webkit-animation: myfirst 1s /* Safari 和 Chrome */
-o-animation: myfirst 1s/* Opera */
}
@keyframes myfirst{
0% {margin-left: 0px}
50% {margin-left: 30px}
100% {margin-left: 0px}
}
@-moz-keyframes myfirst /* Firefox */
{
0% {margin-left: 0px}
50% {margin-left: 30px}
100% {margin-left: 0px}
}
@-webkit-keyframes myfirst /* Safari 和 Chrome */
{
0% {margin-left: 0px}
50% {margin-left: 30px}
100% {margin-left: 0px}
}
@-o-keyframes myfirst /* Opera */
{
0% {margin-left: 0px}
50% {margin-left: 30px}
100% {margin-left: 0px}
}
</style>