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

Flexbox内边框和负边距

  •  0
  • Matt  · 技术社区  · 8 年前

    margin 基于此隐藏外部边界 codepen

    .view {
      display: flex;
      flex-direction: column;
      border: none;
    }
    
    .container {
      display: flex;
      flex-wrap: wrap;
      margin: 0 -5px -5px 0;
    }
    
    .content {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      flex: 1;
      background: yellow;
      padding: 20px;
      border-right: 1px solid black;
      border-bottom: 1px solid black;
    }
    
    .head {
      text-align: center;
    }
    <div class="view">
    <div class="container">
       <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Total balance</div>
       </div>
       <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Available balance</div>
       </div>
       <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Orders</div>
       </div>
       <div class="content">
          <div class="sc-eTyWNx dIQzIE">500</div>
          <div class="head">Wallet balance</div>
       </div>
       <div class="content">
          <button class="sc-gzVnrw cnAjsC" type="button">Send</button>
       </div>
    </div>
    </div>
    2 回复  |  直到 8 年前
        1
  •  1
  •   Temani Afif    8 年前

    你只是忘了添加 overflow:hidden

    .view {
      display: flex;
      flex-direction: column;
      border: none;
    }
    
    .container {
      display: flex;
      flex-wrap: wrap;
      margin: 0 -5px -5px 0;
    }
    
    .content {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      flex: 1;
      background: yellow;
      padding: 20px;
      border-right: 1px solid black;
      border-bottom: 1px solid black;
    }
    
    .head {
      text-align: center;
    }
    <div class="view">
      <div class="container">
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Total balance</div>
        </div>
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Available balance</div>
        </div>
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Orders</div>
        </div>
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">500</div>
          <div class="head">Wallet balance</div>
        </div>
        <div class="content">
          <button class="sc-gzVnrw cnAjsC" type="button">Send</button>
        </div>
      </div>
    </div>

    在这种情况下,您将保留黄色,这是另一种方法,您可以使用伪元素来覆盖不需要的边距:

    .container {
      display: flex;
      flex-wrap: wrap;
      position:relative;
    }
    .container:before {
      content:"";
      position:absolute;
      top:0;
      left:0;
      right:0;
      bottom:0;
      border:1px solid yellow;
    }
    
    .content {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      flex: 1;
      background: yellow;
      padding: 20px;
      border-left: 1px solid black;
      border-bottom: 1px solid black;
    }
    
    .head {
      text-align: center;
    }
    <div class="container">
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Total balance</div>
        </div>
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Available balance</div>
        </div>
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Orders</div>
        </div>
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">500</div>
          <div class="head">Wallet balance</div>
        </div>
        <div class="content">
          <button class="sc-gzVnrw cnAjsC" type="button">Send</button>
        </div>
      </div>
        2
  •  0
  •   ksav    8 年前

    .content (全部 除了

    .view {
      display: flex;
      flex-direction: column;
      border: none;
    }
    
    .container {
      display: flex;
      flex-wrap: wrap;
    }
    
    .content {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      flex: 1;
      background: yellow;
      padding: 20px;
    }
    
    .content:not(:last-child) {
      border-right: 1px solid black;
    }
    
    .head {
      text-align: center;
    }
    <div class="view">
      <div class="container">
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Total balance</div>
        </div>
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Available balance</div>
        </div>
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">0</div>
          <div class="head">Orders</div>
        </div>
        <div class="content">
          <div class="sc-eTyWNx dIQzIE">500</div>
          <div class="head">Wallet balance</div>
        </div>
        <div class="content">
          <button class="sc-gzVnrw cnAjsC" type="button">Send</button>
        </div>
      </div>
    </div>