display、visibility、opacity、rgba、z-index隠し要素の違い


display: none;
  • ブラウザはdisplay:noneという属性を生成しません.の双曲線コサインを返します.
  • display: none;スペースを占有せず、イベントに応答しないため、このプロパティを動的に変更すると再配置が発生します.

  • visibility: hidden;
  • 要素は隠されますが、消えずに空間を占めています.
  • visibility:hiddenは布団クラスに継承され、サブクラスは表示された設定visibility:visibleによってもよい.を返します.
  • visibility: hidden;エレメントがバインドされたイベントはトリガーされません.
  • visibility: hidden;このアトリビュートを動的に変更すると、再描画が発生します.
  • transitionは無効です.
  • opacity:0
  • opacity:0は透明度100%にすぎず、要素は非表示であり、依然として空間を占めている.
  • opacity:0は要素に継承され、サブ要素は非表示にできません.
  • opacity:0の要素は、バインドされたイベントをトリガーすることができます.
  • transitionは有効です.

  • rgba
  • background:rgba(R,G,B,0)は、背景色が透明で、要素が透明で、依然として空間を占めているだけです.
  • background:rgba(R,G,B,0)布団要素は
  • を継承しません.
  • は、依然としてバインドされたイベントをトリガーすることができる.
  • transitionは有効です.

  • z-index: -1
  • 要素の現在のdomがドキュメントフロー(position:absolute)から離れていることを前提に、z-indexを設定してこそ機能します.
  • z-index:-1を設定することは、本質的に現在のdomの積層コンテキストを変更し、他の要素の下に器を配置し、隠された目的を達成することである.
  • 部分再配置、他のレイヤーレイアウトに影響しない
  • は他の要素によってブロックされ、上位要素がpointer-events:noneを設定してもイベントに応答できません.(注:この属性は継承されます)
  • にもクリックできません.
    しょうしけん
    自分でやってみてもいいですよ.
    // html
    <div class="container">
        <div class="target">
            <p>I am target, and you ?</p>
        </div>
    </div>
    
    
    // css
      <style>
          .container{
              margin: 0 auto;
              width: 500px;
              min-height: 30px;
              background-color: skyblue;
          }
          .target{
              width: 200px;
              height: 50px;
              line-height: 50px;
              text-align: center;
              margin: 0 auto;
              background-color: plum;
              color: #fff;
              transition: all linear 1s;
              cursor: pointer;
          }
          .clickBlock{
            display: none;
          }
          .clickVisibility{
              visibility: hidden;
          }
          .clickOpacity{
              opacity: 0;
          }
          .clickRgba{
              background-color: rgba(221, 160, 221, 0);
          }
          .clickZindex{
              z-index: -1;
              position: absolute;
          }
      </style>
    
    // js
        const _target = document.getElementsByClassName("target")[0];
        _target.onclick = (() => {
            let i = 1; // click   
            return () => {
            // _target.attributes.class.value += " clickBlock";
            // _target.attributes.class.value += " clickVisibility";
            // _target.attributes.class.value += " clickOpacity";
            // _target.attributes.class.value += " clickRgba";
            _target.attributes.class.value += " clickZindex";
            console.log(` ${i}   `);
            i++;
        }})();