前端css卡⽚card多⾏排列⾃适应布局
⼀直寻card排列的完美解决⽅案,之前是⽤js实现⽼是会出bug,这⾥介绍⼀种纯css实现
这⾥感谢好提供的⽅法
先放代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.test{
float: left;
width: 25%;
box-sizing: border-box;
padding: 10px;
min-width: 150px;
}
.container{
width: 100%;
}
@media (max-width:615px){
.test{
float: left;
width: 33%;
box-sizing: border-box;
padding: 10px;
min-width: 150px;
}
}
@media (max-width:465px){
.test{
float: left;
width: 50%;
box-sizing: border-box;
padding: 10px;
min-width: 150px;
borderbox}
}
@media (max-width:315px){
.test{
float: left;
width: 100%;
box-sizing: border-box;
padding: 10px;
}
}
</style>
</head>
<body>
<div class="container">
<div class="test">
<img src="./640.webp" />
</div>
<div class="test">
<img src="./640.webp" />
</div>
<div class="test">
<img src="./640.webp" />
</div>
<div class="test">
<img src="./640.webp" />
</div>
</div>
</body>
</html>
再放效果
⼀⾏
第⼆⾏
下⾯是说明,不需要的可以不看了
1、⽤到的技术是响应式布局(就是监听页⾯宽度实现不同变化)
2、这⾥⽤的是float,当然⽤flex也是⼀样的
3、其实不是完美的,⽐如三个⼀排的时候是33%,所以还剩下1%在最后⾯,不影响⼤局
4、@media中的max-width值得由来:
⽐如这⾥设置的每个元素的最⼩宽度是150px,也就是再低于这个值就会换⾏,
当有四个换到三个的临界值是 150 * 4 = 600 。也就是说再⼩就要换⾏了,这个时候我们主动换⾏,⽐如上⾯的在615的时候就把宽度设置为33%,这样就提前完成转换,实现完美衔接。
同理三到⼆就是 150 * 3 = 450 。提前15px 就是 465;其它同理
5、这⾥计算的宽度是浏览器可视范围的宽度,所有计算上⾯值得时候要加上其它布局的宽度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论