首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以使用jQuery根据开发人员使用CSS指定的内容来获取元素的宽度(以百分比或像素为单位)?

是否可以使用jQuery根据开发人员使用CSS指定的内容来获取元素的宽度(以百分比或像素为单位)?
EN

Stack Overflow用户
提问于 2010-10-24 07:37:55
回答 8查看 78.1K关注 0票数 50

我正在编写一个jQuery插件,我需要能够做的事情是确定用户指定的元素的宽度。问题是.width()或.css('width')总是会报告精确的像素,即使开发者已经分配了它,例如宽度:90%的CSS。

有没有办法让jQuery以px或%的格式输出元素的宽度,这取决于开发人员用CSS给它的值?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-10-24 07:44:17

我想说最好的方法是自己计算它:

代码语言:javascript
复制
var width = $('#someElt').width();
var parentWidth = $('#someElt').offsetParent().width();
var percent = 100*width/parentWidth;
票数 86
EN

Stack Overflow用户

发布于 2013-11-09 15:57:41

这绝对是可能的!

您必须首先隐藏()父元素。这将阻止JavaScript计算子元素的像素。

代码语言:javascript
复制
$('.parent').hide();
var width = $('.child').width();
$('.parent').show();
alert(width);

请参阅我的example

票数 11
EN

Stack Overflow用户

发布于 2010-10-24 08:11:32

在这个堆栈溢出问题中记录了执行此操作的方法。

How do you read CSS rule values with JavaScript?

您唯一需要知道的是哪个样式表是类,还是遍历所有样式表的循环。下面的函数给出了类的所有特征,使用正则表达式来提取你想要的特征是很容易的。

代码语言:javascript
复制
function getStyle(className) {
    var classes = document.styleSheets[0].rules || document.styleSheets[0].cssRules
    for(var x=0;x<classes.length;x++) {

        if(classes[x].selectorText==className) {
                (classes[x].cssText) ? alert(classes[x].cssText) : alert(classes[x].style.cssText);
        }
    }
}
getStyle('.test');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4006588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档