查找适用于某个元素的所有 CSS 规则

2024-01-10

许多工具/API 提供了选择特定类或ID 的元素的方法。还可以检查浏览器加载的原始样式表。

但是,为了让浏览器呈现元素,它们将编译所有 CSS 规则(可能来自不同的样式表文件)并将其应用到该元素。这就是您在 Firebug 或 WebKit Inspector 中看到的内容 - 元素的完整 CSS 继承树。

如何在纯 JavaScript 中重现此功能而不需要额外的浏览器插件?

也许一个例子可以为我正在寻找的内容提供一些澄清:

<style type="text/css">
    p { color :red; }
    #description { font-size: 20px; }
</style>

<p id="description">Lorem ipsum</p>

这里的 p#description 元素应用了两个 CSS 规则:红色和 20 像素的字体大小。

我想找到这些计算的 CSS 规则的来源(颜色来自 p 规则等)。


由于这个问题目前没有轻量级(非库)、跨浏览器兼容的答案,我将尝试提供一个:

function css(el) {
    var sheets = document.styleSheets, ret = [];
    el.matches = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector 
        || el.msMatchesSelector || el.oMatchesSelector;
    for (var i in sheets) {
        var rules = sheets[i].rules || sheets[i].cssRules;
        for (var r in rules) {
            if (el.matches(rules[r].selectorText)) {
                ret.push(rules[r].cssText);
            }
        }
    }
    return ret;
}

JSFiddle:http://jsfiddle.net/HP326/6/ http://jsfiddle.net/HP326/6/

