doc.html
.column {
background-color: orange;
width: 75%;
vertical-align: top;
display: inline-block;
height: 200px;
}
.nav {
vertical-align: top;
display: inline-block;
width: 25%;
background-color: lightgreen;
height: 200px;
}
* {
box-sizing: border-box;
padding: 0px;
margin: 0px;
}

<!DOCTYPE html>
<html>
<head>
<link href="css2.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="container elem">
<div class="nav"></div>
<div class="elem column"></div>
</div>
</body>
</html>
&#13;
我根据本指南learnlayout编写了doc.html和css2.css。但页面看起来像这样。 如何将这两个部分组成一行?
答案 0 :(得分:6)
你的CSS是正确的;这个问题是众所周知的空白问题。您需要确保标记之间没有空格:
<body>
<div class="container elem"
><div class="nav"></div
><div class="elem column"></div
></div>
</body>
这是因为您的内容是内联的,这使得.nav
和.elem
之间的空白流动。它很小(大约4px),但足以分离你的<div>
并打破你的布局。
通过将右括号放在下一个元素的起始括号旁边,中间的所有空格都在标记内,而不是内容的一部分(因为标记可以包含属性和标记名称之间的空格,这是行)。
答案 1 :(得分:2)
这是inline-block
的典型空白问题。您始终可以通过将font-size: 0;
分配给父元素来解决此问题。
.container.elem {
font-size: 0;
}
/* remember to reset font-size to what you need in child elements */
.column {
background-color: orange;
width: 75%;
vertical-align: top;
display: inline-block;
height: 200px;
}
.nav {
vertical-align: top;
display: inline-block;
width: 25%;
background-color: lightgreen;
height: 200px;
}
* {
box-sizing: border-box;
padding: 0px;
margin: 0px;
}
<div class="container elem">
<div class="nav"></div>
<div class="elem column"></div>
</div>
另一个解决方案是让两个div都向左浮动,但这有它自己的问题和复杂性,这就是为什么我建议坚持使用内联块。
答案 2 :(得分:0)
问题在于空白。要解决此问题,请将此CSS应用于容器:
.container{
font-size:0;
}
答案 3 :(得分:0)
它只是将它们分成一行,除非设置父宽度并且它们的组合宽度大于它们的父级。
main()