【css布局】卡片布局

重点梳理:

1、每个卡片按25%的宽度设置 (如何一行3个的话就是 33.333333%)
2、卡片之间的间距用padding设置
3、然后设置 box-sizing:border-box

.card-container {
  width: 25%;
  padding: 14px 16px;
  box-sizing: border-box;
}

4、去掉每行最左边卡片的左边的间距(如何一行3个的话就是 :nth-child(3n+1))

.card-container:nth-child(4n+1) {
  padding-left: 0;
}

5、去掉每行最右边卡片的右边的间距(如何一行3个的话就是 :nth-child(3n))

.card-container:nth-child(4n) {
  padding-right: 0;
}

大概效果图:

在这里插入图片描述

html代码:

<div class="cards">
  <div class="card-container">
    <div class="card">
      <a href="#" class="card-cnt">
        <img src="https://via.placeholder.com/150" class="card-cnt__icon" />
        <div class="card-cnt__title">内容内内容容</div>
      </a>
    </div>
  </div>
  <div class="card-container">
    <div class="card">
      <a href="#" class="card-cnt">
        <img src="https://via.placeholder.com/150" class="card-cnt__icon" />
        <div class="card-cnt__title">内容内内容容</div>
      </a>
    </div>
  </div>
  <div class="card-container">
    <div class="card">
      <a href="#" class="card-cnt">
        <img src="https://via.placeholder.com/150" class="card-cnt__icon" />
        <div class="card-cnt__title">内容内内容容</div>
      </a>
    </div>
  </div>
  <div class="card-container">
    <div class="card">
      <a href="#" class="card-cnt">
        <img src="https://via.placeholder.com/150" class="card-cnt__icon" />
        <div class="card-cnt__title">内容内内容容</div>
      </a>
    </div>
  </div>
  <div class="card-container">
    <div class="card">
      <a href="#" class="card-cnt">
        <img src="https://via.placeholder.com/150" class="card-cnt__icon" />
        <div class="card-cnt__title">内容内内容容</div>
      </a>
    </div>
  </div>
  <div class="card-container">
    <div class="card">
      <a href="#" class="card-cnt">
        <img src="https://via.placeholder.com/150" class="card-cnt__icon" />
        <div class="card-cnt__title">内容内内容容</div>
      </a>
    </div>
  </div>
  <div class="card-container">
    <div class="card">
      <a href="#" class="card-cnt">
        <img src="https://via.placeholder.com/150" class="card-cnt__icon" />
        <div class="card-cnt__title">内容内内容容</div>
      </a>
    </div>
  </div>
  <div class="card-container">
    <div class="card">
      <a href="#" class="card-cnt">
        <img src="https://via.placeholder.com/150" class="card-cnt__icon" />
        <div class="card-cnt__title">内容内内容容</div>
      </a>
    </div>
  </div>
</div>

css代码:

.cards {
  display: flex;
  flex-wrap: wrap;
}

.card-container {
  padding: 14px 16px;
  box-sizing: border-box;
  width: 25%;
  min-height: 324px; // 卡片的高度+padding上下的间距(296px+14px*2)
}

.card-container:nth-child(4n+1) {
  padding-left: 0;
}

.card-container:nth-child(4n) {
  padding-right: 0;
}

.card {
  width: 100%;
  height: 100%;  // 假设卡片高度为 296px
  background: #FFFFFF;
  box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.06);
  border-radius: 16px;
  padding: 48px 24px 20px;
  box-sizing: border-box;
  cursor: pointer;
}

.card:hover {
  box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.12);
  transition-duration: 0.5s;
}

.card-cnt {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.card-cnt__icon {
  width: 96px;
  height: 96px;
}

.card-cnt__title {
  font-family: PingFangSC-Medium;
  font-weight: bold;
  font-size: 20px;
  color: #4A4A4A;
  letter-spacing: 0;
  text-align: center;
  line-height: 20px;
  padding-top: 32px;
}

最终效果:

在这里插入图片描述

说明:

1、宽度能用百分比尽量用百分比,定死宽度通常适配性比较差
2、使用百分比时如果遇到中间有缝隙和卡片的情况,可以考虑外面多套一层,设置box-sizing:border-box,使用padding即可,并且缝隙的padding上下左右都设置,代码维护会更容易

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值