我需要“如果我的班级被禁用,请勿这样做” CSS 选择器的种类

发布于 2024-11-30 15:47:49 字数 1076 浏览 0 评论 0原文

我目前有以下 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 做到这一点?我只是希望如果链接具有“禁用”状态,则悬停不会更改背景颜色。

I currently have the following CSS:

a.enabled:hover { background-color: #f9f9f9; border: 1px solid #ddd; }

Code:

<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>

When I hover over an "enabled" link then the background color changes. When I hover over a "disabled" link then nothing happens.

I would like cut down on the size of my page by removing all the class="enabled" text that appears on so many lines (more than 200). Something like this.

After:

<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>

Is there a way I can do this with CSS? I just want the hover not to change the background-color if the link has a "disabled" status.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

隐诗 2024-12-07 15:47:49

您将使用的选择器是

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解决方案。

The selector you will use is

a:not(.disabled):hover { background-color: #f9f9f9; border: 1px solid #ddd; }

The trade-off is browser compatibility - IE < 9 does not support :not(). As a workaround you can use an override rule with these two rules instead, if you can define a default background color:

a, a.disabled:hover { /* Default background and border */ }
a:hover { background-color: #f9f9f9; border: 1px solid #ddd; }

... or just stick to your existing .enabled and .disabled solution.

划一舟意中人 2024-12-07 15:47:49

默认颜色相同

a, a.disabled:hover { background-color: red; }
a:hover { background-color: green; }

为 a.disalbe:hover 添加一条 css 规则,其颜色与JsBin 中的演示

Add a css rule for a.disalbe:hover that has the same colour as the default that you have for a

a, a.disabled:hover { background-color: red; }
a:hover { background-color: green; }

demo in JsBin

梦里兽 2024-12-07 15:47:49

尝试使用 css :not 选择器。

div a:not(.disabled):hover

Try using the css :not selector.

div a:not(.disabled):hover
2024-12-07 15:47:49

您是否可以将样式应用于所有 div a,然后在应用 .disabled 类时撤消它?

像这样的东西

a.disabled:hover { background-color: transparent; border: 1px solid transparent; }

could you just apply a style to all div a and then undo it when the .disabled class is applied?

Something like

a.disabled:hover { background-color: transparent; border: 1px solid transparent; }
呆橘 2024-12-07 15:47:49
 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 中使用启用的类

 a.disabled:hover { background-color: red; border: 1px solid #ddd; }

Did you tried this? Or something like this:

a:hover { /* disabled-definitions */ }
a.enabled:hover { background-color: #f9f9f9; border: 1px solid #ddd; }

...and then you only use the enabled class in your HTML

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文