【问题标题】:How do I use hover fading for "content" in CSS?如何在 CSS 中对“内容”使用悬停淡化?
【发布时间】:2014-06-04 00:50:27
【问题描述】:

我有一张图片,当你将鼠标悬停在它上面时,它会改变来源。它工作得非常好,只是它根本不会褪色。

另外,不要询问 div/image 调用者。我使用了“#left:hover #logoLeft {”,因为我希望当您将鼠标悬停在它所在的 div 上时图像会褪色。它有效,所以暂时忽略它并假装它说“logoleft:hover”或其他内容。

“左”id 对此并不重要,我不想发布它以使其更加混乱,因为它实际上与我想要实现的目标无关。

这是我目前的代码:

<div id="left">
    <img id="logoLeft"/>
</div>

CSS:

#logoLeft {
content:url("http://i.imgur.com/M8RPCkX.png");
height: 5em;
float: right;
margin-top: 2.5em;
transition: content 0.8s ease;
-moz-transition: content 0.8s ease;
-webkit-transition: content 0.8s ease;
}

#left:hover #logoLeft {
content:url("http://i.imgur.com/dlN4akx.png");
transition: content 0.8s ease;
-moz-transition: content 0.8s ease;
-webkit-transition: content 0.8s ease;
}

【问题讨论】:

  • 我很确定生成的内容(::before/::after 伪元素)无法动画化(即使使用 CSS);虽然我不记得我是从哪里了解到的(虽然我怀疑它在这个网站上,可能来自Boltclock 的回答或评论)。

标签: html css image hover fade


【解决方案1】:

您不能像那样转换内容。实现这一点的最佳方法是使用两张图片(您可以使用背景图片,但这不是语义)。

<img id="logoLeft" src="//i.imgur.com/M8RPCkX.png" />
<img src="//i.imgur.com/dlN4akx.png" />

CSS:

#logoLeft + img {
    position: absolute;
    top: 0;
    left: 0;
    opacity: 0;
    transition: opacity 1s;
}
#logoLeft:hover + img {
    opacity: 1;
}

加号表示“兄弟姐妹”,如果您想要更好的浏览器支持,可以将其替换为id

【讨论】:

  • 鉴于使用生成的内容,我认为 OP 可以不支持任何不实现相邻兄弟组合器的浏览器。
  • @David 很好。旧浏览器是邪恶的,使用它们的人也是如此:P
【解决方案2】:

我怀疑你甚至可以为content 转换。

我建议只是淡出background-image

【讨论】:

    猜你喜欢
    • 2015-11-17
    • 1970-01-01
    • 2011-07-07
    • 2013-04-04
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多