找出HTML高度是按样式还是按内容设置的

时间:2012-05-11 13:33:13

标签: javascript jquery html jquery-ui

我有2个div:

<div id="div1"></div>
<div id="div2">div2</div>​

在我的css中:

#div1{ height:20px}​

两个div的高度均为20px,请检查demo
如何判断div是否由于内容而具有高度,或者是以css还是内联样式设置? 这有助于我找出由开发人员设置的维度或仅由浏览器计算的维度。

4 个答案:

答案 0 :(得分:11)

我找到了实现它的方法:)

function getRealHeight(element){
    var height=0;
    if (element.children().length>0){
        var temp = $('<div></div>');
        temp.append(element.children());
        height = element.height();
        element.append(temp.children());
    } else {
        var html=element.html();
        element.html('');
        height = element.height();
        element.html(html);
    }
    return height;
}

DEMO

答案 1 :(得分:2)

使用此功能:

function emptyHeight ( elem ) {
    var $temp = $( '<div />' );
    var $elem = $( elem );
    var height;

    $temp.append( $elem.contents() );
    height = $elem.height();
    $elem.append( $temp.contents() );

    return height;   
}

这个想法是暂时从元素中分离所有子节点。没有子元素的元素的高度为0除非通过CSS设置其高度。

将您的DIV元素传递给该函数。如果它返回0,则意味着DIV 通过CSS设置其高度。

if ( emptyHeight( yourDiv ) === 0 ) {
    // the DIV does not have any height value set via CSS
} else {
    // the DIV has a CSS height set
}

答案 2 :(得分:1)

您可以使用jQuery搜索CSS高度值并进行比较吗?

答案 3 :(得分:1)

<div id="div-styled" style="height: 20px"></div>
<div id="div-unstyled"></div>

使用纯JavaScript检查 内联 CSS height属性

document.getElementById('div-styled').style.height // "20px"
document.getElementById('div-unstyled').style.height.length // 0

<强>更新

jQuery从外部样式表返回样式规则以及.css()

var $el = $('#container');
$el.html( $el.css('height') );
#container {
  height: 42px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<div id="container"></div>