CSS3如何给伪元素before添加hover?

html-css0322

CSS3如何给伪元素before添加hover?,第1张

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>