使用js确定元素的宽度是否由其内容决定?

时间:2011-09-30 15:11:25

标签: jquery css width

我想知道是否有一种方法可以使用jQuery或javascript来确定,给定一个元素,如果它的宽度是由css样式(内联,继承或直接)设置的,或者它是由大小/确定的其内容的长度。

1 个答案:

答案 0 :(得分:4)

想到一个想法:

  • 存储元素的.width()

  • 删除该元素的所有子元素,将它们移动到其他位置,或者将它们设为display: none

  • 查看元素的.width()。如果它已经改变,它取决于内容。如果它没有改变,则使用CSS设置。

  • 恢复孩子的display财产或在必要时将其移回。

Here是一个非常原始原型,只删除了所有元素的内容:

function determineWidth(jQueryElement)
{
   var widthBefore = jQueryElement.width();

  jQueryElement.html(""); // Empty the element

  var widthAfter = jQueryElement.width();

  if (widthAfter != widthBefore)
    var result = "The width depended on the content.";
   else
    var result = "The width did NOT depend on the content.";

  alert("Before: "+widthBefore+" After: "+widthAfter+" - "+result);

}

块级元素有一个副作用:由于它们的宽度不依赖于内容,脚本将返回“...不依赖....”即使元素可能没有明确您可以根据需要在CSS中设置宽度。