代码之家  ›  专栏  ›  技术社区  ›  Franz Wong

“翻译”盒子的盒子阴影落在兄弟盒子上

  •  1
  • Franz Wong  · 技术社区  · 7 年前

    盒子的影子落在兄弟盒子上。我可以用 z-index 去解决它。但是,如果其中一个框被平移(例如,当鼠标移到上方时向上移动一点),阴影会再次落在兄弟姐妹身上。如何解决这个问题?谢谢。

    .container {
      margin: 30px;
      padding: 10px;
    }
    
    div.shadow {
      height: 100px;
      width: 100px;
      background-color: #ff0;
      float: left;
      margin: 4px;
    }
    
    .shadow {
      position: relative;
    }
    
    .shadow:after {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      z-index: -1;
      box-shadow: 0px 10px 1000px #000;
    }
    
    .shadow:hover {
      transform: translateY(-3px);
    }
    
    .shadow:hover::after {
      box-shadow: 0px 20px 1500px #000;
    }
    <div class="container">
      <div class="shadow"></div>
      <div class="shadow"></div>
      <div class="shadow"></div>
      <div class="shadow"></div>
    </div>
    1 回复  |  直到 7 年前
        1
  •  2
  •   Ori Drori    7 年前

    stacking context ,将 .shadow 元素在它的同级之上。为了防止这种情况,您可以使用转换以外的其他属性( top: -3px 例如):

    .container {
      margin: 30px;
      padding: 10px;
    }
    
    .shadow {
      position: relative;
      height: 100px;
      width: 100px;
      background-color: #ff0;
      float: left;
      margin: 4px;
    }
    
    .shadow::after {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      z-index: -1;
      box-shadow: 0px 10px 1000px #000;
    }
    
    .shadow:hover {
      top: -3px;
    }
    
    .shadow:hover::after {
      box-shadow: 0px 20px 1500px #000;
    }
    <div class="container">
      <div class="shadow"></div>
      <div class="shadow"></div>
      <div class="shadow"></div>
      <div class="shadow"></div>
    </div>