Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在容器中安装任意数量的div?_Javascript_Html_Css_Css Float - Fatal编程技术网

Javascript 在容器中安装任意数量的div?

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,其中包含一些子元素,如bellow:

<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。我试过了,但没有为梅西工作