【css3】神奇的3*3根据父节点宽度自适应的盒子

3 篇文章 0 订阅

神奇的3*3盒子根据父节点自适应宽度。

  

 代码

嵌套需要在里面的盒子absolute,否则padding会互相叠加导致换行。

<template>
 
 
    <div class="cube-box" style="width: 80%;margin: 0 auto">
      <div class="cube  ">
        <div class="cube-inner">
          <div class="cube"></div>
          <div class="cube"></div>
          <div class="cube"></div>
          <div class="cube"></div>
          <div class="cube"></div>
          <div class="cube"></div>
          <div class="cube"></div>
          <div class="cube"></div>
          <div class="cube"></div>
        </div>
      </div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
      <div class="cube"></div>
    </div>
 

 
</template>
 
<style scoped>
.cube {
  width: 33.33333333333%;
  display: inline-block;
  box-sizing: border-box;
  font-size: 0;
  box-shadow: inset 0 0 0 1px #ffffff;
  padding-bottom: 33.33333333333%;
  overflow: hidden;
  position: relative;

}

.cube-inner {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}

.cube-box {
  font-size: 0;
}
</style>

 这是table版本的,嵌套的话也是需要absolute小盒子再嵌套一次。

 <table>
      <tbody>
      <tr>
        <td>`</td>
        <td>`</td>
        <td>`</td>
      </tr>
      <tr>
        <td>`</td>
        <td>`</td>
        <td>`</td>
      </tr>
      <tr>
        <td>`</td>
        <td>`</td>
        <td>`</td>
      </tr>
      <tr>
        <td>`</td>
        <td>`</td>
        <td>`</td>
      </tr>
      </tbody>
    </table>

tbody, table, tr {
  width: 100%;
  border-collapse: collapse;
}

tbody {


}

td {
  padding-bottom: 33.33333333333%;
  border: 1px solid crimson;
  position: relative;
}

这是我经过各种微调后理想效果之一,但是还没到。

 

.cube {
  width: 33.33333333333%;
  display: inline-block;
  box-sizing: border-box;
  font-size: 0;
  /*box-shadow: inset 0 0 0 1px #ffffff;*/
  padding-bottom: 33.33333333333%;
  overflow: hidden;
  position: relative;

}
.text-mid{
  display: grid;
  align-items: center;
  justify-items: center;
  color: white;
  box-sizing: border-box;
  padding: 5px;
  font-size: 1rem;
}
.cube-inner {
  position: absolute;
  top: 5px;
  right: 5px;
  bottom:  5px;
  left:  5px;
}
.cube-inner-image{
  object-fit: cover;
  width: 100%;
  border-radius: 10px;
  overflow: hidden;
  height: 100%;
}
.cube-box {
  font-size: 0;
  padding: 5px;
  border:1px solid  #42b983;
}
    <div class="cube-box" style="width: 80%;margin: 0 auto">
      <div class="cube  ">
        <div class="cube-inner">
          <div class="cube">
            <div class="cube-inner">
              <img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=2121915427,2168624551&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666112400&t=36caa99d55237d803431ecaf4abbce96"/>
            </div>
          </div>
          <div class="cube">
            <div class="cube-inner">
              <img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=476266673,1542201690&fm=253&fmt=auto&app=138&f=JPEG?w=270&h=185"/>
            </div>
          </div>
          <div class="cube">
            <div class="cube-inner">
              <img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=464736753,4100005328&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=519"/>
            </div>
          </div>
          <div class="cube">
            <div class="cube-inner">
              <img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=2880576921,3981259860&fm=253&fmt=auto&app=138&f=JPEG?w=371&h=500"/>
            </div>
          </div>
          <div class="cube">
            <div class="cube-inner">
              <img alt="" class="cube-inner-image" src="https://img0.baidu.com/it/u=810480749,3476325787&fm=253&fmt=auto&app=138&f=JPEG?w=427&h=640"/>
            </div>
          </div>
          <div class="cube">
            <div class="cube-inner">
              <img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=1561320362,1562554041&fm=253&fmt=auto&app=138&f=JPEG?w=336&h=512"/>
            </div>
          </div>
          <div class="cube">
            <div class="cube-inner">
              <img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=1331722341,1941914216&fm=253&fmt=auto&app=138&f=JPEG?w=120&h=160"/>
            </div>
          </div>

          <div class="cube">
            <div class="cube-inner">
              <img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=3914701278,356238033&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800"/>
            </div>
          </div>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=2121915427,2168624551&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666112400&t=36caa99d55237d803431ecaf4abbce96"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner text-mid">我的应用</div>
      </div>
      <div class="cube"> <div class="cube-inner text-mid">我的应用</div></div>
      <div class="cube"> <div class="cube-inner text-mid">我的应用我的应用我的应用我的应用</div></div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=3914701278,356238033&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img0.baidu.com/it/u=934498461,73020862&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=700"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img0.baidu.com/it/u=3934080263,2967130006&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=933"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=780952297,1200937487&fm=253&fmt=auto&app=138&f=JPEG?w=224&h=305"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=3665616389,614777451&fm=253&fmt=auto&app=138&f=JPEG?w=490&h=600"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=476266673,1542201690&fm=253&fmt=auto&app=138&f=JPEG?w=270&h=185"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=464736753,4100005328&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=519"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=2880576921,3981259860&fm=253&fmt=auto&app=138&f=JPEG?w=371&h=500"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img0.baidu.com/it/u=810480749,3476325787&fm=253&fmt=auto&app=138&f=JPEG?w=427&h=640"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=1561320362,1562554041&fm=253&fmt=auto&app=138&f=JPEG?w=336&h=512"/>
        </div>
      </div>
      <div class="cube">
        <div class="cube-inner">
          <img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=1331722341,1941914216&fm=253&fmt=auto&app=138&f=JPEG?w=120&h=160"/>
        </div>
      </div>
    </div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值