我知道许多并排定位div的技巧。但是我从来没有理解为什么采用两个带宽度的边框div:50%不会产生并排的div。根据我对css的理解,利用边距,填充和边界,这应该绝对工作。
body {
padding: 0;
margin: 0;
border: 0;
}
div {
height: 300px;
box-sizing: border-box;
display: inline-block;
margin: 0;
}
.left {
background-color: blue;
}
.right {
background-color: red;
}
.half {
width: 50%;
}
<div class="half left"></div>
<div class="half right"></div>
我错过了什么?
修改
正如许多人指出的那样,display: block
不会给我并排的行为。这是一种错误的类型。我打算做所有事情inline-block
答案 0 :(得分:4)
首先,您需要了解基于display属性的HTML中的元素有两种类型 -
块级别元素出现在另一个之下,或者您可能称之为堆叠在彼此之下,
而,
内联元素在同一行上创建,除非如果遇到display: block
标记,则将其专门设置为<br />
OR 。
<强> 强>
您可以使用属性display:inline-block
问题:即使使用div
,它也会添加空格并将第二个width: 50%;
放在下一行。现在,there are several删除空格的方法,您可以尝试其中任何一个。
在float: left
上使用div
body {
padding: 0;
margin: 0;
}
div {
height: 300px;
}
.left {
background-color: blue;
}
.right {
background-color: red;
}
.half {
width: 50%;
float: left;
}
.half-new {
display: inline-block;
width: 50%
}
<h1>Using Float</h1>
<div class="half left"></div>
<div class="half right"></div>
<hr />
<h1>Using inline-block</h1>
<div class="half-new left"></div><!--
--><div class="half-new right"></div>
答案 1 :(得分:1)
有两个原因:
display: block
更改显示属性并删除空格。
body {
padding: 0;
margin: 0;
border: 0;
}
div {
height: 300px;
box-sizing: border-box;
margin: 0;
display: inline-block;
}
.left {
background-color: blue;
}
.right {
background-color: red;
}
.half {
width: 50%;
}
&#13;
<div class="half left"></div><div class="half right"></div>
&#13;