从 Javascript 检测真实的边框、填充和边距
有没有办法从 Javascript 代码中检测元素的真实边框、填充和边距? 如果您查看以下代码:
<html>
<head>
<style>
<!--
.some_class {
padding-left: 2px;
border: 2px solid green;
}
-->
</style>
<script>
<!--
function showDetails()
{
var elem = document.getElementById("my_div");
alert("elem.className=" + elem.className);
alert("elem.style.padding=" + elem.style.padding);
alert("elem.style.paddingLeft=" + elem.style.paddingLeft);
alert("elem.style.margin=" + elem.style.margin);
alert("elem.style.marginLeft=" + elem.style.marginLeft);
alert("elem.style.border=" + elem.style.border);
alert("elem.style.borderLeft=" + elem.style.borderLeft);
}
-->
</script>
</head>
<body>
<div id="my_div" class="some_class" style="width: 300px; height: 300px; margin-left: 4px;">
some text here
</div>
<button onclick="showDetails();">show details</button>
</body>
</html>
您可以看到,如果单击该按钮,填充的报告不正确。 仅报告直接通过“style”定义的属性,不报告通过 CSS 类定义的属性。
有没有办法取回这些属性的最终值? 我的意思是浏览器计算并应用所有 CSS 设置后获得的值。
Is there a way to detect the true border, padding and margin of elements from Javascript code? If you look at the following code:
<html>
<head>
<style>
<!--
.some_class {
padding-left: 2px;
border: 2px solid green;
}
-->
</style>
<script>
<!--
function showDetails()
{
var elem = document.getElementById("my_div");
alert("elem.className=" + elem.className);
alert("elem.style.padding=" + elem.style.padding);
alert("elem.style.paddingLeft=" + elem.style.paddingLeft);
alert("elem.style.margin=" + elem.style.margin);
alert("elem.style.marginLeft=" + elem.style.marginLeft);
alert("elem.style.border=" + elem.style.border);
alert("elem.style.borderLeft=" + elem.style.borderLeft);
}
-->
</script>
</head>
<body>
<div id="my_div" class="some_class" style="width: 300px; height: 300px; margin-left: 4px;">
some text here
</div>
<button onclick="showDetails();">show details</button>
</body>
</html>
you can see, if you click the button, that the padding is not reported right. Only the properties defined directly through "style" are reported back, those defined through a CSS class are not reported.
Is there a way to get back the final values of these properties? I mean the values obtained after all CSS settings are computed and applied by the browser.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
style
属性可以获取内联分配的样式,如< /代码>
如果您想获取外部 css 文件或
元素中分配的样式,请尝试以下操作:
如果您使用的是 jQuery,@vsync 的解决方案就很好。
the
style
property can get the styles that are assigned inline like<div id="target" style="color:#ddd;margin:10px">test</div>
if you want to get the styles assigned in outer css file or
<style/>
element, try this:if you are using jQuery, @vsync 's solution is fine.
使用 jQuery:
你的方式(但你必须声明 paddingLeft、paddingRight..而不仅仅是 'padding' ):
With jQuery:
Your way (but you have to state paddingLeft, paddingRight..not just 'padding' ):
这是可能的,但当然,每个浏览器都有自己的实现。 幸运的是,PPK 为我们完成了所有艰苦的工作:
http://www.quirksmode.org/dom /getstyles.html
It's possible, but of course, every browser has its own implementation. Luckily, PPK has done all the hard work for us:
http://www.quirksmode.org/dom/getstyles.html