不带源元素的JavaScript getComputedStyle
JavaScript getComputedStyle without source element?
本质上,我试图使用getComputedStyle来获取属性值,而无需(直接)访问元素。请阅读下面的描述以了解更多详细信息。
这很难解释,所以如果你不明白,请告诉我。
这是我的CSS代码:
.yScrollButton{
background-color:#aaa;
width:100%;
position:absolute;
top:0;
min-height:30px;
}
.xScrollButton{
background-color:#aaa;
height:100%;
position:absolute;
top:0;
min-width:30px;
}
链接到这些类的元素是用JavaScript生成的。如何在不使用元素查找min-width:30px;
或min-width:30px;
属性值的情况下获取它们。通常在这种情况下,您使用getComputedStyle
https://stackoverflow.com/a/18676007/3011082但在这种情况下,我无法获得计算样式的源元素(见下面的示例)!
var yourDiv = document.getElementById("some-id");
getComputedStyle(yourDiv).getPropertyValue("margin-top")
同样,这很令人困惑,所以如果你不明白,请告诉我:)解决方案必须只有JavaScript,而不是JQuery
现在我想一想,理解这个问题的更好方法是使用
var yourDiv = document.getElementById("some-id"); getComputedStyle(yourDiv).getPropertyValue("margin-top")
而没有CCD_ 4元件。
谢谢。
var div = document.createElement("div")
div.className = "yScrollButton" // or xScrollButton
getComputedStyle(div).getPropertyValue("min-width")
这就是你要找的吗?
编辑:也许你必须先把它添加到DOM中(由@Phil):以下是如何在不改变原始元素属性的情况下完成它。您也可以跳过hiddenDiv,并在div本身上设置display = "none"
var hiddenDiv = document.createElement("div")
hiddenDiv.style.display = "none"
document.body.appendChild(hiddenDiv)
var div = document.createElement("div")
hiddenDiv.appendChild(div)
div.className = "yScrollButton" // or xScrollButton
getComputedStyle(div).getPropertyValue("min-width")
hiddenDiv.parentNode.removeChild(hiddenDiv)
short:
var div = document.createElement("div")
div.style.display = "none"
document.body.appendChild(div)
div.className = "yScrollButton" // or xScrollButton
getComputedStyle(div).getPropertyValue("min-width")
div.parentNode.removeChild(div)
创建一个临时元素是我的做法,但(至少在我的测试中),你必须将元素插入文档(因此是display = 'none'
)
function getStyle() {
var e = document.createElement('div');
e.className = 'foo';
e.style.display = 'none';
document.body.appendChild(e);
var style = window.getComputedStyle(e),
obj = {
'min-width': style['min-width'],
'min-height': style['min-height']
};
document.getElementById('out').innerHTML = JSON.stringify(obj, null, ' ');
document.body.removeChild(e);
}
.foo {
min-width: 30px;
min-height: 30px;
}
<button onclick="getStyle()" type="button">Get <code>.foo</code> style</button>
<pre id="out"></pre>
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- 使用javascript将动态表从一个html页面打印到另一个html页
- 通过javascript重定向html传递php变量