【发布时间】:2023-11-19 09:48:01
【问题描述】:
我有一种情况需要排除媒体查询,除非它们与一个或多个特定元素匹配。
有没有办法在媒体查询中指定将被查询忽略但可检索的数据?
var rules = document.styleSheets[0]["cssRules"] || document.styleSheets[0]["rules"];
var numberOfRules = rules!=null ? rules.length : 0;
// loop through rules and hide media queries except selected
for (var i=0;i<numberOfRules;i++) {
var rule = rules[i];
if (rule.media!=null) {
console.log(rule.conditionText);
}
}
@media (min-width: 500px) {
.hideOnMobile {
display: none !important;
}
}
我想做这样的事情:
@media (min-width: 500px) or (device: myElementName) {
.hideOnMobile {
display: none !important;
}
}
我查看了属性页面,但似乎没有任何可用的东西。
https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries
【问题讨论】:
-
我不认为我理解你所说的“匹配元素”是什么意思 - 你能再解释一下吗?
-
@AHaworth 假设我在一个页面上有 100 个媒体查询,其他人可能会添加更多。我想忽略所有这些,除了我做的那些。所以我想专门给它们贴上标签。例如,
-
听起来像XY problem。我的意思是,当你需要做的是将数据与一个元素相关联,然后由媒体查询中的 CSS 读取时,你要求将数据存储在媒体查询中。
-
媒体查询匹配,嗯,媒体,而不是元素。一旦媒体匹配,后续规则匹配元素……如果你想“禁用媒体查询”,不要包含定义它们的 CSS 代码。
-
@HereticMonkey 我可以通过向媒体查询提供更多信息来避免一些特定的问题。我已经关联了样式规则。当其他开发人员问他们自己的问题时,问题就出现了。这就是这个问题的由来。
标签: html css media-queries