我不知道有多少.child
个元素.parent
会包含但我知道它们各自的宽度。
我想将.parent
的宽度设置为等于(每个.child
的宽度) * (.child
的总数)
我不想使用floats
和width: auto;
我可以在不使用Javascript的情况下使用calc()
执行某些操作吗?
** CSS:**
.parent {
height: 100%;
width: calc({number of children} * {width of each child = 100px});
}
.child {
height: 100px;
width: 100px;
}
HTML:
<div class="parent">
<div class="child">
<div class="child">
<div class="child">
</div>
答案 0 :(得分:12)
我知道这有点晚了,但希望这会有助于寻找类似解决方案的人:
<div class="parent" style="display: inline-flex">
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
</div>
诀窍是对inline-flex
使用parent
,为inline-table
使用child
。一切都充满活力。我通过添加另一个grandparent
与overflow-x:scroll;
:
<div class="grandparent" style="width: 300px; overflow-x: scroll; background: gray">
<div class="parent" style="display: inline-flex">
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
<div class="child" style="display: inline-table">some button</div>
</div>
</div>
答案 1 :(得分:6)
* {
margin:0;
padding:0;
box-sizing:border-box;
}
.parent {
height: 100%;
display:inline-block;
background:#bada55;
font-size:0; /* clear whitespace*/
}
.child {
height: 100px;
width: 100px;
border:1px solid red;
display:inline-block;
}
&#13;
<div class="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
&#13;
答案 2 :(得分:1)
如果您使用的是Chrome,则可以使用max-width: fit-content
它是其他主要浏览器的not yet supported。
答案 3 :(得分:0)
.parent{
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.child {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
<div class="child">6</div>
</div>
答案 4 :(得分:0)
* {
flex-grow: 1;
flex-basis: 0;
width: fit-content;
}
你可以试试这个
答案 5 :(得分:0)
您可以简单地将 display: inline-block;
设置为 .parent
元素,使其宽度等于其 .child
元素所占用的总宽度。
.parent {
display: inline-block;
}
默认情况下,HTML 中带有 display: block;
的元素将占据其父元素的整个宽度。在您的情况下,.parent
元素,因为 display: block;
占据了其父元素的全部宽度。因此,通过为 display: inline-block;
元素设置 .parent
将使其宽度等于其内容,在这种情况下是其 .child
元素占用的总宽度。