【发布时间】:2016-12-31 13:15:42
【问题描述】:
我将模拟我需要实现的目标。
例如,我希望 #2 占据整个空间,剩下的 100% - 180px.. 如何实现?
附言似乎flexbox 比calc 更受设备支持 - http://css3clickchart.com/#flexbox
【问题讨论】:
标签: css
我将模拟我需要实现的目标。
例如,我希望 #2 占据整个空间,剩下的 100% - 180px.. 如何实现?
附言似乎flexbox 比calc 更受设备支持 - http://css3clickchart.com/#flexbox
【问题讨论】:
标签: css
您可以使用如下所示的 flexbox 模型。添加flex: auto; 将允许正确的内容使用剩余宽度。
* {
margin: 0;
padding: 0;
}
html,
body {
height: 100%;
}
#parent {
display: flex;
height: 100%;
}
#left {
width: 180px;
background-color: hotpink;
}
#right {
flex: auto;
background-color: dodgerblue;
}
<div id="parent">
<div id="left"></div>
<div id="right"></div>
</div>
【讨论】:
flex的浏览器支持信息
flexbox 比calc 更受设备支持
您可以使用float: left 和overflow: hidden。
aside {
float: left;
width: 30%;
background: beige;
}
article {
overflow: hidden;
background: brown;
color: white;
}
<aside>
sidebar
</aside>
<article>
content
</article>
【讨论】:
overflow:hidden 不是个好办法
有很多方法可以做到这一点。下面是一种简单的方法。
第一种方式:简单的内联块
.container {
width: 100%;
height: 600px;
background-color: #f2f2f2;
}
.sidebar {
background-color: red;
width: 180px;
height: 600px;
float: left;
}
.main-content {
display: inline-block;
background-color: green;
}
<div class="container">
<div class="main-content">Main Content</div>
<div class="sidebar">Sidebar</div>
</div>
不过警告:在这种情况下,.main-content 只会占用它需要的空间,实际上不会是全宽。所以如果你想给它设置背景,你应该把背景设置为.container。
第二种方式:使用计算宽度
.container {
width: 100%;
height: 600px;
background-color: #f2f2f2;
position: relative;
}
.sidebar {
background-color: red;
width: 180px;
height: 600px;
float: left;
}
.main-content {
float: right;
background-color: green;
width: calc(100% - 180px);
height: 600px;
}
<div class="container">
<div class="main-content">Main Content</div>
<div class="sidebar">Sidebar</div>
</div>
第三种方式:使用 Flex
.container {
width: 100%;
height: 600px;
background-color: #f2f2f2;
display: flex;
}
.sidebar {
background-color: red;
width: 180px;
height: 600px;
}
.main-content {
background-color: green;
flex: auto;
}
<div class="container">
<div class="sidebar">Sidebar</div>
<div class="main-content">Main Content</div>
</div>
Flexbox 可能是最好的解决方案,但据说旧浏览器不支持它。
第 4 种方法是伪造表格的老式方法:
.container {
width: 100%;
height: 600px;
background-color: #f2f2f2;
display: table;
}
.sidebar {
background-color: red;
width: 180px;
display: table-cell;
}
.main-content {
display: table-cell;
background-color: green;
}
<div class="container">
<div class="sidebar">Sidebar</div>
<div class="main-content">Main Content</div>
</div>
【讨论】:
RUN SNIPPET 时,您将看到您的代码不起作用。