首頁 > web前端 > css教學 > 主體

為什麼 jQuery 的 `height()` 和 `width()` 對於具有 `display:none` 的元素會傳回非零值?

Patricia Arquette
發布: 2024-10-28 06:58:29
原創
438 人瀏覽過

Why Does jQuery's `height()` and `width()` Return Non-Zero Values for Elements with `display:none`?

jQuery 的非傳統Height() 和Width() 行為與「display:none」

jQuery 的height() 和width( ) 方法是廣泛用於確定網頁上元素的可見尺寸。然而,在處理設定了 CSS 屬性「display:none」的元素時,似乎會出現意外的行為。

問題

傳統上,人們相信具有「display:none」的元素的高度和寬度為零。然而,jQuery 的情況並非總是如此。考慮以下範例:

<code class="html"><div id="target" style="display:none;">
  a
</div></code>
登入後複製
<code class="css">alert($("#target").height());</code>
登入後複製

在此範例中,「目標」元素的高度不為零,而是一個非零值。這種不一致引發了一個問題:為什麼帶有「display:none」的元素有時會在 jQuery 中傳回非零高度和寬度?

答案

要理解這種行為,我們需要深入研究 jQuery 的 height() 和 width() 方法的內部運作原理。當元素的可見 offsetWidth 為 0(表示它是「隱藏」)時,jQuery 會嘗試計算其實際尺寸。它透過暫時覆寫元素的CSS 屬性來實現此目的:

  • position: "absolute"
  • visibility: "hidden"
  • display: "block"

透過這些修改,jQuery 會檢索元素的高度,並根據需要考慮邊框和填充。一旦確定了高度,jQuery 就會恢復原始的 CSS 屬性,確保不會發生可見的變更。

此程序允許 height() 和 width() 對於隱藏元素正確工作,只要它們的父元素可見。本質上,jQuery 模擬了在文件流程之外顯示元素、檢索其尺寸,然後再次隱藏它的行為,所有這些都在幕後透過單一操作完成。這消除了開發人員手動顯示和隱藏元素來獲取其尺寸的需要。

以上是為什麼 jQuery 的 `height()` 和 `width()` 對於具有 `display:none` 的元素會傳回非零值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!