我正在尝试学习flexbox,我真的很喜欢它。我正在尝试使用动态宽度,当我使用div时,它可以工作。如果我尝试用li做它,它也不起作用。我的代码在codepen上。
div.example
ul
li
| 1
li
| 2
li
| 3
li
| 4
li
| 5
li
| 6
div.container
div.col
| 1
div.col
| 2
div.col
| 3
div.col
| 4
div.col
| 5
div.col
| 6
SASS代码
.container {
border: 1px solid #000;
display: flex;
flex-direction: row;
flex-wrap: wrap;
width: 50%;
.col {
width: calc(100% / 3);
height: 120px;
text-align: center;
}
}
.example {
display: flex;
flex-direction: row;
flex-wrap: wrap;
width: 50%;
border: 1px solid #000;
margin: 1em 0;
ul {
width: 100%;
padding-left: 0;
}
li {
list-style: none;
display: inline-block;
width: calc(100% / 3);
height: 120px;
text-align: center;
}
}
答案 0 :(得分:33)
您需要将flex属性应用于<ul>
ul {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
将属性放在<div>
上会告诉它在flex中显示<ul>
,而不是<li>
。
答案 1 :(得分:9)
根据您的标记,请注意<li>
元素是<ul>
的子元素,而不是.example
分割元素。
<div class="example">
<ul>
<li>1</li>
</ul>
</div>
由于<li>
元素的直接父级为<ul>
,因此请使用围绕多个flex
元素的<ul>
上的<li>
属性,而不是外部<div>
元素:
.example {
width: 50%;
border: 1px solid #000;
margin: 1em 0;
ul {
display: flex;
flex-direction: row;
flex-wrap: wrap;
width: 100%;
padding-left: 0;
}
li {
list-style: none;
display: inline-block;
width: calc(100% / 3);
height: 120px;
text-align: center;
}
}