【问题标题】:CSS Change color of ":after" element on hoverCSS在悬停时更改“:after”元素的颜色
【发布时间】:2016-10-02 02:31:52
【问题描述】:

假设我有一个元素列表:

<ol>
    <li>First</li>
    <li>Second</li>
    <li>Third</li>
</ol>

当我悬停一个列表项时,我需要能够获得有关每个主题的更多信息。我用 CSS :after 伪元素做到了这一点。

ol {
    list-style-type: decimal-leading-zero;
}

li:hover:after {
    content: " + More info";
}

Here is a jSfiddle

现在,当我将鼠标悬停在 More info 文本上时,我想更改它的颜色。我真的不明白如何实现这种效果。 我尝试了以下 css 规则,但它没有按预期工作。

li:after:hover {
    color: red;
}

li:hover:after:hover {
    color: red;
}

可以用 CSS 做吗?

如果是,另一个问题很有趣,我可以将onclick 事件附加到:after 元素吗?

【问题讨论】:

  • 你无法使用 CSS 和 :after 伪标签来实现这一点,也不支持 'onclick' 事件

标签: html css


【解决方案1】:

效果很好

.topButton:hover:after{
    background-color: #000;
}

【讨论】:

  • 完美运行!!这应该是公认的答案。
  • 最佳解决方案!!
  • @NevinMadhukarK,嗯...为什么这样更好?这个答案没有解决问题。 OW 需要在 :after 悬停时设置 :after 样式
  • 这将在 .topButton 的任何部分悬停时设置伪元素的样式,因此它不是完美的,也不是可接受的答案。
  • 这不会按要求设置颜色,只会设置 bgColor。
【解决方案2】:

根据 ExtPro 的评论,你不能

但你可以这样做......

HTML:

<ol>
    <li>First<span> + More info</span></li>
    <li>Second<span> + More info</span></li>
    <li>Third<span> + More info</span></li>
</ol>

CSS:

li > span {
    display:none;
}

li:hover > span {
    display:inline;
}

li > span:hover {
    color:red;
}

使用 :active 作为 onClick ?

li > span:active {
    color:blue;
}

演示: http://jsfiddle.net/79Lvn/2/


还是JS/jQuery方式?只是……

$('ol > li').append('<span> + More info</span>');

演示: http://jsfiddle.net/79Lvn/4/

【讨论】:

  • 谢谢你的回答,我知道我可以那样做,但我只是好奇我是否可以用纯 CSS 的方式来做。
【解决方案3】:

你去吧,伙计,做了一些“摆弄”,让它与 CSS 一起使用

.third:hover .sub{
      display:inline;   
}

http://jsfiddle.net/79Lvn/3/

【讨论】:

  • 对不起,我不明白你的意思?当我花时间弄清楚这段代码时,强烈的反对票
猜你喜欢
  • 2015-10-19
  • 1970-01-01
  • 2015-10-08
  • 2018-01-17
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
相关资源
最近更新 更多