三種隱藏 HTML 元素的方式
在網頁應用中,顯示/隱藏某個元素或元件是一件經常要做的事情,尤其是在目前比較流行的單頁應用中。
總體而言,有 3 種方式來實現
- CSS 的 display: none;
- CSS 的 visibility: hidden;
- HTML5 的 hidden 屬性(boolean)
它們之間有相同點和不同點。相同點很簡單,都能使新增了這個屬性的元素及其子元素『不被看見』。這篇文章著重來比較一下它們之間的差異。
display: none;
新增了這個屬性的元素:
- 不佔據頁面空間(不影響佈局),因為這個屬性不是讓這個元素『不可見』,而是壓根沒有把它渲染出來
- 依舊可以通過 DOM API 來獲取到
- 比如把它變成 display: block;
visibility: hidden;
新增了這個屬性的元素:
- 仍佔據頁面空間(影響佈局),僅僅讓元素變“透明”,不畫出來罷了
- 依舊可以通過 DOM API 來獲取到
- 比如把它變成 visibility: visible;
HTML5 hidden
E.g. <p hidden>hello, world!</p>
新增了這個屬性的元素:
- 不佔據頁面空間(不影響佈局),未被渲染出來
- 什麼情況下使用?
- 當這個元素和當前頁面狀態不相關時
- 這個元素僅僅用來被頁面中的其它元素重複使用,提供某種資訊,而非直接展示給使用者使用時
- 總之,當此元素不應該被使用者獲取到時使用。(因此,不能把此元素連結給某個 href 上)
- 對比
display: none;
的優勢在於,如果使用display: none;
,想要恢復顯示時,該恢復成哪個值呢?block 嗎?flex 嗎?不好確定。但是使用 HTML5 的 hidden 屬性就不存在這個問題了。 - 在易用性(Accessibility)方面,標註了 hidden 的元素不會被讀屏器讀到。
- 由於這個屬性其實是用 CSS 實現的,所以,如果你給帶有 HTML hidden 屬性的元素,新增了 CSS display 屬性,這個 display 屬性會覆蓋掉 HTML hidden 屬性。
- 有英文閱讀能力的同學可以去 W3C文件 檢視更詳細的解釋和用例
文件上摘取的用例之一:
<h1>The Example Game</h1>
<section>
<h2>Login</h2>
<form>
...
<!-- 呼叫 login() 當使用者的身份被成功檢測時 -->
</form>
<script>
function login() {
// switch screens
document.getElementById('login').hidden = true;
document.getElementById('game').hidden = false;
}
</script>
</section>
<section hidden>
...
</section>
總結
每種用法都有自己的優勢和劣勢,需要根據具體的業務場景來選擇用哪一種方式。
如有錯誤或遺漏,歡迎指出,謝謝!
相關文章
- 隱藏元素兩種方式
- 使用CSS隱藏HTML元素的4種常用方法CSSHTML
- 教你三種jQuery框架實現元素顯示及隱藏動畫方式jQuery框架動畫
- CSS 隱藏元素的八種方法CSS
- 有趣的css—隱藏元素的7種思路CSS
- # Flutter控制元件的顯示和隱藏的三種方式Flutter控制元件
- 隱藏IP地址的三種方法
- CSS“隱藏”元素的幾種方法的對比CSS
- 用 CSS 隱藏頁面元素的 5 種方法CSS
- JavaScript動畫方式控制div元素的隱藏和顯示JavaScript動畫
- CSS隱藏元素方法CSS
- 隱藏元素,保留功能
- HTML轉換到PDF的三種方式HTML
- 使用 hide和 show方法來隱藏和顯示 HTML 元素IDEHTML
- 隱藏列表的另一種方式,Excel表格怎麼建立組?Excel
- jQuery隱藏一個div元素jQuery
- jQuery 判斷元素是否隱藏jQuery
- css如何隱藏一個元素CSS
- html樣式表三種引入方式HTML
- Python selenium 三種等待元素方式Python
- HTML input hidden隱藏域HTML
- HTML input hidden 隱藏域HTML
- 使用CSS隱藏元素滾動條CSS
- 點選元素實現當前元素隱藏效果
- 點選空白處隱藏相應的元素
- jQuery幾種隱藏span的方法jQuery
- win10怎麼雙擊隱藏桌面圖示 Win10隱藏桌面圖示的三種方法Win10
- 三種方法教你在 Mac 上顯示隱藏檔案Mac
- 如何判斷一個元素是否隱藏
- jQuery 隱藏具有指定class屬性值的元素jQuery
- jquery隱藏具有指定class屬性值的元素jQuery
- 018-html插入樣式的三種方式HTML
- 元素的隱藏和顯示(display ,visibility ,overflow)
- jQuery實現的點選元素隱藏和顯示jQuery
- javascript實現的點選當前元素隱藏效果JavaScript
- 萬彩動畫大師教程 | 隱藏元素物件動畫物件
- CSS 小結筆記之元素的隱藏與顯示CSS筆記
- css li元素中的文字超出隱藏不換行效果CSS