【问题标题】:Forcefully remove hover css effect of element inherited from remote css library强制删除从远程 css 库继承的元素的悬停 css 效果
【发布时间】: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?

标签: jquery html css semantic-ui


【解决方案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吗?

【讨论】:

    猜你喜欢
    • 2014-12-26
    • 2013-10-03
    • 2011-11-15
    • 1970-01-01
    • 2010-11-30
    • 2015-03-18
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多