问题描述
在做商品列表时,发现div下的所有商品(ul)已经按照flex+换行成功布局,但是ul中的两个子元素:img图片标签和span文本标签不能正常居中显示
做过的尝试
尝试修改ul的宽度让它和子元素的图片一样宽,但是设置失败,加上!important也没有效果
尝试给ul也设置flex布局,主轴方向为垂直方向,然后设置居中,也不行
问题解决
使用div,不用ul(使用ul的失败原因仍未知)
完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
ul,
li {
list-style-type: none;
}
img {
width: 50px;
height: 50px;
border-radius: 50%;
}
#container {
width: 800px;
height: 450px;
background-color: bisque;
}
.one,
.two {
border: 1px solid blue;
display: flex;
justify-content: space-evenly;
}
.goods {
width: 150px;
height: 100px;
border:1px solid red;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
</style>
</head>
<body>
<div id="container">
<div class="one">
<ul class="goods">
<img src="./img/1.png" alt="">
<div class="text">天猫</div>
</ul>
<ul class="goods">
<img src="./img/1.png" alt="">
<div class="text">天猫</div>
</ul>
<ul class="goods">
<img src="./img/1.png" alt="">
<div class="text">天猫</div>
</ul>
<ul class="goods">
<img src="./img/1.png" alt="">
<div class="text">天猫</div>
</ul>
<ul class="goods">
<img src="./img/1.png" alt="">
<div class="text">天猫</div>
</ul>
</div>
<div class="two">
<div class="goods">
<img src="./img/1.png" alt="">
<div class="text">天猫</div>
</div>
<div class="goods">
<img src="./img/1.png" alt="">
<div class="text">天猫</div>
</div>
<div class="goods">
<img src="./img/1.png" alt="">
<div class="text">天猫</div>
</div>
<div class="goods">
<img src="./img/1.png" alt="">
<div class="text">天猫</div>
</div>
<div class="goods">
<img src="./img/1.png" alt="">
<div class="text">天猫</div>
</div>
</div>
</div>
</body>
</html>
结果分析
上图中的one是用ul来布局的,two是用div来写的,它们都设置了类名class=“goods’”,和宽高,但是ul仍有自己的宽高,其子元素也不能成功居中
所以有更好的解决方法之前,商品列表尽量用div来布局