将五个 div 并排对齐
align five divs equally next to each other
我什至发现很难正确地表达我的问题,所以请耐心等待。
我有一个 div 作为我页面的主要容器。在那个 div 里面,我想要另外五个 divs,它们具有相同的大小和相同的边距。但是,当我计算正确时,第五个 div 总是跳到下一行。
我希望这是有道理的。这是我的代码:
CSS和HTML如下
#content {
position: absolute;
width: 1000px;
height: 500px;
left: 50%;
top: 50%;
margin-left: -500px;
margin-top: -250px;
border: 2px solid #f9423a;
border-radius: 10px;
background-color: #3eb1c8;
overflow: hidden;
}
.bookmark {
display: inline-block;
width: 15%;
height: 20%;
margin-left: 2%;
margin-right: 2%;
margin-top: 2.5%;
border: 1px solid #f9423a;
border-radius: 10px;
background-color: #f9423a;
}
<div id="content">
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
</div>
请注意,我只是在使用颜色填充的 divs 来查看它是否有效。
如您所见,它几乎可以正常工作,网上困扰我的是右边的边距比左边多一点。我希望两侧和外部元素之间以及内部元素之间的边距相等。
希望有人能理解我的问题!
这是因为您正在使用:display: inline-block
,它将您的 HTML 代码上的 div 之间的白色 space 读取为文字白色 space,就像将space 单词之间,破坏布局。
尝试像这样更改语法:
<div>content</div><div>
content2</div><div>
content3</div><div>
content4</div><div>
content5</div>
然后,对于 CSS 你可以使用 calc();添加边框,这也会破坏您的布局。
像这样:
div {
width: calc(20% - 4px);//20*5 = 100 - 2px on each side each time
border: 2px solid black;
}
body {
margin: 0 0 0 0;
}
div {
text-align: center;
display: inline-block;
width: calc(20% - 4px);
/*20*5 = 100 - 2px on each side each time*/
border: 2px solid black;
background-color: red;
}
<div>content1</div><div>
content2</div><div>
content3</div><div>
content4</div><div>
content5</div>
Aramil 的回答很好而且正确。没有 "nice" 方法来处理这个问题。不同的人有不同的方法,但都有些hackish。我更喜欢这样做的方式是注释如下:
<div class="bookmark"></div><!--
--><div class="bookmark"></div><!--
--><div class="bookmark"></div><!--
--><div class="bookmark"></div><!--
--><div class="bookmark"></div>
基本上你不希望在一个收盘 div 和下一个开盘 div 之间有任何白色 space。有时,如果我的内容足够短,我会将它们全部放在一行中,如下所示,但这会使阅读变得更加困难。
<div class="bookmark"></div><div class="bookmark"></div><div class="bookmark"></div><div class="bookmark"></div><div class="bookmark"></div>
check this example, if this is what you wanted
我在这里删除了右边距并将书签 div 增加到 17%
.bookmark {
display: inline-block;
width: 17%;
height: 20%;
margin-left: 2%;
margin-top: 2.5%;
border: 1px solid #f9423a;
border-radius: 10px;
background-color: #f9423a;
}
将此添加到 .bookmark
float:left 和 add .8 到书签的宽度,你的计算不相等,因为在 1 个书签 div 你有 15% 加上 margin-left 和 right 是 4%,总计1 div 是 19 x 5 = 95 所以我添加了 .8 来填充剩余的空白。 19.8 x 5 = 99
.bookmark {
display: inline-block;
width: 15.8%;
height: 20%;
margin-left: 2%;
margin-right: 2%;
margin-top: 2.5%;
border: 1px solid #f9423a;
border-radius: 10px;
background-color: #f9423a;
float: left;
}
我什至发现很难正确地表达我的问题,所以请耐心等待。
我有一个 div 作为我页面的主要容器。在那个 div 里面,我想要另外五个 divs,它们具有相同的大小和相同的边距。但是,当我计算正确时,第五个 div 总是跳到下一行。
我希望这是有道理的。这是我的代码:
CSS和HTML如下
#content {
position: absolute;
width: 1000px;
height: 500px;
left: 50%;
top: 50%;
margin-left: -500px;
margin-top: -250px;
border: 2px solid #f9423a;
border-radius: 10px;
background-color: #3eb1c8;
overflow: hidden;
}
.bookmark {
display: inline-block;
width: 15%;
height: 20%;
margin-left: 2%;
margin-right: 2%;
margin-top: 2.5%;
border: 1px solid #f9423a;
border-radius: 10px;
background-color: #f9423a;
}
<div id="content">
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
<div class="bookmark"></div>
</div>
请注意,我只是在使用颜色填充的 divs 来查看它是否有效。
如您所见,它几乎可以正常工作,网上困扰我的是右边的边距比左边多一点。我希望两侧和外部元素之间以及内部元素之间的边距相等。
希望有人能理解我的问题!
这是因为您正在使用:display: inline-block
,它将您的 HTML 代码上的 div 之间的白色 space 读取为文字白色 space,就像将space 单词之间,破坏布局。
尝试像这样更改语法:
<div>content</div><div>
content2</div><div>
content3</div><div>
content4</div><div>
content5</div>
然后,对于 CSS 你可以使用 calc();添加边框,这也会破坏您的布局。 像这样:
div {
width: calc(20% - 4px);//20*5 = 100 - 2px on each side each time
border: 2px solid black;
}
body {
margin: 0 0 0 0;
}
div {
text-align: center;
display: inline-block;
width: calc(20% - 4px);
/*20*5 = 100 - 2px on each side each time*/
border: 2px solid black;
background-color: red;
}
<div>content1</div><div>
content2</div><div>
content3</div><div>
content4</div><div>
content5</div>
Aramil 的回答很好而且正确。没有 "nice" 方法来处理这个问题。不同的人有不同的方法,但都有些hackish。我更喜欢这样做的方式是注释如下:
<div class="bookmark"></div><!--
--><div class="bookmark"></div><!--
--><div class="bookmark"></div><!--
--><div class="bookmark"></div><!--
--><div class="bookmark"></div>
基本上你不希望在一个收盘 div 和下一个开盘 div 之间有任何白色 space。有时,如果我的内容足够短,我会将它们全部放在一行中,如下所示,但这会使阅读变得更加困难。
<div class="bookmark"></div><div class="bookmark"></div><div class="bookmark"></div><div class="bookmark"></div><div class="bookmark"></div>
check this example, if this is what you wanted
我在这里删除了右边距并将书签 div 增加到 17%
.bookmark {
display: inline-block;
width: 17%;
height: 20%;
margin-left: 2%;
margin-top: 2.5%;
border: 1px solid #f9423a;
border-radius: 10px;
background-color: #f9423a;
}
将此添加到 .bookmark
float:left 和 add .8 到书签的宽度,你的计算不相等,因为在 1 个书签 div 你有 15% 加上 margin-left 和 right 是 4%,总计1 div 是 19 x 5 = 95 所以我添加了 .8 来填充剩余的空白。 19.8 x 5 = 99
.bookmark {
display: inline-block;
width: 15.8%;
height: 20%;
margin-left: 2%;
margin-right: 2%;
margin-top: 2.5%;
border: 1px solid #f9423a;
border-radius: 10px;
background-color: #f9423a;
float: left;
}