我有一个有时有两件或三件或一件的容器。如果有一个项目,我希望每个容器(只有一个)的宽度为100%。如果有两个项目,我希望每个容器的宽度为50%。如果有三个项目,我希望每个容器的宽度为33%。事先知道项目数,但是在脚本执行之后。我怎样才能在css中完成上述内容?
答案 0 :(得分:3)
看哪,flex: 1
的力量。
body {
display: flex;
justify-content: center; /* center containers on page */
flex-wrap: wrap;
}
.container {
display: flex;
width: 75%;
margin-bottom: 10px; /* non-essential decorative styles */
background-color: yellow; /* non-essential decorative styles */
border: 1px solid black; /* non-essential decorative styles */
}
.box {
flex: 1; /* THE KEY RULE */
height: 50px;
margin: 5px; /* non-essential decorative styles */
background-color: lightgreen; /* non-essential decorative styles */
}

<div class="container">
<div class="box"></div>
</div>
<div class="container">
<div class="box"></div>
<div class="box"></div>
</div>
<div class="container">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
<div class="container">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
<div class="container">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
&#13;
每个绿色框的宽度基于容器中的可用空间。但是,如果您希望每个框都具有最小尺寸,则可以将flex
规则调整为flex: 1 0 75px
。这意味着盒子将尽可能地扩展,但绝不会小于75px宽。
请注意,所有主流浏览器except IE 8 & 9都支持flexbox。最近的一些浏览器版本,例如Safari 8和IE10,需要vendor prefixes。要快速添加所需的所有前缀,请在左侧面板中发布CSS:Autoprefixer。
答案 1 :(得分:1)
您可以使用:nth-of-type
和:nth-last-of-type
伪类对来实现此效果。
li:nth-of-type(1):nth-last-of-type(1) {
width: 100%;
}
li:nth-of-type(1):nth-last-of-type(2),
li:nth-of-type(2):nth-last-of-type(1) {
width: 50%;
}
li:nth-of-type(1):nth-last-of-type(3),
li:nth-of-type(2):nth-last-of-type(2),
li:nth-of-type(3):nth-last-of-type(1) {
width: 33.33%;
}
完成示例:
ol {
display: block;
height: 40px;
margin:0;
padding:0;
}
li {
display:inline-block;
margin: 2px 0;
padding: 0;
height: 36px;
color: rgb(255,255,255);
background-color: rgb(127,127,127);
font-weight:bold;
}
li:nth-of-type(1) {
background-color: rgb(255,0,0);
}
li:nth-of-type(2) {
background-color: rgb(63,225,63);
}
li:nth-of-type(3) {
background-color: rgb(0,0,255);
}
li:nth-of-type(1):nth-last-of-type(1) {
width: 100%;
}
li:nth-of-type(1):nth-last-of-type(2),
li:nth-of-type(2):nth-last-of-type(1) {
width: 50%;
}
li:nth-of-type(1):nth-last-of-type(3),
li:nth-of-type(2):nth-last-of-type(2),
li:nth-of-type(3):nth-last-of-type(1) {
width: 33.33%;
}
&#13;
<ol><li>100% Item</li></ol>
<ol><li>50% Item</li><li>50% Item</li></ol>
<ol><li>33% Item</li><li>33% Item</li><li>33% Item</li></ol>
&#13;