我正在使用firefox,当我将两个 div
元素并排放置,宽度为100%,将右div
推到下一行。当他们总计99%时,一切都按预期工作。
这是一个示例:
CSS
.body {
height: 100%;
width: 100%;
}
.left {
background-color: red;
width: 70%;
height: 100%;
display: inline-block;
}
.right {
background-color: yellow;
display:inline-block;
width: 30%;
height: 100%;
}
}
html
<body>
<div class="wrapper">
<div class="left">
d
</div>
<div class="right">
d
</div>
</div>
</body>
,因为它们之间有空间,就像内联元素一样。如果您想解决此问题,许多方法将起作用:
<div class="left">
<!-- content -->
</div><div class="right">
<!-- content -->
</div>
通过并排放置关闭和打开标签,我们删除了返回线,空格等。不幸的是,这有点丑陋,并不是要通过仔细阅读的眼睛快速辨别。
另一种方法是用HTML评论删除意外的白色空间:
<div class="left">
d
</div><!--
--><div class="right">
d
</div>
喜欢第一个选项,这也使代码略微混乱,这意味着每组连续的列必须通过奇数和位置html注释分开。
上述两种方法都应给您一些可维护性的问题。如果您要进入一个项目并注意到这样的标记,则可以尝试改进格式,删除看似毫无意义的评论并总体上尝试提高代码可读性。
最好采用不需要奇数标记的方法:
<style>
.wrapper {
overflow: auto; }
.column {
float: left;
display: block; }
.left {
width: 70%; }
.right {
width: 30%; }
</style>
<div class="wrapper">
<div class="left column">
d
</div>
<div class="right column">
d
</div>
</div>
上面使用浮动块元素。块元素不允许任何一侧的空间,从而消除了我们讨厌的问题。但是,漂浮的元素确实隐含地弄乱了其父容器的布局。为了确保这些保留在其父容器中,我们设置了父级的overflow
属性。
此标记已经在您的解决方案中,并且不包括任何可能在以后会误解的约定或方法。
了解框模型
上面的最后一个警告;您应该确保元素的整体宽度不受填充和边界的影响。在现代浏览器中,这并不是通常的问题,但是对于传统支持,将box-sizing
属性设置为这些元素是明智的:
.wrapper, .column {
box-sizing: border-box;
}
文档:http://docs.webplatform.org/wiki/css/properties/box-sizing
flexbox
最终解决方案是避免浮动,内联块以及完全随附的所有内容。现代浏览器支持FlexBox,该弹性箱是专门为问题的。
使用当前的标记,以下CSS将为您提供两个列:
.wrapper {
display: flex;
}
.column {
flex: 1;
}
.left {
flex-basis: 70%;
background: red;
}
.right {
background: blue;
}
本语法将需要对支持前缀属性的较早版本的Chrome和Internet Explorer 10的一些调整,该版本支持标准的实现草案。
您可以在此处看到一个演示:http://codepen.io/anon/pen/skieg
白空间在内联块元素上计数。
您可以评论一下。请参阅此处的提示: http://jsfiddle.net/abhitalks/vtut2/1/
<div class="left">
d
</div><!--
--><div class="right">
d
</div>
您可以在下面检查链接。
小提琴
.wrapper{width:100%;}
.left {
background-color: red;
width: 70%;
height: 100%;
display: inline-block; float:left;
}
.right {
background-color: yellow;
display:inline-block;
width: 30%;
height: 100%;
}
这是您的解决方案,有一个正在创建问题的空白,这是代码....
<html>
<body>
<div class="wrapper">
<div class="left">
d</div><div class="right">
d
</div>
</div>
</body>
</html>