javascript - 用 JS 检测单独 DOM 元素的重要 css 规则
问题描述
我怎样才能检测到有向 DOM 元素的样式属性的重要规则?
前任:
<div class = "class">
***content***
</div>
.class{
top: 45px!important;
}
let elmStyles = document.getElementsByClassName('class')[0].style;
/* i need this =====> */ let isImportant = elmStyles.getPropertyPriority("top");
我已经找到了一些相关信息,但我无法将其应用于具体的 DOM 元素 https://developer.mozilla.org/ru/docs/Web/API/CSSStyleDeclaration/getPropertyPriority
解决方案
您可以找到应用到的所有元素top
和特定类.class
意味着您需要遍历所有规则并为其找到相应的类
var declaration = document.styleSheets;
for(var i=0;i<declaration.length;i++) {
for(var j=0;j<declaration[i].cssRules.length;j++) {
var rule = declaration[i].cssRules[j];
if(rule.style.getPropertyPriority("top")=="important") {
var selector = rule.selectorText;
if(selector[0]==".") {
var elements = document.getElementsByClassName(selector.substring(1));
for(var k=0;k<elements.length;k++) {
var element = elements[k];
console.log(element)
}
}
}
}
}
此循环将遍历所有规则并将 findtop
标记为!important
然后选择class
应用的所有元素并在控制台中打印
目前我只为class
, for写过代码ID
,tag name
这是行不通的
推荐阅读
- javascript - 将 Javascript 转换为 Typescript。我构建的文件没有在我预期的地方结束
- laravel - Laravel 电子邮件验证 5.7
- javascript - 有没有办法只包含页面中需要的部分 JS 库?
- javascript - 为什么关闭打印预览后我的打印预览元素不隐藏?
- android - Flutter - 英雄动画内存密集吗?
- here-api - HERE-API:如果禁用时间感知功能,则使用什么日期时间?
- selenium - Selenium:使用 selenium 将文件上传到谷歌驱动器
- php - Prestashop后台批量产品导入
- javascript - 异步/等待嵌套在循环中
- c# - 自定义数字格式自动将最后 2 位数字转换为小数点