强制删除从远程 css 库继承的元素的悬停 css 效果

Posted

技术标签:

【中文标题】强制删除从远程 css 库继承的元素的悬停 css 效果【英文标题】:Forcefully remove hover css effect of element inherited from remote css library 【发布时间】:2017-06-15 23:47:39 【问题描述】:

我正在使用语义 UI 库,我的 <tr> 表格元素通过表格上的 "selectable" 类对它们产生悬停效果。

但我想在特定行上禁用此悬停(当它们进入编辑模式时),而不必编辑 css 文件(因为我的范围只有 html/javascript,我只是想修复一个旧问题)

我尝试使用 pointer-events:none;,但在我的情况下,<tr> 内还有其他按钮,它们被禁用了

行上的Javascript事件:

$('body').on('click', '#edit_card table tbody tr .link.icon.edit', function()
    var row = $(this).closest('tr');
    switch_row_to_editing_mode(row);
  )

来自元素检查器的 CSS 样式:

【问题讨论】:

minimal reproducible example”代码在哪里?您想要样式化哪些行,而不是样式化?您尝试启用什么 CSS,它在哪里失败? 如何失败了? @DavidThomas 好吧,我只是认为没有必要用 Jquery/Javascript 标记这个问题并提供不必要的上下文 不必要的上下文,例如应用于您要设置样式的元素的 HTML 和 CSS? 【参考方案1】:

解决方案取决于您如何区分要禁用 css 的行。两个选项是向 html 中的 <tr> 添加一个特殊类或使用 JavaScript。

选项 1

在 tr 中添加一个特殊的类并制作你自己的 css。

css:

.row_with_exception 
    // custom css

html:

<tr class='row_with_exception'></tr>
<tr class=''></tr>
<tr class='row_with_exception'></tr>
<tr class=''></tr>

选项 2

使用 Javascript 更新行的样式。

首先获取要从中删除悬停的行。

elements = [...] // array of jquery elements

然后使用 JQuery 为每个元素添加自定义 css。

elements.map(function (el) 
   el.css(...)

【讨论】:

那么,要覆盖外部 css,我是否将其留空?你把“自定义css”放在哪里 不,你会把你想要的css放在项目上,我不确定你想要什么改变,但你可以做.row_with_exception:hover color: red 【参考方案2】:

如果不编辑 CSS 文件,您将不得不使用内联 CSS(不推荐),但语法如下:

<tr style="background: white !important">

...这将阻止颜色在悬停时改变

【讨论】:

你 - 几乎可以肯定 - 不需要将 !important 添加到内联样式中(而且在我见过的几乎所有情况下,!important 往往反映了一些混乱和可怕的背后场景)。 我认为它可能需要胜过 CSS 文件中的 :hover 样式。我不推荐内联 CSS 或使用 !important (一般而言),而只是想解决 OP 的问题,我认为这会。尽管“双重”不优雅:)【参考方案3】:

如果您想避免更改 css 会搞砸您做得好的工作,那么请尝试添加一个新类并将其应用于您要禁用的特定行

你见过CSS disable hover effect吗?

【讨论】:

以上是关于强制删除从远程 css 库继承的元素的悬停 css 效果的主要内容,如果未能解决你的问题,请参考以下文章

css3 动画:悬停;强制整个动画

从元素中删除/重置继承的 css

从元素中删除 ':hover' CSS 行为

CSS动画:悬停和悬停

CSS悬停影响其他元素 - 选择器问题

css里怎么去掉从父级元素继承下来的 css 样式吗