如何使用Javascript获取继承的CSS值
How can I get the inherited CSS value using Javascript?
我正在尝试使用Javascript获取继承的CSS属性的值。我一直没能找到一个全面的答案。
示例CSS:
div {
width: 80%;
}
示例标记:
<div id="mydiv"> Some text </div>
使用javascript(jQuery或native),我需要获得元素的宽度——不是以像素为单位,而是字符串"80%"。
$('#mydiv').css('width'); // returns in px
$('#mydiv')[0].style.width // empty string
getComputedStyle($('#mydiv')[0]).width // returns in px
我之所以需要将值作为字符串,是因为我需要将样式复制到另一个元素。如果它被声明为百分比,那么另一个值需要是百分比。如果它是用px声明的,那么另一个值需要用px表示。
真正的诀窍是,这个属性可以被继承,而不是在元素上显式声明(就像我的例子一样)。
有人有什么想法吗?
您正在搜索的是这篇quicksmode.org文章。它提出了的功能
function getStyle(el, styleProp) {
var x = document.getElementById(el);
if (x.currentStyle)
var y = x.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
return y;
}
不过,你应该仔细阅读那篇文章。styleProp
的名称并不是真正的跨浏览器,您将看到不同的浏览器是如何处理这一问题的。Opera似乎对报告正确的价值观提供了最好的支持。
恐怕无法获得百分比值。你可以试试这样的东西:
var widthpx = getComputedStyle($('#mydiv')[0]).width;
var parentWidth = $('#mydiv').parent().css('width')
var width = ( 100 * parseFloat(widthpx) / parseFloat(parentWidth) ) + '%';
获取元素的offSetWidth及其offsetParent的offSetWidth,并根据这两个整数计算百分比。
这将事件处理程序绑定到click
事件的元素,并提醒该元素与其父元素相比的相对宽度。
$('#mydiv').on('click', function () {
//element width divided by parent width times 100 to make a percentage
alert(Math.round($(this).width() / $(this).parent().width() * 100) + '%');
});
下面是一个演示:http://jsfiddle.net/X67p5/
相关文章:
- Javascript:创建不继承css的元素
- 如何继承 css 动画
- 如何创建一个独立的 DOM 元素?一个不从父母那里继承 css 等
- JQuery/CSS 父子继承噩梦
- 我应该如何处理这个 CSS 继承难题
- 如何继承祖父母CSS而不是父CSS
- 如何使用JavaScript获得元素的实际继承CSS
- 如何使用Javascript获取继承的CSS值
- javascript appendchild,它不继承父级的css
- CSS文本框宽度从具有最大宽度的父容器继承
- 从Webix中的视图继承CSS
- CSS交叉继承
- 在js中检查CSS color属性是否接受'继承'价值
- Shadow DOM元素可以继承CSS吗?
- 是否有一个(polyfill)代码重置所有继承的CSS属性上的给定元素
- 如何在css中继承类
- 从元素中移除/重置继承的CSS
- 获取从中继承CSS规则的元素
- 继承图像宽度(css)
- Javascript工具栏插件CSS继承