我想把两个<div>放在一起。右边<div>大约是200px;而左边<div>必须填满剩下的屏幕宽度?我该怎么做呢?
当前回答
您可以使用flexbox布局您的项目:
#{母公司 显示:flex; } #{狭窄 宽度:200 px; 背景:lightblue; /*这样就可以看到*/ } #{宽 flex: 1; /*扩展到容器的其余部分*/ 背景:lightgreen; /*这样就可以看到*/ } < div id = "父" > <div id=" width "> width(其余的宽度)</div> <div id="窄">窄(200px)</div> < / div >
这基本上只是flexbox的表面。Flexbox可以做一些非常了不起的事情。
对于老式浏览器的支持,你可以使用CSS float和width属性来解决这个问题。
#{狭窄 浮:正确; 宽度:200 px; 背景:lightblue; } #{宽 浮:左; 宽度:calc(100% - 200px); 背景:lightgreen; } < div id = "父" > <div id=" width "> width(其余的宽度)</div> <div id="窄">窄(200px)</div> < / div >
其他回答
更新
如果需要在一行中放置元素,可以使用Flex Layout。这里有另一个Flex教程。它是一个很棒的CSS工具,尽管它不是100%兼容,但它的支持每天都在变得更好。这很简单:
HTML
<div class="container">
<div class="contentA"></div>
<div class="contentB"></div>
</div>
CSS
.container {
display: flex;
width: 100%;
height: 200px;
}
.contentA {
flex: 1;
}
.contentB {
flex: 3;
}
你得到的是一个总大小为4个单元的容器,它与其子单元以1/4和3/4的关系共享空间。
我已经在CodePen中做了一个例子来解决你的问题。我希望这能有所帮助。
http://codepen.io/timbergus/pen/aOoQLR?editors=110
非常古老的
也许这只是无稽之谈,但你试过用桌子吗?它不直接使用CSS来定位div,但它工作得很好。
你可以创建一个1x2的表格,把你的div放在里面,然后用CSS格式化表格,把它们放在你想要的地方:
<table>
<tr>
<td>
<div></div>
</td>
<td>
<div></div>
</td>
</tr>
</table>
Note
如果你想避免使用表,如前所述,你可以使用float: left;和float: right;在下面的元素中,不要忘记添加一个clear: left;, clear: right;或明确:两者;为了清洁这个位置。
这不是每个人的答案,因为它在IE7-中不受支持,但你可以使用它,然后使用IE7-的替代答案。它是display: table, display: table-row和display: table-cell。注意,这不是使用表格进行布局,而是样式化div,这样就可以很好地排列,省去上面的所有麻烦。我的是一个html5应用程序,所以它工作得很好。
本文展示了一个示例:http://www.sitepoint.com/table-based-layout-is-the-next-big-thing/
下面是你的样式表的样子:
.container {
display: table;
width:100%;
}
.left-column {
display: table-cell;
}
.right-column {
display: table-cell;
width: 200px;
}
不幸的是,对于一般情况,这不是一个简单的问题。最简单的方法是添加一个css风格的属性“float: right;”到你的200px div,然而,这也会导致你的“main”-div实际上是全宽的,其中的任何文本都会漂浮在200px-div的边缘,这通常看起来很奇怪,这取决于内容(几乎在所有情况下,除非它是一个浮动图像)。
编辑: 正如Dom所建议的,包装问题当然可以用边缘来解决。愚蠢的我。
只要使用z指数,一切都会很好。确保将位置标记为固定或绝对。然后没有东西会像浮动标签一样移动。
正如大家所指出的,你可以通过设置float:right;RHS含量为负,LHS为负。
然而. .如果你不使用浮点数:left;在LHS上(如Mohit所做的那样),那么你会得到一个步进效果,因为LHS div仍然会在布局中消耗边缘空间。
然而. .LHS浮动将收缩内容,所以如果这是不可接受的,你将需要插入一个定义宽度的子节点,在这一点上,你也可以在父节点上定义宽度。
然而. .正如David指出的那样,你可以改变标记的读取顺序来避免LHS浮点要求,但这有可读性和可能的可访问性问题。
然而. .这个问题可以用浮动来解决,并提供一些额外的标记
(警告:我不赞成在那个例子中使用.clearing div,详情请看这里)
综合考虑,我想我们大多数人都希望有一个非贪婪宽度:留在CSS3中……