代码之家  ›  专栏  ›  技术社区  ›  JV Lobo

具有transform属性的元素内的子元素z索引

  •  2
  • JV Lobo  · 技术社区  · 7 年前

    如代码段所示,我有一些带有

    transform: translate(0,0);
    

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

    enter image description here

    我的代码有更多内容,代码片段只是一个示例。我无法摆脱transform属性。

    干杯

    $(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>
    3 回复  |  直到 6 年前
        1
  •  3
  •   kukkuz    7 年前

    不幸的是 大概 新堆叠上下文 this thread

    如果属性的值不同于“无”,则堆栈上下文

    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>

    黑客 解决方案 包装

    1. 添加 scaleY(-1) 对于 ul 由于索引较高的列表项高于索引较低的列表项,因此将列表向后列出。

    2. 添加反转 scaleY(-1) li

    3. 浮动。

    $('button[name=“button”]”)。点击(功能(e){
    $(e.currentTarget)。父项()。查找(“.template options下拉列表”)。toggleClass(“打开”);
    });
    .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;
    }
    <脚本src=”https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“>lt;/script>
    <ul class=“box”>
    <李>
    <div class=“下拉容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <ul class=“模板选项下拉列表”>
    <a href=“#”>原始(</a>
    <李>
    <a href=“#”>移动(&L)/a>
    </李>
    <a href=“#”>选项卡(<)/a>
    </李>
    <李>
    <a href=“#”>大型web</a>
    </ul>
    </div>
    </李>
    <李>&书信电报;div class=“下载容器”>
    <div class=“下拉容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <ul class=“模板选项下拉列表”>
    <a href=“#”>原始(</a>
    <李>
    <a href=“#”>拇指(<)/a>
    </李>
    <a href=“#”>移动(&L)/a>
    </李>
    <李>
    </李>
    <a href=“#”>Web</a>
    </李>
    <李>
    </李>
    </ul>
    </div></李>
    <李>&书信电报;div class=“下载容器”>
    
    <李>
    </李>
    <李>
    <a href=“#”>拇指(<)/a>
    </李>
    <李>
    <李>
    </李>
    <李>
    <a href=“#”>Web</a>
    <李>
    </李>
    </ul>
    </div>
    <李>&书信电报;div class=“下载容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <ul class=“模板选项下拉列表”>
    <a href=“#”>原始(</a>
    </李>
    <李>
    <李>
    <a href=“#”>移动(&L)/a>
    <李>
    <a href=“#”>选项卡(<)/a>
    <李>
    </李>
    <李>
    </李>
    </ul>
    </div></李>
    <div class=“下拉容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <ul class=“模板选项下拉列表”>
    <李>
    <李>
    </李>
    <a href=“#”>移动(&L)/a>
    <李>
    <a href=“#”>选项卡(<)/a>
    <a href=“#”>Web</a>
    <李>
    <a href=“#”>大型web</a>
    </ul>
    </div>
    </div></李>
    <div class=“下拉容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <李>
    </李>
    <李>
    <李>
    </李>
    <李>
    </李>
    <李>
    <a href=“#”>Web</a>
    <a href=“#”>大型web</a>
    </ul>
    </div>
    <李>&书信电报;div class=“下载容器”>
    <div class=“下拉容器”>
    
    <ul class=“模板选项下拉列表”>
    <李>
    </李>
    <李>
    <a href=“#”>拇指(<)/a>
    <a href=“#”>移动(&L)/a>
    <李>
    <a href=“#”>Web</a>
    </李>
    <李>
    </李>
    </ul>
    </div>
    </div></李>
    <李>&书信电报;div class=“下载容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <ul class=“模板选项下拉列表”>
    <李>
    </李>
    <李>
    </李>
    <李>
    <李>
    </李>
    <a href=“#”>大型web</a>
    </李>
    </ul>
    </div>
    </div></李>

    如果 仍然无法删除,您除了使用javascript之外别无选择:

    1. z指数 等于列表中的索引。

    2. position:relative

    请参阅下面的演示:

    $(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;
    }
    <<李>
    <div class=“下拉容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <李>
    <a href=“#”>原始(</a>
    <李>
    <a href=“#”>拇指(<)/a>
    <李>
    <a href=“#”>移动(&L)/a>
    <李>
    </李>
    <李>
    <a href=“#”>大型web</a>
    </李>
    </ul>
    </div>
    </李>
    <李>&书信电报;div class=“下载容器”>
    <div class=“下拉容器”>
    
    <李>
    <a href=“#”>原始(</a>
    <李>
    </李>
    <李>
    </李>
    <李>
    <a href=“#”>选项卡(<)/a>
    <李>
    </李>
    <李>
    </李>
    </div>
    </div></李>
    <李>&书信电报;div class=“下载容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <ul class=“模板选项下拉列表”>
    <a href=“#”>原始(</a>
    </李>
    <a href=“#”>拇指(<)/a>
    </李>
    <a href=“#”>移动(&L)/a>
    </李>
    </李>
    <李>
    </李>
    <a href=“#”>大型web</a>
    </ul>
    
    <ul class=“模板选项下拉列表”>
    <李>
    </李>
    </李>
    <a href=“#”>移动(&L)/a>
    </李>
    </李>
    <a href=“#”>Web</a>
    <李>
    </李>
    </ul>
    </div></李>
    <div class=“下拉容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <ul class=“模板选项下拉列表”>
    <李>
    </李>
    <a href=“#”>拇指(<)/a>
    </李>
    <a href=“#”>移动(&L)/a>
    </李>
    <a href=“#”>选项卡(<)/a>
    </李>
    <a href=“#”>Web</a>
    </李>
    <李>
    </李>
    </div>
    </div></李>
    <李>&书信电报;div class=“下载容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <李>
    <李>
    </李>
    <a href=“#”>移动(&L)/a>
    </李>
    </李>
    <李>
    </李>
    <a href=“#”>大型web</a>
    </李>
    </ul>
    </div>
    <李>&书信电报;div class=“下载容器”>
    <div class=“下拉容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <ul class=“模板选项下拉列表”>
    <a href=“#”>原始(</a>
    </李>
    <李>
    </李>
    <a href=“#”>移动(&L)/a>
    <李>
    <李>
    <a href=“#”>Web</a>
    <a href=“#”>大型web</a>
    </李>
    </ul>
    <div class=“下拉容器”>
    <按钮类型;下载(<)/按钮(>);
    
    <ul class=“模板选项下拉列表”>
    <a href=“#”>原始(</a>
    </李>
    <a href=“#”>拇指(<)/a>
    <a href=“#”>移动(&L)/a>
    <a href=“#”>选项卡(<)/a>
    </李>
    </李>
    <李>
    </李>
    </div>
    </div></李>
        2
  •  1
  •   user4447799 user4447799    7 年前

    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>
        3
  •  1
  •   John B    7 年前

    你很接近,但如果是我,我会 .open 在任何一个 <li> div.download-container ,使用它设置一个巨大的z索引,并使用级联打开子菜单。我们还必须设置 position:relative;

    $(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>