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

发布于 2024-12-07 13:38:05 字数 95 浏览 0 评论 0原文

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

I want to know if there's a way I can use jQuery or javascript to determine, given an element, if its width is set by a css style (either inline, inherited or directly) or if its being determined by the size/length of its content.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

后知后觉 2024-12-14 13:38:05

我想到了一个想法:

  • 存储元素的 .width()

  • 删除元素的所有子元素,将它们移到其他地方,或使它们 display: none

  • 检查输出元素的 .width()。如果有变化,那就要看内容了。如果没有改变,那就是使用 CSS 设置的。

  • 恢复子项的 display 属性或在必要时将其移回原处。

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

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 中设置显式宽度根据您的要求。

One idea comes to mind:

  • Store the element's .width()

  • Remove all children of the element, move them elsewhere, or make them display: none

  • Check out the element's .width(). If it has changed, it depended on the content. If it has not changed, it was set using CSS.

  • Restore the children's display property or move them back if necessary.

Here is a very primitive prototype that simply removes all the element's content:

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);

}

There's one side-effect for block level elements: Since their width doesn't depend on the content, the script will return "...did not depend...." even though the element may not have had an explicit width set in CSS as you require.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文