Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.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
Html 如何让3个div在另一个div上彼此对齐?_Html_Css - Fatal编程技术网

Html 如何让3个div在另一个div上彼此对齐?

Html 如何让3个div在另一个div上彼此对齐?,html,css,Html,Css,为了更简单,我在这里创建了一个JSFIDLE: 我试图让三个div在另一个div的顶部彼此对齐。我认为,如果前两个div的宽度为33.33%,第三个div的宽度为33.34%,则等于100%的宽度,但这不起作用 我做错了什么 这是HTML <div class="box-top"> <div class="box-top-left">Pig One</div> <div class="box-top-center">Pig Two&

为了更简单,我在这里创建了一个JSFIDLE:

我试图让三个div在另一个div的顶部彼此对齐。我认为,如果前两个div的宽度为
33.33%
,第三个div的宽度为
33.34%
,则等于100%的宽度,但这不起作用

我做错了什么

这是HTML

<div class="box-top">
    <div class="box-top-left">Pig One</div>
    <div class="box-top-center">Pig Two</div>
    <div class="box-top-right">Pig Three</div>
</div>

<div class="box-bottom">Three little piggies had an awesome day.</div>

您可以像这样使用显示
表格
表格单元格

.box-top {
    display: table;
    width: 100%;
}

.box-top-left,
.box-top-center,
.box-top-right {
    display: table-cell;
    width: 33%;
}

您可以像这样使用显示
表格
表格单元格

.box-top {
    display: table;
    width: 100%;
}

.box-top-left,
.box-top-center,
.box-top-right {
    display: table-cell;
    width: 33%;
}

问题是,在每一侧添加1px的边框,因此框会变得大于33.33%。(边框在设置宽度后由浏览器添加)。最简单的解决方法是使用
calc(33.33%-2px)
作为宽度。

问题是,每侧添加1px边框,因此框变大超过33.33%。(边框在设置宽度后由浏览器添加)。最简单的解决方法是使用
calc(33.33%-2px)
作为宽度。

问题在于内联块div尊重空格。因此,从返回键开始,div之间的间隙很小

更改:

<div class="box-top">
    <div class="box-top-left">Pig One</div>
    <div class="box-top-center">Pig Two</div>
    <div class="box-top-right">Pig Three</div>
</div>
这对我很有用

使边框包含在宽度大小中。它具有良好的跨浏览器支持

js小提琴:

编辑:您也可以尝试添加到父级,而不是删除空白

.box-top {
    display:flex;
}
.box-top > div {
    box-sizing: border-box;
}

Flex solution fiddle:

问题在于内联块div尊重空格。因此,从返回键开始,div之间的间隙很小

更改:

<div class="box-top">
    <div class="box-top-left">Pig One</div>
    <div class="box-top-center">Pig Two</div>
    <div class="box-top-right">Pig Three</div>
</div>
这对我很有用

使边框包含在宽度大小中。它具有良好的跨浏览器支持

js小提琴:

编辑:您也可以尝试添加到父级,而不是删除空白

.box-top {
    display:flex;
}
.box-top > div {
    box-sizing: border-box;
}

Flex solution fiddle:

有两个问题将此挂起

首先,内联块具有隐式间距,因此它们不会自动相互碰撞。额外的间距随浏览器和字体大小而变化,因此要消除它,可以在容器元素上设置
font-size:0
(在本例中为
.box-top
)。当然,然后需要重置子元素的字体大小


下一个问题是默认情况下宽度不包括填充或边框。所以你的盒子是33.33%,再加上2个(两边的边界)。最简单的解决方法是在每个子框上设置框大小:边框框,然后将边框包含在宽度计算中。这在大多数较新的浏览器上都适用,但如果您的目标浏览器不支持框大小调整(大多数现在支持,但请选中),那么您需要修复它,使框更窄,以确保1px边框适合,这可能会变得一团糟。

有两个问题将此问题挂起

首先,内联块具有隐式间距,因此它们不会自动相互碰撞。额外的间距随浏览器和字体大小而变化,因此要消除它,可以在容器元素上设置
font-size:0
(在本例中为
.box-top
)。当然,然后需要重置子元素的字体大小


下一个问题是默认情况下宽度不包括填充或边框。所以你的盒子是33.33%,再加上2个(两边的边界)。最简单的解决方法是在每个子框上设置框大小:边框框,然后将边框包含在宽度计算中。这在大多数较新的浏览器上都适用,但如果您的目标浏览器不支持框大小调整(大多数现在支持,但选中),那么您需要修复它,使框更窄,以确保1px边框适合,这可能会变得一团糟。

我会添加“float:left;”和“box size:border box;”(不带引号)到.box左上方、-中间和-右侧,然后“清除:两者”;到.box底部。如果这不起作用,我也会将这3个框的所有宽度设置为33.33%。

我会将“浮动:左侧”和“框大小:边框框;”(不带引号)添加到.box top left、-middle和-right,然后将“clear:bother;”添加到.box bottom。如果这不起作用,我也会将这3个盒子的所有宽度设为33.33%。

你有1px的边框,在使用宽度时必须考虑到这一点:33%。如果删除此边框,则边框为1px,在使用宽度时必须考虑此值:33%。如果删除此边框,它将正常工作