Javascript 在容器中安装任意数量的div?
我有一个更大的div,其中包含一些子元素,如bellow:Javascript 在容器中安装任意数量的div?,javascript,html,css,css-float,Javascript,Html,Css,Css Float,我有一个更大的div,其中包含一些子元素,如bellow: <div class=bigger> <div>A</div> <div>B</div> <div>C</div> </div> 然后,它的所有子代都获得了100px的高度,即每个子代的高度相等 即使孩子的数量增加或减少,我的意思是: <div class="bigger"> <div>
<div class=bigger>
<div>A</div>
<div>B</div>
<div>C</div>
</div>
然后,它的所有子代都获得了100px的高度,即每个子代的高度相等
即使孩子的数量增加或减少,我的意思是:
<div class="bigger">
<div>A</div>
<div>B</div>
<div>C</div>
<div>D</div>
</div>
A.
B
C
D
所有子div应具有相同的高度,且其高度/子div数应更大
有没有CSS解决方案?我不想使用javaScript
.bigger {
width:100%;
height:auto;
border:1px solid red;
}
.bigger div {
height:100px;
width:100%;
border:1px solid blue;
}
出于您的目的,使用此css,通过将高度设置为自动,它将调整为任何div数
另外,.biger div
会将所有div设置为100px高度
编辑:用于固定容器
.bigger {
width:100%;
height:300px;
border:1px solid red;
display:table;
}
.bigger div {
display:table-row;
height:auto;
width:100%;
}
对于所有浏览器也一样:)
出于您的目的,使用此css,通过将高度设置为自动,它将调整为任何div数
另外,.biger div
会将所有div设置为100px高度
编辑:用于固定容器
.bigger {
width:100%;
height:300px;
border:1px solid red;
display:table;
}
.bigger div {
display:table-row;
height:auto;
width:100%;
}
对于所有浏览器也是如此:)允许元素占据相等的空间,这是传统上只有使用
才能实现的。然而,你可以:
HTML
A.
B
C
A.
B
C
(相关)CSS
传统上,只有使用
s才能允许元素占据等量的空间。然而,你可以:
HTML
A.
B
C
A.
B
C
(相关)CSS
要与孩子和家长一起工作,您需要使用auto
和max
<div class="bigger">
<div>A</div>
<div>B</div>
<div>C</div>
</div>
使用“最大值”和“最小值”,仅确保每次孩子增大或减小时高度保持不变,然后使用此选项:
.bigger div {
height: 100%; // note this..
}
在这里试一试这把小提琴:再加一个div,然后检查它
如果您想动态地创建div高度,那么就没有CSS,您将需要JS或jQuery。因为你需要计算孩子的数量,然后改变他们身高的百分比,比如说从100
到30
(对于3)或22
(对于4)等等,因为文本不会适合这个尺寸。要与孩子和父母一起工作,你需要使用auto
和max
<div class="bigger">
<div>A</div>
<div>B</div>
<div>C</div>
</div>
使用“最大值”和“最小值”,仅确保每次孩子增大或减小时高度保持不变,然后使用此选项:
.bigger div {
height: 100%; // note this..
}
在这里试一试这把小提琴:再加一个div,然后检查它
如果您想动态地创建div高度,那么就没有CSS,您将需要JS或jQuery。因为你需要计算孩子的数量,然后改变他们身高的百分比,比如说从100
到30
(对于3)或22
(对于4)等等,因为文本无法适应这个尺寸。如果你想在纯CSS中实现这一点,你可以尝试一下
我已经设置了4个项目。您可以将其扩展到您想要的任意多个项目
/* one item */
.bigger > div:first-child:nth-last-child(1) {
height: 300px;
}
/* two items */
.bigger > div:first-child:nth-last-child(2),
.bigger > div:first-child:nth-last-child(2) ~ div {
height: 150px;
}
/* three items */
.bigger > div:first-child:nth-last-child(3),
.bigger > div:first-child:nth-last-child(3) ~ div {
height: 100px;
}
/* four items */
.bigger > div:first-child:nth-last-child(4),
.bigger > div:first-child:nth-last-child(4) ~ div {
height: 75px;
}
如果你想在纯CSS中实现这一点,你可以试试这个
我已经设置了4个项目。您可以将其扩展到您想要的任意多个项目
/* one item */
.bigger > div:first-child:nth-last-child(1) {
height: 300px;
}
/* two items */
.bigger > div:first-child:nth-last-child(2),
.bigger > div:first-child:nth-last-child(2) ~ div {
height: 150px;
}
/* three items */
.bigger > div:first-child:nth-last-child(3),
.bigger > div:first-child:nth-last-child(3) ~ div {
height: 100px;
}
/* four items */
.bigger > div:first-child:nth-last-child(4),
.bigger > div:first-child:nth-last-child(4) ~ div {
height: 75px;
}
使用Flexbox的解决方案:
.bigger {
height: 400px;
background: #eea;
display: flex;
flex-direction: column;
}
.bigger div {
margin: 4px;
border: 1px dotted green;
flex: auto;
}
演示:
(请注意,Codepen没有供应商前缀)使用Flexbox的解决方案:
.bigger {
height: 400px;
background: #eea;
display: flex;
flex-direction: column;
}
.bigger div {
margin: 4px;
border: 1px dotted green;
flex: auto;
}
演示:
(请注意,Codepen不提供供应商前缀)
您应该提到每个内部div的高度,然后只有它才能正常工作
现在,在较大的div内添加另一个内部div元素,高度应相同
这里我提到了高度50px,你给出你想要的高度
您应该提到每个内部div的高度,然后只有它才能正常工作
现在,在较大的div内添加另一个内部div元素,高度应相同
这里我提到了高度50px,你给出你想要的高度。请查看你的问题,然后使用“编辑”链接并使用提供的格式工具。编辑:Kos已经帮了你。如果你的父高度是固定的,那么你可以计算出子div的数量,并据此制作动画。我忍不住注意到你有heigh:300px代码>而非高度:300px代码>(使用t
)。你是复制粘贴的,还是只是问题中的一个输入错误?输入错误?有任何css解决方案吗?@Manglore您的实际问题是什么?请查看您的问题,然后使用“编辑”链接并使用提供的格式工具。编辑:Kos已经帮了你。如果你的父高度是固定的,那么你可以计算出子div的数量,并据此制作动画。我忍不住注意到你有heigh:300px代码>而非高度:300px代码>(使用t
)。你是复制粘贴的,还是只是问题中的一个输入错误?输入错误?有任何css解决方案吗?@Manglore您的实际问题是什么?OP希望容器上有一个固定的高度,而不是元素。如果子div高度的on超过300px,则此操作失败。如何将oveflow:隐藏属性添加到子级?OP希望容器上有一个固定的高度,而不是元素。如果子div高度的on超过300px,则此操作失败。如何将oveflow:hidden properties添加到child?+1是一个使用flex
的简单解决方案,但需要注意的是,这在较旧的浏览器中不起作用。没错,Flexbox仍然是实验性的,我不在生产中使用它。请参阅最新的兼容性表。+1了解使用flex
的简单解决方案。不过,值得注意的是,这在较旧的浏览器中不起作用。没错,Flexbox仍然是实验性的,我不在生产中使用它。有关最新兼容性表,请参阅。如果内容超过300px怎么办?我的意思是,通过这一点,可以为子div添加overflow:hidden。我试过了,但没有为梅西工作