我想知道是否有一种方法可以在没有元素使用的情况下从样式表文件中获取CSS值? 我正在使用jQuery,并使用选择器$(“.classname”).css()来获取值。 但是如果“classname”未包含在任何元素中,该怎么做才能获得值呢?谢谢
我想知道是否有一种方法可以在没有元素使用的情况下从样式表文件中获取CSS值? 我正在使用jQuery,并使用选择器$(“.classname”).css()来获取值。 但是如果“classname”未包含在任何元素中,该怎么做才能获得值呢?谢谢
只需创建一个具有该类名的元素并检查它。您甚至不需要将其附加到DOM:
var $el = $('<div class="classname"></div>');
var opacity = $el.css('opacity') // or whatever
$el
实际上并不存在于DOM中,你仍然可以访问到它的所有样式属性。
例如,以下示例由于#foo
增加了选择器特异性,超过了独立的.bar
而失败:
css:
#foo .bar { color: red; }
js:
var $el = $('<div class="bar"></div>');
$el.css('color'); // Expected: "red", Actual: ""
document.styleSheets
以及IE的.rules
和其他浏览器的.cssRules
。上述链接已失效。以下是互联网档案馆在2008年捕获的博客文章截图。
该函数基本上会遍历所有样式表的所有样式,并提供修改/删除它们的能力。var $elem = $('<div id="foo"></div>').appendTo('body'),
value = $elem.css('margin-top');
$('#foo').remove();
.dummy {
min-width: 50px;
max-width: 250px;
}
示例Javascript:
$(document).ready(function() {
var dummy = $('<div class="dummy" style="display: none;"></div>').appendTo('body');
console.log(dummy.css("min-width"));
console.log(dummy.css("max-width"));
dummy.remove();
});
这适用于所有现代浏览器,Chrome,FF,IE11。
$('<div id="foo"><div class="classname"></div></div>').find('.classname').css('opacity')
的方法,但是有很多情况下甚至这种方法也会失效(例如从html
或body
上特定选择器继承的样式)。 - eyelidlessness