html - 如何调试 CSS 特异性问题?

标签 html css debugging

我使用 Vue、第三方模板、动态插件和各种技巧开发了一个应用程序。我真的很难使用 CSS。

我经常需要为页面上的特定元素设置样式,一个 <input>例如,我无法弄清楚如何编写一个实际有效的选择器。输入可能是由某些 Javascript 动态创建的,并且可能已经以编程方式应用了 CSS。

所以我转到 Firefox Web Developer,单击该元素,然后看到一堆 CSS 类。我创建一个规则:

.myCustomClass {
  color: red;
}

将 myCustomClass 放入 <input> 的 class=""标签中,还有……什么都没有。

我想我需要像这样添加前缀:

.someOuterClass .someInnerClass .myCustomClass {
  color: red;
}

但这很少奏效。有时我放弃并添加 !important .有时这行得通,有时却行不通。

所以我的问题是,我能否检查我在 Web Developer 中看到的类,并以某种方式得出一个足够具体以使其始终有效的规则?

我读过关于特异性的内容,但这没有帮助。

最佳答案

特异性有时是一种 PITA,尤其是当其他第 3 方库正在向组合中添加内容时。

以下是您可以尝试的一些方法:

  • 确保将样式添加到 CSS 的 ENDTheoretically ,你可以影响 Webpack 包含 CSS 的顺序(我从来没有尝试过)

  • ID 而不是 class 添加到要更改的元素外部的包装器中。然后在 CSS 链中引用此 ID,例如:#myAppID .className .subClassName {} 基本上,ID 在 CSS 特异性方面比类强。我会尝试在页面/ View 级别执行此操作,以使生活更轻松。

  • 如果元素已经获得类(如您在检查器中看到的那样),请尝试通过“覆盖”CSS 重用这些类。如果类是模块化的(具有随机后缀,如 someClass__34xft5),则不应使用这些类,因为如果重新编译源代码,它们可能会发生变化。在这种情况下,使用“匹配”选择器 [class^=”someClass__”] 来匹配具有该前缀的任何选择器。

不确定你想去多深,但是 here's an article关于覆盖 Amplify-Vue 预构建样式。

请注意,如果 CSS 是通过 javascript 内联添加到某处,将很难覆盖它。您可能希望将 !important 与上述内容结合使用。

关于html - 如何调试 CSS 特异性问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54993176/

相关文章:

java - 主线程被挂起并且运行时异常

PHP 表单/发布错误

jquery - 如何在选定的选择框 jquery 插件上选择后删除蓝色边框

css - IE 无法正确显示 3 个 float 部分

css - 链接未显示在 div 中,但按钮显示

multithreading - 使用 PyCharm 进行多线程调试

visual-studio - 无法在完整的 .net 框架上调试 IIS 部署的 ASP.NET Core MVC

javascript - 通过单击列表更改段落

html - 打印网页时隐藏包含 Youtube 的 div

css - 无法使用 wp_enqueue_style 或其他方式更改版本