是否可以在标签上使用淡入淡出过渡';内容';只使用css?
请查看以下代码:是否可以在标签上使用淡入淡出过渡';内容';只使用css?,css,css-transitions,fade,Css,Css Transitions,Fade,请查看以下代码: 我在标签'li'上有一个图像,在'li:hover'上有另一个图像,是否可以仅使用css进行淡入淡出过渡?您可以使用两个伪元素:在之前/之后,并使用CSS3过渡来设置悬停时两个图像的不透明度动画。这将在两个图像之间创建淡入淡出过渡 CSS: 编辑: 更好的是,您可以将两个图像一个放置在另一个图像的顶部,并使用z索引和css过渡设置一个图像的不透明度动画: 我认为@web tiki的答案适合您的需要,而且更简单。但为了展示另一种可能的解决方案: 您可以将图标分为两个元素,每
我在标签'li'上有一个图像,在'li:hover'上有另一个图像,是否可以仅使用css进行淡入淡出过渡?您可以使用两个伪元素
:在之前/之后,并使用CSS3过渡来设置悬停时两个图像的不透明度动画。这将在两个图像之间创建淡入淡出过渡
CSS:
编辑:
更好的是,您可以将两个图像一个放置在另一个图像的顶部,并使用z索引和css过渡设置一个图像的不透明度动画:
我认为@web tiki的答案适合您的需要,而且更简单。但为了展示另一种可能的解决方案:
您可以将图标分为两个元素,每个元素都有自己的内容。然后,在li:hover
事件上应用转换,设置元素的不透明度反转。像这个例子:
小提琴:
特别是你的情况
不知道你为什么要把图像放到内容里,
您只需将该图像作为背景图像添加到:before
,即可,
设置其大小&显示:内联块
并且您只需像这样设置背景图像的动画,因为支持背景图像转换)
TL;DR:CSS属性是否可以设置动画?不
MDN:
过时的w3.org官方文件:
然而,这一点在未来可能会发生变化,因为目前的官方资料中缺少该列表:
工作草案中缺少
编辑稿中缺少
因此,理论上,这个列表可能会在未来的浏览器版本中更新和更改,但目前它不起作用
内容是否受其他动画影响?对
内容本身不可设置动画并不意味着它不受其他动画(如不透明度、可见性等)的影响。它至少可以通过两种简单的方式加以利用:
a) 提供平滑且始终可见的淡入淡出效果,但是,您必须在淡入淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡出淡
b) 如果fadeOut=>fadeIn是您的一个选项,那么您可以使用CSS动画&@关键帧
@关键帧更改内容{
0% {
不透明度:1;
}
50% {
不透明度:0;
}
100% {
不透明度:1;
内容:“看到了吗?我已经毫无变化了!”;
}
}
部门:以前{
内容:“悬停在我上方!”;
背景:绿色;
过渡:所有1s线性;
动画方向:反向;
}
div:悬停:之前{
动画填充模式:正向;
动画:改变内容;
背景:橙色;
}
非常好的解决方案!但是如果我有两行这样的话:?第一个图像消失或出现在错误的位置。。。你有什么建议吗?行动。。。仅添加top:0,感谢您的解决方案!您不能使用动画
,但可以使用过渡
,使用不透明度
或其他任何方法来实现所需效果。
<div id="menu">
<ul>
<li><a href="#">Link #1</a></li>
<li><a href="#">Link #2</a></li>
<li><a href="#">Link #3</a></li>
<li><a href="#">Link #4</a></li>
</ul>
</div>
*{
margin: 0;
padding: 0;
text-decoration: none;
font-family: arial;
font-size: 16px;
}
a{
color: #000000;
}
a:hover{
color: #860000;
}
#menu{
margin: 15px auto;
padding: 20px;
width: 300px;
background: #DDDDDD;
border-radius: 5px;
box-shadow: 0 0 5px #000000;
}
#menu ul{
list-style: none;
}
#menu li:before{
margin-right: 10px;
content: url("http://st.deviantart.net/emoticons/s/smile.gif");
transition: all 0.5s ease 0s;
/* transition: content 0.5s ease 0s; */
}
#menu li:hover:before{
content: url("http://st.deviantart.net/emoticons/r/razz.gif");
}
*{
margin: 0;
padding: 0;
text-decoration: none;
font-family: arial;
font-size: 16px;
}
a{
color: #000000;
}
a:hover{
color: #860000;
}
#menu{
margin: 15px auto;
padding: 20px;
width: 300px;
background: #DDDDDD;
border-radius: 5px;
box-shadow: 0 0 5px #000000;
}
#menu ul{
list-style: none;
}
#menu ul li{
position:relative;
}
#menu li:before{
margin-right: 10px;
content: url("http://st.deviantart.net/emoticons/s/smile.gif");
transition: opacity 0.5s ease;
-webkit-transition: opacity 0.5s ease;
}
#menu li:after{
content: url("http://st.deviantart.net/emoticons/r/razz.gif");
position:absolute;
left:0;
opacity:0;
transition: opacity 0.5s ease;
-webkit-transition: opacity 0.5s ease;
}
#menu li:hover:after{
opacity:1;
}
#menu li:hover:before{
opacity:0;
}
<ul>
<li>
<div class="img1"></div>
<div class="img2"></div>
test
</li>
</ul>
li {
position: relative;
padding-left: 30px;
}
li .img1, li .img2 {
position: absolute;
top: 0;
left: 0;
}
li .img1 {
opacity: 1;
transition: all .25s ease-in-out;
}
li .img2 {
opacity: 0;
transition: all .25s ease-in-out;
}
li .img1:before {
content: url("http://st.deviantart.net/emoticons/s/smile.gif");;
}
li .img2:before {
content: url("http://st.deviantart.net/emoticons/r/razz.gif");
}
li:hover .img1 {
opacity: 0;
}
li:hover .img2 {
opacity: 1;
}