[英]setting the width on inline-block elements, CSS
我在将两个div并排放置时遇到问题。 左div(sidebar)设置为固定宽度,我希望右div(“ content”)占据右侧的剩余空间。 目前,我可以将右侧的div设置为固定宽度。 演示我想要完成此操作而无需在侧边栏上设置左边距。
谢谢
HTML
<div style="height: 100%">
<div id="Header"></div>
<div id="container">
<div id="sidebar"></div>
<div id="content">fff</div>
</div>
您只需要删除float:left;
在#content
以便占用剩余空间:
编辑:
如果要在侧边栏上设置透明背景,则需要在#content
上添加left-margin:240px
以使内容不会通过侧边栏显示(已更新演示)
在标题中,指定display: inline-block
。
我们可以这样做,并使用calc(100% - 240px)
固定边栏,以从#content
的宽度中删除边栏的宽度。
像这样使用div: <div id="sidebar"></div><div id="content">fff</div>
可以防止内联间隙。 更多信息在这里 。
我删除了height: calc(100% - 30px)
#container
上的height: calc(100% - 30px)
的滚动条,以删除标题高度。 对于旧的浏览器后备而言,不够关键。
浏览器支持 :当然,请注意使用calc()
-IE 9 +的浏览器兼容性 。 我们可以使用未优化的后备宽度为老版本浏览器,或者,如果真的需要 ,我已经包含了一个基本的jQuery calc()
回退,将设置宽度如果calc()
不支持。
jQuery的后备源于此答案 。 我添加了宽度检查,因此它仅在宽度太小时才运行。 如果您仍然包含jQuery库,则这特别好。
注意vertical-align: top
以保持行内块div正确垂直放置。
// calc fallback - optional var checkWidth = $('#outer').width() - 240; var contentWidth = $('#content').width(); if (checkWidth !== contentWidth) { alert('no calc :('); $('#content').css('width', '100%').css('width', '-=240px'); $(window).resize(function() { $('#content').css('width', '100%').css('width', '-=240px'); }); } else { alert('has calc :D !'); }
* { box-sizing: border-box; } html, body { margin: 0; padding: 0; height: 100%; width: 100%; } #Header { height: 30px; background-color: yellow; } #container { height: calc(100% - 30px); width: 100%; } #sidebar { background-color: orange; height: 100%; opacity: 0.3; width: 240px; display: inline-block; vertical-align: top; } #content { background-color: blue; height: 100%; width: calc(100% - 240px); display: inline-block; vertical-align: top; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div style="height: 100%" id="outer"> <div id="Header"></div> <div id="container"> <div id="sidebar"></div><div id="content">fff</div> </div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.