未实现效果:
每个li宽度为270px ,实现每行4个li,之间间距为30px
因为box宽度为1170px ,ul的宽度为父元素100%,故ul宽度为1170px
li:2704+304(margin-right) = 1200px
ul实际需要的宽度为1200px,因为ul容不下li后,自动换行。
<style>
* {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
.box {
width: 1170px;
height: 500px;
margin: 30px auto;
background-color: tomato;
}
/* ul {
width: 1200px;
} */
li {
float: left;
width: 270px;
height: 100px;
/* 元素之间的间距 */
margin-right: 30px;
background-color: yellow;
}
</style>
</head>
<body>
<div class="box">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
</div>
</body>
解决:
给ul添加正常容下4个li
给ul的父元素添加overflow:hidden
完整代码
* {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
.box {
width: 1170px;
height: 500px;
margin: 30px auto;
background-color: tomato;
/* 隐藏 超出的ul部分 */
overflow: hidden;
}
ul {
/* ul实际需要的宽度;*/
width: 1200px;
}
li {
float: left;
width: 270px;
height: 100px;
/* 元素之间的间距 */
margin-right: 30px;
margin-bottom: 10px;
background-color: yellow;
}
</style>
</head>
<body>
<div class="box">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
</div>
</body>
以后只需要设置每个box的宽度(安全区)和ul的实际需要宽度以及li的高度宽度和margin就可以实现元素排列