1. 元素显示与隐藏的方案

/* 首选 */
.hidden {
  position: absolute;
  top: -9999em;
}

.hidden {
  position: absolute;
  visibility: hidden;
}

.hidden {
  display: none;
}

对于 position,如果元素之前没有过 position 属性那就没问题,如果之前就是 absolute、relative 尽量不用

对于 display,需要判断之前元素是 inline-block or block

要想让屏幕阅读器等辅助设备也能明白显示和隐藏,只能用 position top 方法 (可用性隐藏)。但如果被隐藏元素是 a, input,这样的隐藏方式会在用户点击 tab 时产生扰乱,🐟 和 🐻 不可得兼。

使用 absolute 隐藏是会产生重绘 repaint 而不会产生强烈的回流 reflow。而使用 display:none 不仅会重绘,还会产生回流(DOM 节点删除增加),DOM 影响范围越广,回流越强烈。所以,就 JavaScript 交互的呈现性能上来讲,使用 absolute 隐藏是要优于 display 相关隐藏的。(reflow --> repaint)

  • 方案 1 对应的 js

    dom.style.position = 'static';
    
    // or
    
    dom.classList.remove('hidden'); //better
    
  • 方案 2 对应的 js

    dom.style.position = 'static';
    dom.style.visibility = 'visible';
    
Copyright © Guanghui Wang all right reserved,powered by GitbookFile Modified: 2019-08-25 13:56:34

results matching ""

    No results matching ""