如何在 CSS 中使用“悬停”

Posted

技术标签:

【中文标题】如何在 CSS 中使用“悬停”【英文标题】:How to use 'hover' in CSS 【发布时间】:2010-10-28 15:34:36 【问题描述】:

我使用下面的代码来实现这个目标:

当鼠标悬停在锚点上时,下划线出现,

但它失败了,

    <a class="hover">click</a>

    a .hover :hover
        text-decoration:underline;
    

执行此操作的正确版本是什么?

【问题讨论】:

【参考方案1】:

如果您希望鼠标悬停在链接上时出现下划线,则:

a:hover text-decoration: underline; 

就足够了,但是如果您愿意,您也可以使用类名“悬停”,以下内容同样适用:

a.hover:hover text-decoration: underline; 

顺便提一下,'hover' 的类名并没有真正为元素添加任何内容,因为a:hover 的伪元素与a.hover:hover 的伪元素做同样的事情。除非它只是一个使用类名的演示。

【讨论】:

谢谢 ricebowl,但是有没有什么方法可以让它对没有 href 属性的锚起作用? 在 IE 中我的意思是,它在 firefox 中有效,但在 IE 中对于没有 href 属性的锚点无效。 恐怕不行,IE(肯定是IE6,也许是IE7——我不记得了)限制了它对:hover的使用,所以只有标签可以使用它。 IE8 可能对此有所改进,但我不完全确定。 IE7+ 支持任意元素上的 :hover 伪类。【参考方案2】:

有很多方法可以做到这一点。 如果你真的想在你的 A 元素中有一个“悬停”类,那么你必须这样做:

a.hover:hover  code here 

再一次,在那里有这样一个类名是不常见的,这就是你进行常规悬停的方式:

select:hover  code here 

这里还有几个例子:

1

html

<a class="button" href="#" title="">Click me</a>

CSS:

.button:hover  code here 

2

HTML:

<h1>Welcome</h1>

CSS:

h1:hover  code here 

:hover 是众多伪类之一。

例如,您可以更改,当鼠标悬停在元素上时,您可以控制元素的样式,当它被点击时,以及当它之前被点击时。

HTML:

<a class="home" href="#" title="Go back">Go home!</a>

CSS:

.home  color: red; 
.home:hover  color: green; 
.home:active  color: blue; 
.home:visited  color: black; 

除了我作为示例给出的尴尬颜色之外,带有“home”类的链接默认为红色,鼠标悬停时为绿色,单击时为蓝色,单击后为黑色。

希望对你有帮助

【讨论】:

【参考方案3】:

不是答案,而是解释为什么您的 css 与 HTML 不匹配。

在 css 中,空间用作分隔符,告诉浏览器查看子项,所以你的 css

a .hover :hover
   text-decoration:underline;

表示“查找一个元素,然后查找它的任何具有悬停类的后代,并查找具有悬停状态的那些后代的任何后代”并且将匹配此标记

<a>
   <span class="hover">
      <span>
         I will become underlined when you hover on me
      <span/>
   </span>
</a> 

如果你想匹配a class="hover">I will become underlined when you hover on me</a>,你应该使用a.hover:hover,意思是“寻找任何具有类悬停和悬停状态的元素”

【讨论】:

【参考方案4】:

a.hover:悬停

【讨论】:

【参考方案5】:
a.hover:hover 
    text-decoration:underline;

【讨论】:

【参考方案6】:

您需要连接选择器和伪选择器。您还需要一个样式元素来包含您的样式。大多数人使用外部样式表有很多好处(缓存一个)。

<a class="hover">click</a>

<style type="text/css">

    a.hover:hover 
        text-decoration: underline;

    

</style>

请注意:hover 类不是必需的,除非您仅定义某些链接以具有此行为(可能是这种情况)

【讨论】:

但它在 IE8 中不起作用,也许我使用了一个带有“-”的类名?说 a.hover-link:hover ? 连字符 (-) 在 CSS 中的类名中很好。要使上面的选择器起作用,您的元素必须看起来像 click 然后将鼠标悬停在该链接上。 谢谢 alex,但是有没有什么方法可以使它适用于没有 href 属性的锚点? 它应该适用于没有 href 属性的锚点。我可以问你为什么省略它吗? 因为如果加了href,即使光标不在,下划线也会出来,我还不知道原因..【参考方案7】:

href 是锚元素的必需属性,因此如果没有它,您就不能期望所有浏览器都能平等地处理它。无论如何,我在评论中的某处读到,您只希望在悬停时给链接加下划线,而不是在其他地方加下划线。您可以使用以下方法来实现此目的,它仅适用于具有 hover 类的链接:

<a class="hover" href="">click</a>

a.hover 
    text-decoration: none;


a.hover:hover 
    text-decoration:underline;

【讨论】:

【参考方案8】:

你应该使用过:

a:hover 
    text-decoration: underline;

hover 是 CSS 中的伪类。无需分配课程。

【讨论】:

可能他只希望 将他的悬停类放在上面以具有此行为。 是的,我错过了。谢谢,混乱。【参考方案9】:

我上次正在处理一个不错的缺陷,想知道更多关于如何正确使用 A 标签链接和 IE 浏览器的悬停属性。 对我来说奇怪的是,IE 无法基于简单的 A 选择器捕获 A 标签链接元素。 因此,我发现了如何强制捕获 A 标签元素,并且发现我们必须使用更具体的 CSS 选择器。下面是一个示例 - 效果很好:

li a[href]:hover ...

【讨论】:

以上是关于如何在 CSS 中使用“悬停”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 html-tag 中使用 CSS 悬停? [复制]

悬停时如何使用 CSS 将角度字符添加到此按钮的文本中?

如何在悬停中使用velocity.js?

如何在悬停中使用velocity.js?

如何使图像悬停在css中?

如何使用 CSS 在悬停时设置特定元素的样式?