我经常使用CSS通用选择器来重置HTML文档中的维度:
* {
border: 0;
margin: 0;
padding: 0;
}
这也可以用JavaScript完成吗?
对于普通的HTML元素,有style
属性。
但是如何与通用选择器对话?
答案 0 :(得分:5)
getElementsByTagName("*")
将返回DOM中的所有元素。然后,您可以为集合中的每个元素设置样式:
var allElements = document.getElementsByTagName("*");
for (var i = 0, len = allElements.length; i < len; i++) {
var element = allElements[i];
// element.style.border = ...
}
答案 1 :(得分:3)
您不需要迭代所有元素。您可以将此操作请求到浏览器的CSS引擎。这样的事情:
;(function(exports) {
var style = document.querySelector("head").appendChild(document.createElement("style"));
var styleSheet = document.styleSheets[document.styleSheets.length - 1];
styleSheet.insertRule("* {}", 0);
exports.universal = styleSheet.cssRules[0];
}(window));
从现在开始,您可以使用window.universal
对象来设置所有元素的样式。例如:
window.universal.style.border = "1px solid red";
当然,您无需在运行时创建<style>
标记。您也可以使用纯HTML格式。
答案 2 :(得分:2)
在原始javascript中,您可以这样做:
document.getElementsByTagName('*')
但我不建议使用js将css添加到所有元素。
答案 3 :(得分:0)
感谢 VisioN 提供解决方案!我记得您可以使用新的JavaScript Query Selector API执行相同操作:
var allElements = document.querySelectorAll('*');
for (var i = 0; i < allElements.length; i++) {
var element = allElements[i];
element.style.border = '0px';
element.style.margin = '0px';
element.style.padding = '0px';
}