2012-01-15 133 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