jQuery width() get/set 跨不同浏览器不一致

标签 jquery css

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

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

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

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

知道如何解决这个问题并确保所有这些浏览器的一致性吗?

编辑:我正在使用 jQuery 1.11.1

最佳答案

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

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

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

关于jQuery width() get/set 跨不同浏览器不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33345221/

相关文章:

css - CSS中带引号和不带引号的属性选择器的区别

javascript - API 数据打印到 Node 中的控制台但不显示在 html 中

javascript - tinyMCE 编辑器版本 3 上传图像选项

html - list float none 与 float left 或 right 组合

css - 水平展开div并保持靠右

php - Jquery图像裁剪器

css - 为什么文本装饰在 :hover? 下不起作用

javascript - Django 表单上的 jQuery 验证插件

javascript - 如何防止长时间运行的服务导致浏览器弹出“终止/等待”警报?

jquery - 将逗号分隔字符串转换为键值对象 jQuery