为特定的元素子元素注入css规则
Inject css rule for specific element children
在javascript中只对特定元素应用css规则的最佳方法是什么?
JSBIN例子
将构造的容器追加到DOM后,我想为新元素设置规则
'table-container > span { width : ' + calculated_width + 'px } '
;
的大小可能会改变,所以我尽量避免设置它直接在子元素。页面上可能有几个这样的元素,所以我不能在主样式表中全局设置它。
谢谢。
给特定容器一个额外的、生成的类名,并使用相关规则添加一个style
元素(如下所示),例如:
.array-container.width-28 > span { width : 28px }
…如果你想要的宽度是28px
你会改变这一行:
container.setAttribute('class','array-container');
container.className = 'array-container width-' + width;
跟踪你添加的style
元素,这样如果你需要一个值两次,你就不必为相同的值添加第二个style
元素。
这里是一个非常快速和肮脏的例子:Live Copy
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Dynamic Style Example</title>
<style>
.array-container span {
display: inline-block;
border: 1px solid #08f;
height: 1em;
}
</style>
</head>
<body>
<label>Add elements with width:
<input type="number" value="10" min="10" max="10000" id="width-to-use">
</label>
<input type="button" value="Add" id="btn-add">
<script>
(function() {
document.getElementById("btn-add").onclick = function() {
var width, div, css, style;
width = parseInt(document.getElementById("width-to-use").value, 10);
if (isNaN(width)) {
return;
}
div = document.createElement('div');
div.innerHTML =
"<span></span>" +
"<span></span>" +
"<span></span>";
div.className = "array-container width-" + width;
if (document.getElementById("style-width-" + width) === null) {
css = ".array-container.width-" + width + " span { " +
"width: " + width + "px; " +
"}";
style = document.createElement('style');
style.id = "style-width-" + width;
style.type = "text/css";
if (style.styleSheet){
style.styleSheet.cssText = css;
}
else {
style.appendChild(document.createTextNode(css));
}
document.getElementsByTagName("head")[0].appendChild(style);
}
document.body.appendChild(div);
};
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
})();
</script>
</body>
</html>
相关文章:
- 如何通过铬扩展注入反应元素
- 如何将第二个元素id注入到网站元素中
- 注入的元素和jQuery脚本.如何让他们一起工作
- 注入SVG元素并使用jquery访问它
- 在特定的HTML元素中注入并执行JavaScript字符串
- 注入html标记<ul></ul>在我的<李></李>元素
- 是通过JS注入的DOM元素
- 使用 Directives 注入 DOM 元素 AngularJS
- 重新加载页面以显示注入的 jQuery UI 元素
- jQuery文档是否准备好等待通过Backbone动态注入的html元素
- 无法选择 ajax 注入的元素
- 将代码注入 iFrame 以隐藏特定元素
- 使用 jq 通过 html() 或 append() 将 HTML 注入到另一个元素 注入的元素不能被 jq 访问,但使
- 如何将数据库中的 html 标签注入到我的指令的模板中,实际上是动态定义模板的根元素/标签
- 如何在数组中的每个元素之间注入一个元素
- Chrome扩展:将元素追加到DOM中没有立即出现的新注入的元素中
- 在Chrome下,Mootools注入失败,元素为null
- 执行通过bookmarklet作为脚本元素注入的javascript
- AngularJS和DOM元素注入
- 为特定的元素子元素注入css规则