我想知道如果div是高度受限或不使用jquery。如何判斷div是否受高度限制?
例如這個div被限制爲100px,無論內容的大小股利將有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 = /*@[email protected]*/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);
完美:-)感謝 –
不知道是什麼問題,但並沒有在我的瀏覽器(Firefox 3.6)工作。我得到:語法錯誤,無法識別的表達式:之前 – Ariel
@Ariel:我都不配對。代碼中沒有提到''之前',也許它是一個jQuery的東西... – Town