html {
padding: 0;
margin: 0;
background-color: red;
}
body {
padding: 1em;
width: 50em;
background-color: azure;
margin-left: auto;
margin-right: auto;
}
@media screen and (max-width: 50em) {
body {
width: 100%;
}
}
ul {
padding: 0;
display: flex;
justify-content: space-evenly;
flex-wrap: wrap;
}
ul>li {
/* flex-basis: 25%; */
min-width: 25%;
margin: 1em;
list-style: none;
background-color: greenyellow;
justify-content: center;
}
ul>li>a {
margin: 0 auto;
padding: 0;
display: block;
background-color: lightgrey;
width: 10em;
height: 10em;
}
<html>
<body>
<ul>
<li>
<a href="#">1</a>
</li>
<li>
<a href="#">2</a>
</li>
<li>
<a href="#">3</a>
</li>
<li>
<a href="#">4</a>
</li>
<li>
<a href="#">5</a>
</li>
<li>
<a href="#">6</a>
</li>
</ul>
</body>
</html>
很抱歉,如果我的例子不是最少的,但是我不知道问题出在哪里。我的目标是创建一个简单的响应页面:
在这个主体中,我希望有6个flex元素,以便每行永远不能超过3个元素。具体来说,这意味着唯一有效的格式是3x2、2x3、1x6。
只要我不向身体添加填充,一切都是正确的。一旦添加了填充,flex就会使页面宽度超过屏幕尺寸。
那是为什么?我怎样才能简单地实现自己想要的?
答案 0 :(得分:3)
只需将box-sizing: border-box
添加到所有元素,这将在所有宽度/高度计算中包括填充(和边框),而不是添加。 (因此不会破坏您的计算结果
* {
box-sizing: border-box;
}