如何获得div的最大可能宽度?

时间:2010-07-09 05:35:19

标签: javascript css html width

我需要知道如何获得div的最大可能宽度。通常,<div>的宽度受其父级的限制,这意味着它不能大于某个数量。如何计算一定金额?

我需要这个来计算当前<div>内的文本是否溢出,(因为检测文本溢出的唯一方法是将它的当前宽度与当前clientWidth进行比较)。

谢谢!

4 个答案:

答案 0 :(得分:3)

有几种方法,让我们从你的div开始......

<div id='mr_cleaver'>
  <div id='beaver'>Blah</div>
</div>

...然后是一些JavaScript:

//Method One: Find the width of the div's parent
var max_beaver_width = $('mr_cleaver').offsetWidth

//Method Two: Max out the div, find length, return to original size.
var beaver_width = $('beaver').offsetWidth;
$('beaver').style.width = "100%";
var max_beaver_width = $('beaver').offsetWidth;
$('beaver').style.width = beaver_width + 'px';

//Method Three: Check for overflow
$('beaver').scrollWidth > $('beaver').offsetWidth ? alert("Over") : alert("Within")

答案 1 :(得分:0)

谢谢史蒂夫!

您的建议非常有用。虽然它们都没有为我工作(可能我没有很好地解释我的情况),但使用你的提示,我可以找到一种方法来检测文本溢出:

/* specifying the height of 'beaver'*/
var font_size= $('beaver').css("font-size");
font_size = parseInt(font_size.replace(/[a-z]*/gi,''));
var maxHeight = font_size + 4; // 4 is to make sure that the font fits in the maxHeight

/*now calculate current height*/
$('beaver').style.overflow-y:visible;
$('beaver').style.overflow-x:hidden;
var cuurentHeight = $('beaver').clientHeigth;

/* check whether overflow is occured*/
if(cuurentHeight > maxHeight){
    //overflow has been occured
}

答案 2 :(得分:0)

如果你希望div的宽度为100%而边缘之间没有空格,你可以尝试将这个simpel CSS样式添加到div:

<style type="text/css">
  #FullWidthDiv {        // EDIT
    position: absolute; // If you use 'fixed' as position, then the div
    display: block;     // won't become smaller when the screen is at is smallest.
float: left;        // The fixed position is good when you for example want the
width: 100%;        // menu to stay in place.
background-color: #06F;
height: auto;
left: 0px;
top: 0px
}
</style>

<html>
<body>
<div id="FullWidthDiv"></div>
</body>
</html>

答案 3 :(得分:0)

您可以将div附加到父元素中以进行测量。

var test = document.querySelector('#test');

var div = document.createElement('div');
div.style.width = '10000px';
test.appendChild(div);
var maxWidth = test.offsetWidth;
test.removeChild(div);
alert(maxWidth);
#test {
  display: inline-block;
  max-width: 100px;
}
<div id="test"></div>