我目前有以下CSS:
a.enabled:hover { background-color: #f9f9f9; border: 1px solid #ddd; }
代码:
<div><a class="enabled" ......>07</a></div>
<div><a class="enabled" ....... >08</a></div>
<div><a class="disabled" >09</a></div>
<div><a class="enabled" ...... >10</a></div>
<div><a class="enabled" .......>11</a></div>
当我把鼠标悬停在一个"已启用"的链接上时,背景颜色就会改变。当我将鼠标悬停在"禁用"链接上时,什么也不会发生。
我想通过删除出现在这么多行(超过200行(上的所有class="enabled"文本来缩小页面的大小。像这样的东西。
之后:
<div><a ........>07</a></div>
<div><a ....... >08</a></div>
<div><a class="disabled" >09</a></div>
<div><a ...... >10</a></div>
<div><a .......>11</a></div>
有没有一种方法可以用CSS做到这一点?我只是希望悬停不改变背景颜色,如果链接有一个"禁用"状态。
您将使用的选择器是
a:not(.disabled):hover { background-color: #f9f9f9; border: 1px solid #ddd; }
权衡是浏览器兼容性-IE<9不支持:not()
。作为一种变通方法,如果您可以定义默认背景颜色:,则可以将覆盖规则与这两个规则一起使用
a, a.disabled:hover { /* Default background and border */ }
a:hover { background-color: #f9f9f9; border: 1px solid #ddd; }
或者只使用现有的.enabled
和.disabled
解决方案。
为.disalbe:hover添加一个css规则,该规则与的默认颜色相同
a, a.disabled:hover { background-color: red; }
a:hover { background-color: green; }
JsBin 中的演示
尝试使用css :not
选择器。
div a:not(.disabled):hover
是否可以将样式应用于所有div a
,然后在应用.disabled
类时撤消它?
类似的东西
a.disabled:hover { background-color: transparent; border: 1px solid transparent; }
a.disabled:hover { background-color: red; border: 1px solid #ddd; }
你试过这个吗?或者类似的东西:
a:hover { /* disabled-definitions */ }
a.enabled:hover { background-color: #f9f9f9; border: 1px solid #ddd; }
然后您只在HTML 中使用已启用的类