【问题标题】:jQuery width() get/set inconsistency cross different browsersjQuery width() 获取/设置跨不同浏览器的不一致
【发布时间】:2015-10-26 20:04:23
【问题描述】:

我有 TH 元素,它的左右填充设置为 18px,我尝试通过 jQuery 获取它的宽度,将获得的 px 宽度转换为 % 并将该元素的宽度设置为计算百分比。

var originalWidth = $("#thElement").width();
var newWidth = (originalWidth / $("#thElement").parent().width()) * 100
$("#thElement").width(newWidth + "%");

在上面代码的第一行,所有浏览器都返回没有填充的宽度。没关系。

但在第三行,只有 Firefox 将元素的宽度再次设置为计算值,而无需填充。结果是,在 IE11、Chrome 和 Opera 中,宽度减少了 36 px,因为新宽度的一部分被填充“消耗”了。

任何想法,如何解决这个问题并确保所有这些浏览器的一致性?

编辑:我使用的是 jQuery 1.11.1

【问题讨论】:

标签: jquery css


【解决方案1】:

您应该在 CSS 上设置 box-sizing 属性,因为如果未声明此属性,不同的浏览器有不同的标准,这会影响填充和边框是否计算为元素大小的一部分。

#thElement {
    box-sizing: border-box;
} 

http://www.w3schools.com/cssref/css3_pr_box-sizing.asp

【讨论】:

  • 感谢您的回复,但很遗憾它不起作用。当我添加样式 box-sizing:border-box;到 TH 元素并通过 jQuery 设置它的宽度,而不是宽度 17,346% 通过设置它像这样 $("#thElement").width("17,346%") 它以 53,3462% 宽度结束....我试过了它在 Chrome 中。
  • 你应该像 bootstrap 一样将它用于 * 选择器
  • 发布一个 jsfiddle 会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多