Calling css(document.getElementById('elementId'))将返回一个数组,其中包含与传递的元素匹配的每个 CSS 规则的元素。 如果您想了解有关每条规则的更多具体信息,请查看CSSRule对象 https://developer.mozilla.org/en-US/docs/Web/API/CSSRule文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找适用于某个元素的所有 CSS 规则 的相关文章

  • Firebase HTTP Cloud Functions - 读取数据库一次

    我有 Firebase HTTPs 功能 该函数需要根据查询参数从 Firebase 数据库读取值 并根据该数据返回结果 Firebase JS SDK 表示要使用以下命令来执行此操作 return firebase database re
  • 使用 Mongoose 在 JSLint 中抑制“需要一个标识符,而是看到“默认”(保留字)”

    我在用着jshint验证我的 JavaScript 文件 在服务器端 我使用 Node js 和 Mongoose 在 Mongoose 中 我被鼓励以如下方式编写模式 var UserSchema new mongoose Schema
  • 如何阻止地址自动填充谷歌地点

    所以我在我的表单上有一个谷歌地图自动完成功能 当它到达一个位置时 它会占据该位置并格式化它 以便所有正确的信息都进入表单上的不同输入 我遇到的问题是在 place changed 事件触发自动完成填充输入之前 我想阻止最初的人口 而是填充我
  • 如何共享 Swagger 文档

    我最近开始使用 Swagger 来编写文档 但有一些事情我仍然不清楚 我创建了 YAML 文档 现在我希望能够与团队的其他成员共享 pdf 或 HTML Javascript 页面中的文档 我无法使用 SwaggerHub 因为它们没有私有
  • 外部 CSS 是否应用于 jsPDF 生成的 pdf

    我已经开始使用 jspdf 制作一些演示 我有一个 html 文件 我的 css 在外部文件中 我写了下面的代码来生成我的pdf pdfButton on click function var pdf new jsPDF p in lett
  • 如何在html中创建字体选择栏

    我想创建一个下拉菜单 在其中我们可以看到所有可用的字体 并且可以选择我们选择的任何字体 我还想创建一个字体颜色选择小部件 存在大量的字体样式 我想知道如何获取所有这些字体以及如何创建一个小部件 用户可以使用该小部件选择他选择的颜色 为了创建
  • flexslider 中的 GIF 滑块,如何仅在滑块上时开始 gif

    现在我有一个带有四个幻灯片的 Flexslider 第三个滑块是 gif 而不是像其他滑块一样是 jpg 我遇到的问题是 第三个 gif 滑块显然在到达页面时立即启动 而不是在您实际到达该滑块时启动 当点击前两个滑块时 gif 就快完成了
  • 在 Angular JS 中撤消重做

    我有一个大对象排列在 rootScope 中 比如说 gt 100 个对象 每个对象又具有对象 数组的层次结构 我想使用 deepWatching watch 整个 rootScope 即将 watch 的第三个参数设置为 TRUE 但这里
  • 从画布保存/转换后文件质量下降的问题

    这是我正在使用的代码 代码位于这篇文章的底部 但这里是链接GitHubGist Noitidart ff addon snippet browseForBadgeThenCreateSaveAnApply js https gist git
  • Javascript 函数,我如何开始理解它们?

    我完全理解 为了学习 javascript 我需要知道函数是如何工作的 我了解传递参数的基础知识 然后使用值调用函数以将某些内容添加到一起 等等 我读过无数关于函数的文章 例如以及书籍等 但我只是不明白它们是如何使用的以及何时应该使用它们等
  • 从变量值动态设置 ng-controller

    我正在使用 AngularJs 和 NodeJS 开发一个应用程序 我对将控制器的名称设置为主控制器中的变量的值感到震惊 为了更好地解释它 我的 index html 看起来像这样 tbody tr td td td member task
  • Jasmine 单元测试不等待承诺解析

    我有一个有角度的服务 它具有像这样的异步依赖项 function angular module app factory myService q asyncService function q asyncService var myData
  • Angular2,测试和解析数据:如何测试 ngOnInit?

    我正在通过Angular2 测试指南 https angular io docs ts latest guide testing html并希望编写一个测试ngOnInit 功能 那个来自编程指南的路由部分 https angular io
  • javascript 函数后面括号中的值

    我正在尝试重新利用我在 SO 的答案中找到的一些 Javascript 代码 但我想首先更好地理解它的语法 其大纲是 function root ns factory some code window detectZoom function
  • 将base64图像转换为Node Js中的文件

    我是 Node Js 新手 我需要包含用户的个人资料图片 我从 IOS 应用程序收到 Base64 图像的请求 我需要将其存储在 images 文件夹中并将图像路径保存在 mongodb 数据库中 我使用了以下代码 var bitmap n
  • 如何使用jquery点击眼睛图标时显示和隐藏密码

    我需要在单击眼睛图标时显示和隐藏用户密码 因此我为此编写了脚本 当我单击眼睛图标时 只有类正在更改 但密码不可见 再次单击斜线眼睛图标 它应该隐藏这两个图标方法不起作用如何解决这个问题
  • CSS 或 Javascript - 如果背景图像未加载,则显示后备文本[重复]

    这个问题在这里已经有答案了 如果徽标图形文件未加载或丢失 如何显示文本而不是徽标 我有带有背景 PNG 图像的 div div class iHaveBgImage this text should be displayed if bg i
  • 如何运行 Mike Bostock 的 D3 示例?

    我一直在尝试经营迈克博斯托克透视地球仪 http bl ocks org mbostock 6747043例如 但是如果您尝试在本地重现它 则对其 json 文件的引用是不正确的 问题来自于这行代码 d3 json mbostock raw
  • CSS精灵什么时候适合使用,什么时候不适合使用?

    CSS精灵在什么情况下适合使用 什么时候不适合使用 是节省时间还是仅节省服务器请求 我认为带宽使用将是相同的 因为图像与大图像相同 但它是在一个部分中 何时何地使用 css sprite 是节省时间 工作中 的选择 对于导航来说 它有利于翻
  • 通过均匀分布值来有效合并两个数组

    我见过许多问题 答案主题是通过交替值合并两个数组 他们是这样工作的 let array1 a b c d let array2 1 2 let outcome a 1 b 2 c d 但我希望输出更加高效 并且根据数组大小均匀分配值 exp

