【问题标题】:Child element z-index inside element with transform property具有变换属性的元素内的子元素 z-index
【发布时间】:2019-03-16 21:07:17
【问题描述】:

我有一个问题,我想知道你们是否可以帮助我解决这个问题。

如sn-p所示,我有一些元素与

transform: translate(0,0);

然后,在其中,我有一个“下拉”元素,当您单击按钮时会显示该元素。

当这个下拉列表的一部分隐藏在其他元素后面时,问题就出现了,我发现这是因为它的父元素具有这个变换属性。

我的代码有更多的东西,sn-p 只是一个例子。我无法摆脱 transform 属性。

我想知道是否有任何解决方案。我正在尝试仅使用 CSS 来解决它。

干杯!!

$(document).ready(function() {
  $('button[name="button"]').click(function(e) {
    $(e.currentTarget).parent().find('.template-options-dropdown').toggleClass('open');
  });
});
.boxes {
  list-style-type: none;
}

.boxes >li {
  float: left;
  width: 100px;
  height: 100px;
  background-color: red;
  margin: 5px;
  transform: translate(0, 0);
}

.download-container {
  background: rgba(40, 39, 39, 0.8);
  bottom: 0;
  position: absolute;
  text-align: center;
  width: 100%;
}

.download-container .dropdown-container {
  display: inline-block;
  position: relative;
}

.download-container .dropdown-container button {
  background: #0bb9ab;
  color: #fff;
  padding: 6px 12px;
}

.template-options-dropdown {
  list-style-type: none;
  text-align: left;
  padding: 0;
  position: absolute;
  background-color: #111;
  visibility: hidden;
}

.template-options-dropdown.open {
  visibility: visible;
}

