我想知道使用jquery div 是否有高度限制。
例如,这个 div 被限制为 100px,无论内容的大小如何,div 的高度都将是 100px:
<div style="height: 100px;">
bla bla
</div>
并且这个不受限制并且将占据其内容的高度:
<div>
bla bla
</div>
换句话说,我想知道是否通过设置 style 属性或使用单独的 css 样式设置了高度(如果是的话怎么办)。
谢谢
FF3.6 FF5 IE8 Chrome12 和 Opera11 的解决方案:
function css(a){
var sheets = document.styleSheets;
var o={};
var name;
var i=0;
while (i<sheets.length) {
var rules = sheets[i].rules || sheets[i].cssRules;
var r=0;
while(r<rules.length) {
if(typeof(rules[r].style)!="undefined" &&
!rules[r].selectorText.match(":before") && // fix for FF3.6
!rules[r].selectorText.match(":after") &&
!rules[r].selectorText.match(":link") &&
!rules[r].selectorText.match(":hover") &&
!rules[r].selectorText.match(":active") &&
!rules[r].selectorText.match(":visited") &&
!rules[r].selectorText.match(":first-letter") &&
!rules[r].selectorText.match(":-moz-focus-inner") &&
a.is(rules[r].selectorText)) {
o = $.extend(o, css2json(rules[r].style), css2json(a.attr('style')));
}
r++;
}
i++;
}
return o;
}
function css2json(css){
var s = {};
if(!css) return s;
var isMSIE = /*@cc_on!@*/0;
if (isMSIE)
{
if(typeof(css)=="object")
{
for(var i in css) {
if(i.toLowerCase)
s[i.toLowerCase()] = css[i];
}
}
else if(typeof css == "string")
{
css = css.split("; ");
for (var i in css) {
var l = css[i].split(": ");
s[l[0].toLowerCase()] = (l[1]);
};
}
}
else
{
if(css instanceof CSSStyleDeclaration)
{
for(var i in css) {
if((css[i]).toLowerCase)
s[(css[i]).toLowerCase()] = (css[css[i]]);
}
}
else if(typeof css == "string")
{
css = css.split("; ");
for (var i in css) {
var l = css[i].split(": ");
s[l[0].toLowerCase()] = (l[1]);
};
}
}
return s;
}
...
alert(css($('some selector')).height);
使用中提供的功能这个答案 https://stackoverflow.com/questions/754607/can-jquery-get-all-css-styles-associated-with-an-element/5830517#5830517,您可以像这样访问元素的高度:
css($('div')).height
这些函数考虑了内联样式和继承样式,我相信这就是您想要的。如果没有明确指定高度,则height
返回对象的属性将是undefined
.
Demo http://jsfiddle.net/Town/sCwAu/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)