随机推荐

  • Pandas:在数据框中存储数据框

    我对 Pandas 相当陌生 目前在尝试在 Dataframe 中插入 Dataframe 时遇到了问题 我想做的事 我有多个模拟和相应的信号文件 我希望将它们全部放在一个大的 DataFrame 中 所以我想要一个 DataFrame 其
  • java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:1

    我正在学习Java 我不知道这里出了什么问题 为什么会发生这个错误 我没有看到任何错误 直到我在第二个 for 循环之前写下 count 0 行之前 这实际上是有效的 这就是错误 java lang StringIndexOutOfBoun
  • 在 SOLR 中动态创建新的核心目录

    我正在使用 solr 1 4 1 构建分布式搜索引擎 但我不想只使用一个索引文件 我想在我的 java 代码中动态创建新的核心 索引 目录 我发现下面的其余 API 可以使用以下方法创建新核心EXISTING核心目录 http wiki a
  • Java EE 组件之间的通知

    我有一个设计问题 我的应用程序有多个 Java EE 组件 简单来说 一个充当服务提供者 非 UI 其他充当消费者 UI webapp 消费者在启动期间从服务提供者获取配置数据 这基本上是从数据库读取数据 并将其存储在缓存中 缓存会在定期时
  • 如果子字符串重叠,如何计算Python中子字符串的数量?

    The count 函数返回子字符串在字符串中出现的次数 但在字符串重叠的情况下会失败 假设我的输入是 我想找出多少次 出现在字符串中 mystr input happy mystr count sad mystr count print
  • LDAP DN/RDN 长度限制

    有谁知道 win08r2 或 08 上 DN 或 RDN 的最大长度是多少 我从网上搜了一下 有人说 RDN length max tree search DN length lt is it true 因为我无法验证 ref http t
  • heroku .css 上的 Rails 3.1 部署不是预编译错误

    Update 我收到此错误是因为我有一个 public css 和 public js 文件 该文件未与其余 css 和 js 文件一起编译 解决方案是将这一行添加到 Production rb 文件中 Precompile additio
  • PayPal mc_gross 格式号码?

    我正在编写 php iPN 脚本 但我被 mc gross 检查困住了 我以这种格式 不是数字格式 将金额存储在数据库中 1000 100 10000 paypal 如何将 mc gross 值发回给我 以数字格式 我的意思是这样的 1 0
  • IE 11 中的 Bootstrap 4 对齐

    我正在将我的网站之一从 AngularJs Bootstrap 3 转换为 Angular 6 Bootstrap 在 Chrome 和 Firefox 以及 edige 中 我的模式如下所示 然而 在IE11中 代码 div class
  • 为什么C++中找不到向量

    还有什么选择 我应该自己写吗 有的是std find 算法 它在迭代器范围内执行线性搜索 例如 std vector
  • 设置 JFree Chart 图例边框颜色

    问题已在标题中阐述 细节 我在类主题中有代码 用于为图例框架的边框设置特定的非默认颜色 LegendTitle legend jFreeChart getLegend legend setWidth 100 之后我需要设置图例边框的颜色 但
  • PHP 是否有“命名参数”,以便可以省略前面的参数并可以写入后面的参数? [复制]

    这个问题在这里已经有答案了 在 PHP 中 您可以调用不传入任何参数的函数 只要参数具有如下所示的默认值 function test t1 test1 t2 test2 t3 test3 echo t1 t2 t3 test 但是 假设我希
  • SOAP 方法参数中的数组通过 JAX-WS 生成?

    我正在使用 JAX WS 注释用 Java 构建 SOAP 服务 除此之外 我想知道如何在我的方法中注释数组参数 当我从带注释的接口生成 wsdl 然后再次从该 wsdl 生成 java 类时 我这样做是为了测试 在这两种情况下都使用 Ap
  • 使用 D3.min 查找非 0 的最小值

    我正在尝试使用 D3 来查找数据集中的最低值 但是 我也有 0 的值 但我希望 D3 找到非 0 的最小值 目前我正在使用 d3 min data function d return d houseValues 但显然 当找到 0 时 有时
  • 每次安装组件时,React hook useEffect 都会导致初始渲染

    我是 React hooks 的新手 所以 我想用 React hooks 实现 componentWillReceiveProps 我像这样使用 React useEffect React useEffect gt console log
  • 漂亮的打印 XML 文件

    原始问题 我正在尝试在没有任何外部库的情况下漂亮地打印 XML 文件 但无法让 Java 执行我想要的操作 这是到目前为止我的代码 我添加了类似问题的任何解决方案 TransformerFactory tfactory Transforme
  • 如何使用 SMTP 发送附件?

    我想编写一个使用Python发送电子邮件的程序smtplib http docs python org library smtplib html 我搜索了文档和 RFC 但找不到任何与附件相关的内容 因此 我确信我错过了一些更高层次的概念
  • 更改 iOS 7 中 UIToolbar 的高度

    我试图在新的 iOS 7 项目中更改 UIToolbar 的高度 但我无法做到 我正在使用 UINavigationController 来管理几个 UIViewController 我尝试通过导航控制器设置工具栏的框架 但遗憾的是 工具栏
  • 如何使用 Selenium Java 2.8 获取当前 DOM?

    我正在使用最新版本的 Selenium 和chromedriver测试 ZK 应用程序 在测试期间 我想转储 DOM 或其中的一部分 以帮助我找到所需的元素 并且可能帮助必须维护测试的人 方法WebDriver getPageSource
  • 查找适用于某个元素的所有 CSS 规则

    许多工具 API 提供了选择特定类或ID 的元素的方法 还可以检查浏览器加载的原始样式表 但是 为了让浏览器呈现元素 它们将编译所有 CSS 规则 可能来自不同的样式表文件 并将其应用到该元素 这就是您在 Firebug 或 WebKit