代码之家  ›  专栏  ›  技术社区  ›  Jimmy

具有相对和绝对定位的元素

  •  0
  • Jimmy  · 技术社区  · 7 年前

    我想渲染一些元素,这些元素相对相邻,但绝对位于其他元素之上。你可以看到 here 为我想呈现的和下面的小提琴(或 this codepen )因为我试图让它工作。谢谢!

    .row {
      display: flex;
    }
    
    .box {
      height: 100px;
      width: 100px;
      background: yellow;
      border: 2px solid red;
      margin: 5px;
    }
    
    .tallBox {
      height: 150px;
      width: 100px;
      background: orange;
      border: 2px solid green;
      margin: 5px;
    }
    
    .bar {
      height: 100px;
      width: 442px;
      background: pink;
      border: 2px solid red;
      margin: 5px;
    }
    
    .group {
      display: flex;
      // position: absolute;
    }
    
    .gap {
      height: 100px;
    }
    <h2>Proposal: </h2>
    <img src="https://i.imgur.com/n1juYRj.png">
    <div class="gap"></div>
    
    <h2>Current rendering without any changing any position properties:</h2>
    <section class="row">
      <div class="box"></div>
      <div class="box"></div>
      <div class="box"></div>
      <div class="box"></div>
    </section>
    <section class="row">
      <div class="bar"></div>
    </section>
    
    <div class="gap"></div>
    
    <h2>Attempt:</h2>
    <section class="row special">
      <div class="box"></div>
      <div class="group">
        <div class="tallBox"></div>
        <div class="tallBox"></div>
      </div>
      <div class="box"></div>
    </section>
    <section class="row">
      <div class="bar"></div>
    </section>
    2 回复  |  直到 7 年前
        1
  •  1
  •   Temani Afif    7 年前

    您可能会考虑负边距,并避免使用 position:absolute

    .row {
      display: flex;
    }
    
    .box {
      height: 100px;
      width: 100px;
      background: yellow;
      border: 2px solid red;
      margin: 5px;
    }
    
    .tallBox {
      height: 150px;
      width: 100px;
      background: orange;
      border: 2px solid green;
      margin: 5px;
      margin-bottom:-50px;
    }
    
    .bar {
      height: 100px;
      width: 442px;
      background: pink;
      border: 2px solid red;
      margin: 5px;
    }
    
    .group {
      display: flex;
      z-index:2;
    }
    
    .gap {
      height: 100px;
    }
    <section class="row special">
      <div class="box"></div>
      <div class="group">
        <div class="tallBox"></div>
        <div class="tallBox"></div>
      </div>
      <div class="box"></div>
    </section>
    <section class="row">
      <div class="bar"></div>
    </section>
        2
  •  0
  •   Jimmy    7 年前

    以下是我的问题的解决方案:

    .row {
      display: flex;
    }
    
    .box {
      height: 100px;
      width: 100px;
      background: yellow;
      border: 2px solid red;
      margin: 5px;
    }
    
    .tallBox {
      height: 150px;
      background: orange;
      border: 2px solid green;
      width: 100px;
      position: absolute
    }
    
    .tallBox-container {
      positin: relative;
      width: 100px;
      margin: 5px;
    }
    
    .bar {
      height: 100px;
      width: 442px;
      background: pink;
      border: 2px solid red;
      margin: 5px;
    }
    
    
    .group {
      display: flex;
      // position: absolute;
    }
    
    .gap {
      height: 100px;
    }
    <section class="row special">
      <div class="box"></div>
      <div class="group">
        <div class="tallBox-container">   
          <div class="tallBox"></div>
        </div>
        <div class="tallBox-container"> 
          <div class="tallBox"></div>
        </div>
      </div>
      <div class="box"></div>
    </section>
    <section class="row">
      <div class="bar"></div>
    </section>