.template-options-dropdown li a {
  color: white;
  text-decoration: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="boxes">
  <li>
    <div class="download-container">
      <div class="dropdown-container">
        <button type="button" name="button">Download</button>

        <ul class="template-options-dropdown">
          <li>
            <a href="#">Original</a>
          </li>
          <li>
            <a href="#">Thumb</a>
          </li>
          <li>
            <a href="#">Mobile</a>
          </li>
          <li>
            <a href="#">Tab</a>
          </li>
          <li>
            <a href="#">Web</a>
          </li>
          <li>
            <a href="#">Large web</a>
          </li>
        </ul>
      </div>
    </div>
  </li>
  <li><div class="download-container">
      <div class="dropdown-container">
        <button type="button" name="button">Download</button>

        <ul class="template-options-dropdown">
          <li>
            <a href="#">Original</a>
          </li>
          <li>
            <a href="#">Thumb</a>
          </li>
          <li>
            <a href="#">Mobile</a>
          </li>
          <li>
            <a href="#">Tab</a>
          </li>
          <li>
            <a href="#">Web</a>
          </li>
          <li>
            <a href="#">Large web</a>
          </li>
        </ul>
      </div>
    </div></li>
  <li><div class="download-container">
      <div class="dropdown-container">
        <button type="button" name="button">Download</button>

        <ul class="template-options-dropdown">
          <li>
            <a href="#">Original</a>
          </li>
          <li>
            <a href="#">Thumb</a>
          </li>
          <li>
            <a href="#">Mobile</a>
          </li>
          <li>
            <a href="#">Tab</a>
          </li>
          <li>
            <a href="#">Web</a>
          </li>
          <li>
            <a href="#">Large web</a>
          </li>
        </ul>
      </div>
    </div></li>
  <li><div class="download-container">
      <div class="dropdown-container">
        <button type="button" name="button">Download</button>

        <ul class="template-options-dropdown">
          <li>
            <a href="#">Original</a>
          </li>
          <li>
            <a href="#">Thumb</a>
          </li>
          <li>
            <a href="#">Mobile</a>
          </li>
          <li>
            <a href="#">Tab</a>
          </li>
          <li>
            <a href="#">Web</a>
          </li>
          <li>
            <a href="#">Large web</a>
          </li>
        </ul>
      </div>
    </div></li>
  <li><div class="download-container">
      <div class="dropdown-container">
        <button type="button" name="button">Download</button>

        <ul class="template-options-dropdown">
          <li>
            <a href="#">Original</a>
          </li>
          <li>
            <a href="#">Thumb</a>
          </li>
          <li>
            <a href="#">Mobile</a>
          </li>
          <li>
            <a href="#">Tab</a>
          </li>
          <li>
            <a href="#">Web</a>
          </li>
          <li>
            <a href="#">Large web</a>
          </li>
        </ul>
      </div>
    </div></li>
  <li><div class="download-container">
      <div class="dropdown-container">
        <button type="button" name="button">Download</button>

        <ul class="template-options-dropdown">
          <li>
            <a href="#">Original</a>
          </li>
          <li>
            <a href="#">Thumb</a>
          </li>
          <li>
            <a href="#">Mobile</a>
          </li>
          <li>
            <a href="#">Tab</a>
          </li>
          <li>
            <a href="#">Web</a>
          </li>
          <li>
            <a href="#">Large web</a>
          </li>
        </ul>
      </div>
    </div></li>
  <li><div class="download-container">
      <div class="dropdown-container">
        <button type="button" name="button">Download</button>

        <ul class="template-options-dropdown">
          <li>
            <a href="#">Original</a>
          </li>
          <li>
            <a href="#">Thumb</a>
          </li>
          <li>
            <a href="#">Mobile</a>
          </li>
          <li>
            <a href="#">Tab</a>
          </li>
          <li>
            <a href="#">Web</a>
          </li>
          <li>
            <a href="#">Large web</a>
          </li>
        </ul>
      </div>
    </div></li>
  <li><div class="download-container">
      <div class="dropdown-container">
        <button type="button" name="button">Download</button>

        <ul class="template-options-dropdown">
          <li>
            <a href="#">Original</a>
          </li>
          <li>
            <a href="#">Thumb</a>
          </li>
          <li>
            <a href="#">Mobile</a>
          </li>
          <li>
            <a href="#">Tab</a>
          </li>
          <li>
            <a href="#">Web</a>
          </li>
          <li>
            <a href="#">Large web</a>
          </li>
        </ul>
      </div>
    </div></li>
</ul>

【问题讨论】:

    标签: html css z-index css-transforms


    【解决方案1】:

    不幸的是,可能没有纯 CSS 的解决方案 - CSS3 过渡创建了一个新的堆叠上下文 - 请参阅相关文档描述和 this thread 以获得另一种效果: p>

    如果属性的值不同于 none,则为堆栈上下文 将被创建。

    来源:MDN

    您可以轻松地将那里的translate(0,0) 替换为position: relative,并将大于零的z-index 添加到.template-options-dropdown 以解决问题

    $(document).ready(function() {
      $('button[name="button"]').click(function(e) {
        $(e.currentTarget).parent().find('.template-options-dropdown').toggleClass('open');
      });
    });
    .boxes {
      list-style-type: none;
    }
    
    .boxes >li {
      float: left;
      width: 100px;
      height: 100px;
      background-color: red;
      margin: 5px;
      /*transform: translate(0, 0);*/
      position: relative; /*ADDED*/
    }
    
    .download-container {
      background: rgba(40, 39, 39, 0.8);
      bottom: 0;
      position: absolute;
      text-align: center;
      width: 100%;
    }
    
    .download-container .dropdown-container {
      display: inline-block;
      position: relative;
    }
    
    .download-container .dropdown-container button {
      background: #0bb9ab;
      color: #fff;
      padding: 6px 12px;
    }
    
    .template-options-dropdown {
      list-style-type: none;
      text-align: left;
      padding: 0;
      position: absolute;
      background-color: #111;
      visibility: hidden;
      z-index: 2;/*ADDED*/
    }
    
    .template-options-dropdown.open {
      visibility: visible;
    }
    
    .template-options-dropdown li a {
      color: white;
      text-decoration: none;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul class="boxes">
      <li>
        <div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div>
      </li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
    </ul>

    一个 hacky 解决方案,它弄乱了 包装 - 您可以添加更多转换:

    1. ul 添加scaleY(-1) 以使列表向后,因为具有较高索引的列表项会超过具有较低索引的列表项。

    2. li 中添加倒置scaleY(-1),让世界恢复正常。

    3. 清除 li 浮动。

    请看下面的演示:

    $(document).ready(function() {
      $('button[name="button"]').click(function(e) {
        $(e.currentTarget).parent().find('.template-options-dropdown').toggleClass('open');
      });
    });
    .boxes {
      list-style-type: none;
      transform: scaleY(-1);/*ADDED*/
    }
    .boxes:after {/*ADDED*/
      content: '';
      clear: both;
      display: block;
    }
    
    .boxes >li {
      float: left;
      width: 100px;
      height: 100px;
      background-color: red;
      margin: 5px;
      transform: translate(0, 0) scaleY(-1);/*ADDED*/
    }
    
    .download-container {
      background: rgba(40, 39, 39, 0.8);
      bottom: 0;
      position: absolute;
      text-align: center;
      width: 100%;
    }
    
    .download-container .dropdown-container {
      display: inline-block;
      position: relative;
    }
    
    .download-container .dropdown-container button {
      background: #0bb9ab;
      color: #fff;
      padding: 6px 12px;
    }
    
    .template-options-dropdown {
      list-style-type: none;
      text-align: left;
      padding: 0;
      position: absolute;
      background-color: #111;
      visibility: hidden;
    }
    
    .template-options-dropdown.open {
      visibility: visible;
    }
    
    .template-options-dropdown li a {
      color: white;
      text-decoration: none;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul class="boxes">
      <li>
        <div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div>
      </li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
    </ul>

    如果translate(0,0)仍然无法删除,你别无选择,只能使用javascript:

    1. 通过提供等于列表中索引的z-index 来反转列表堆叠。

    2. position:relative 添加到li

    请看下面的演示:

    $(document).ready(function() {
    
      // ADDED
      $($('ul.boxes > li').get().reverse()).each(function(index){
         $(this).css('z-index', index);
      });
    
      $('button[name="button"]').click(function(e) {
        $(e.currentTarget).parent().find('.template-options-dropdown').toggleClass('open');
      });
    });
    .boxes {
      list-style-type: none;
    }
    
    .boxes >li {
      float: left;
      width: 100px;
      height: 100px;
      background-color: red;
      margin: 5px;
      transform: translate(0, 0);
      position: relative;/*ADDED*/
    }
    
    .download-container {
      background: rgba(40, 39, 39, 0.8);
      bottom: 0;
      position: absolute;
      text-align: center;
      width: 100%;
    }
    
    .download-container .dropdown-container {
      display: inline-block;
      position: relative;
    }
    
    .download-container .dropdown-container button {
      background: #0bb9ab;
      color: #fff;
      padding: 6px 12px;
    }
    
    .template-options-dropdown {
      list-style-type: none;
      text-align: left;
      padding: 0;
      position: absolute;
      background-color: #111;
      visibility: hidden;
    }
    
    .template-options-dropdown.open {
      visibility: visible;
    }
    
    .template-options-dropdown li a {
      color: white;
      text-decoration: none;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul class="boxes">
      <li>
        <div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div>
      </li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
      <li><div class="download-container">
          <div class="dropdown-container">
            <button type="button" name="button">Download</button>
    
            <ul class="template-options-dropdown">
              <li>
                <a href="#">Original</a>
              </li>
              <li>
                <a href="#">Thumb</a>
              </li>
              <li>
                <a href="#">Mobile</a>
              </li>
              <li>
                <a href="#">Tab</a>
              </li>
              <li>
                <a href="#">Web</a>
              </li>
              <li>
                <a href="#">Large web</a>
              </li>
            </ul>
          </div>
        </div></li>
    </ul>

    【讨论】:

      【解决方案2】:

      z-index 仅适用于位置属性已明确设置为绝对、固定或相对的元素。所以将position: relative 应用于li 元素。

      对于固定数量的元素,你可以试试

      .boxes li:nth-child(1) {
        z-index: 8;
      }
      
      .boxes li:nth-child(2) {
        z-index: 7;
      }
      
      .boxes li:nth-child(3) {
        z-index: 6;
      }
      
      .boxes li:nth-child(4) {
        z-index: 5;
      }
      
      .boxes li:nth-child(5) {
        z-index: 4;
      }
      
      .boxes li:nth-child(6) {
        z-index: 3;
      }
      
      .boxes li:nth-child(7) {
        z-index: 2;
      }
      
      .boxes li:nth-child(8) {
        z-index: 1;
      }
      

      或者对于未知数量的元素,您可以通过脚本动态应用它。

      $(document).ready(function() {
        $('button[name="button"]').click(function(e) {
          $(e.currentTarget).parent().find('.template-options-dropdown').toggleClass('open');
        });
      });
      .boxes {
        list-style-type: none;
      }
      
      .boxes >li {
        float: left;
        width: 100px;
        height: 100px;
        background-color: red;
        margin: 5px;
        transform: translate(0, 0);
        position: relative;
      }
      
      .download-container {
        background: rgba(40, 39, 39, 0.8);
        bottom: 0;
        position: absolute;
        text-align: center;
        width: 100%;
      }
      
      .download-container .dropdown-container {
        display: inline-block;
        position: relative;
      }
      
      .download-container .dropdown-container button {
        background: #0bb9ab;
        color: #fff;
        padding: 6px 12px;
      }
      
      .template-options-dropdown {
        list-style-type: none;
        text-align: left;
        padding: 0;
        position: absolute;
        background-color: #111;
        visibility: hidden;
      }
      
      .template-options-dropdown.open {
        visibility: visible;
      }
      
      .template-options-dropdown li a {
        color: white;
        text-decoration: none;
      }
      
      .boxes li:nth-child(1) {
        z-index: 8;
      }
      
      .boxes li:nth-child(2) {
        z-index: 7;
      }
      
      .boxes li:nth-child(3) {
        z-index: 6;
      }
      
      .boxes li:nth-child(4) {
        z-index: 5;
      }
      
      .boxes li:nth-child(5) {
        z-index: 4;
      }
      
      .boxes li:nth-child(6) {
        z-index: 3;
      }
      
      .boxes li:nth-child(7) {
        z-index: 2;
      }
      
      .boxes li:nth-child(8) {
        z-index: 1;
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <ul class="boxes">
        <li>
          <div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div>
        </li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
      </ul>

      【讨论】:

      • 感谢您的回答阿努拉格。问题是那些 li 可能或多或少,所以......在那种情况下,这种解决方案并不好。
      • 就像我在答案中提到的,对于未知数量的元素,您可以使用脚本动态应用样式。
      • 是的,对不起。我试图用 CSS 找到解决方案 :) 谢谢!
      【解决方案3】:

      你很接近,但如果是我,我会在 &lt;li&gt;div.download-container 上设置 .open 类,使用它设置一个巨大的 z-index,然后使用级联打开子-菜单。我们还必须在我们设置 z-index 的元素上设置 position:relative;,否则 z-index 什么都不做。

      例子:

      $(document).ready(function() {
        $('button[name="button"]').click(function(e) {
          $(e.currentTarget).parents('li').toggleClass('open');
        });
      });
      .boxes {
        list-style-type: none;
      }
      
      .boxes >li {
        float: left;
        width: 100px;
        height: 100px;
        background-color: red;
        margin: 5px;
        transform: translate(0, 0);
        position:relative;
      }
      
      .boxes >li.open {
          z-index:500;
      }
      
      .download-container {
        background: rgba(40, 39, 39, 0.8);
        bottom: 0;
        position: absolute;
        text-align: center;
        width: 100%;
      }
      
      .download-container .dropdown-container {
        display: inline-block;
        position: relative;
      }
      
      .download-container .dropdown-container button {
        background: #0bb9ab;
        color: #fff;
        padding: 6px 12px;
      }
      
      .template-options-dropdown {
        list-style-type: none;
        text-align: left;
        padding: 0;
        position: absolute;
        background-color: #111;
        visibility: hidden;
      }
      
      .boxes li.open .template-options-dropdown {
        visibility: visible;
      }
      
      .template-options-dropdown li a {
        color: white;
        text-decoration: none;
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <ul class="boxes">
        <li>
          <div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div>
        </li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
        <li><div class="download-container">
            <div class="dropdown-container">
              <button type="button" name="button">Download</button>
      
              <ul class="template-options-dropdown">
                <li>
                  <a href="#">Original</a>
                </li>
                <li>
                  <a href="#">Thumb</a>
                </li>
                <li>
                  <a href="#">Mobile</a>
                </li>
                <li>
                  <a href="#">Tab</a>
                </li>
                <li>
                  <a href="#">Web</a>
                </li>
                <li>
                  <a href="#">Large web</a>
                </li>
              </ul>
            </div>
          </div></li>
      </ul>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        • 1970-01-01
        • 2019-11-17
        • 2020-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多