2012-01-15 181 views
2

Take a look a this。我使用jquery的方法访问按钮的高度和宽度,并通过访问.css("height"),我得到了两个错误的答案。按钮宽度和高度不正确

我在100%浏览器缩放。这里发生了什么?

Inner Height: 46, Inner Width: 196 
Height: 46, Width: 196 
CSS Height:44px, CSS Width: 184px 
(The actual button dimensions are 200 X 50) 
+0

您需要发布CSS和HTML。可能有填充或边界涉及。在标准的W3C盒子模型中,填充和边框添加到实际宽度;换句话说,它们不是宽度和高度的一部分。实际宽度为边界左宽+填充左+宽+填充右+边界右宽。 – Pointy 2012-01-15 13:53:57

+0

啊,看着你的jsbin,对我来说看起来很好。您可以使用Firebug的元素“布局”视图来查看元素大小的所有贡献者。在这种情况下,左右两边有6个填充像素,边框两个像素都是四周像素。 – Pointy 2012-01-15 13:56:32

+3

正如答案中所说,有一些默认的填充/边框。要获得元素的实际大小,可以使用outerHeight()/ outerWidth()(包括填充等)。) – CronosS 2012-01-15 13:59:19

回答

3

您俯瞰事实默认情况下,CSS渲染拳击政策从宽度高度不包括边界。您有border-top = 1,border-bottom = 3和border-right = border-left - 7,这表示缺少的维度。

要获取计算数额的元素的宽度/高度,包括它的边框+填充可以使用outerWidth()/outerHeight()

而且,在我的情况,我得到所有的正确值:

内部高度:46,内宽:186

高度:46,宽度:186

CSS高度:46px,CSS宽度:186px

(实际的按钮的尺寸为200×50)

1

在Chrome检查它,我也看到:

border: 2px outset buttonface; 

因此,添加2px的每侧,或4像素的总尺寸所以计算按钮本身的大小是正确的。

1

高度和按钮是184 x 44,它有1 x 6填充和2px边框。作为整体成为200×50:

button dimensions

它看起来像一个按钮,宽度为您设置的宽度 - 填充 - 边界。所以在jQuery中,您需要获取边框和填充尺寸并对其进行计数。

而你用jQuery得到的innerWidth是按钮+填充的宽度,但不是边框。所以,184 X 44 + 6×1日起196 X 46

+2

......或者,他可以用'outerWidth()'和'outerHeight()' – Pointy 2012-01-15 13:58:57

+0

@Pointy - 为什么没有答案?所有解释测量结果不好的原因的答案都是正确的......但它们缺少对“outerWidth()”和“outerHeight()”的简单引用。 – ripper234 2012-01-15 14:05:24

+0

我还没有得到任何咖啡,今早却所以我不相信我自己:-)有一点要考虑可能是不同的“浏览器复位” CSS各地的网络文件之一。这些类型 - “中和”浏览器应用于HTML元素的所有内部默认大小等。有些人觉得有用。 – Pointy 2012-01-15 14:08:21

0

所有的应答者在技术上是正确的,但是,他们忽略了这一部分:jQuery的outerWidth()outerHeight()采取所有这些考虑在内(我不知道这些函数) 。

Demo