我制作了一个书签,其中包括在“popup”div中加载表单。我重置了我创建的每个元素上人类已知的每个CSS标签,据我所知,在firebug中检查它,没有CSS标签“流血”。但是,在某些页面上,输入宽度包括其填充:
input.clientWidth = input.style.width
在其他页面上,输入宽度不包括填充:
input.clientWidth = input.style.width + input.style.paddingLeft + input.style.paddingRight
因此,这是一个小代码片段:
input.style.width = '300px';
input.style.border = '1px solid grey';
input.style.padding = '20px';
alert(input.clientWidth);
在某些页面上,此警报298(300 - 1px边框),而在其他页面上此警报338(300 - 1px边框+ 20 + 20)。是什么导致这个?更重要的是,我能做些什么才能获得一致的行为?
修改
这些都在同一个浏览器中 - Firefox 3.6.8
答案 0 :(得分:3)
对于IE,可能是某些页面处于怪癖模式,其中盒子模型不是所使用的标准模型。
标准模式document.compatMode
为CSS1Compat
,怪癖模式为BackCompat
。您可以根据该分支进行计算。
显然,如果你向我们展示两个不同的页面会有所帮助,但由于它是一个书签,而且它在不同的网站上被调用,这是有道理的。
答案 1 :(得分:0)
对于一致的行为,您可以将填充,边距和边框分解为每个宽度,即(伪代码)
totalWidth = input.width + input.padding + input.margin + input.border;
显然,你必须做一些字符串操作来挑选那里的整数然后添加它们。