我想要一个漂亮的流体2列布局(下面的链接)。我有几个问题!
1)我希望我的tab-wrapper始终扩展页面的整个高度(不确定为什么它不起作用)
2)我希望我的“主”div能够贴合标签包装,并且还可以扩展页面的整个高度,还可以将剩余的空间填充到右侧。
非常感谢任何帮助。我确定我错过了一些愚蠢的东西。
body{
font-family: Calibri, sans-serif;
top:0px;
left:0px;
margin:0px;
padding:0px;
}
#page{
position: relative;
width:100%;
height:100%;
}
.tab{
min-height:75px;
padding:5px;
border-bottom: 1px solid #2a2a2a;
text-align: center;
color: #717171;
cursor: pointer;
line-height:75px;
}
.no-icon{
line-height: 75px;
}
.active{
background-color: #3c3c3c;
color: #ffffff;
}
#tab-wrapper{
display:inline-block;
height:100%;
width:10%;
border: 1px solid black;
float: left;
background-color: #464646;
}
#main{
display:inline-block;
width:80%;
height:100%;
background-color: #dbdbdb;
padding:30px 20px;
}
#footer{
clear:both;
width:100%;
border:1px solid black;
}
<div id="page">
<div id="tab-wrapper">
<div id="tab1" class="tab active">
Tab 1
</div>
<div id="tab2" class="tab">
Tab 2
</div>
<div id="tab3" class="tab">
Tab 3
</div>
</div>
<div id="main">
Lorem ipsum etc
</div>
</div>
答案 0 :(得分:2)
首先要使元素100%高度,你必须100%应用于body和html。
我认为你可以通过定位达到你所需要的。我做过类似于一个项目的东西,它适用于每一个浏览器。我已经很快完成了这个,但它应该给你一个想法:
在这里演示:http://jsfiddle.net/c4Tn7/
HTML
<div id="tab_wrapper">
<a class="tab">Tab 1</a>
<a class="tab">Tab 2</a>
<a class="tab">Tab 3</a>
</div>
<div id="content">
Mauris pharetra malesuada tempus. Sed faucibus commodo nisi, malesuada sodales sem aliquam vitae. Fusce laoreet elementum mattis. Aliquam vulputate ligula vitae velit condimentum sed suscipit ligula gravida. Sed ullamcorper, mi sed sollicitudin pulvinar, metus enim accumsan nisl, sit amet gravida ante dolor eu mauris. Phasellus in nulla massa, sed porttitor neque. Ut ut ligula vitae ipsum lacinia accumsan et nec elit. Pellentesque congue rutrum hendrerit. Donec sed dolor in ante dignissim tempus. Aliquam vestibulum, mauris sed pulvinar eleifend, eros ipsum vehicula mauris, at pulvinar ligula mi ut magna. Integer et augue et enim semper pharetra. Phasellus et ante diam. Quisque condimentum ultricies quam et auctor. Vivamus dignissim nunc ac augue pretium ac porta nisl iaculis.
</div>
<div id="footer">
THIS IS FOOTER
</div>
CSS
body,html{
width: 100%;
height: 100%;
}
body {
position: relative;
}
#tab_wrapper {
position: absolute;
top: 0px;
left: 0px;
bottom: 40px;
width: 100px;
background: #000;
}
#tab_wrapper .tab{
display: block;
min-height:75px;
padding:5px;
border-bottom: 1px solid #2a2a2a;
text-align: center;
color: #717171;
cursor: pointer;
line-height:75px;
}
#content {
position: absolute;
top: 0px;
left: 100px;
right: 0px;
bottom: 40px;
background: #666;
padding: 20px;
overflow: auto;
}
#footer {
position: absolute;
bottom: 0px;
left: 0px;
right: 0px;
height: 40px;
background: red;
}
答案 1 :(得分:1)
这个问题的理论答案是实用的。
理论上提到属性及其语义。
实用的人承认这样一个事实,即许多浏览器并不关心标准行为,特别是当涉及到良好,流畅的布局时,你必须为每个浏览器保留大量的特殊化。
这就是为什么许多人选择使用所谓的“CSS框架”,并使用他们的 Grid 组件来修复布局。这些框架的创建者/维护者有责任使它们与许多浏览器兼容,并且在此约束条件下尽可能优雅。
有关详细信息,请查看Twitter Bootstrap或960.gs。
显然,如果您想知道它是如何完成的,您可以查看它们的源代码。具体来说,960.gs使用固定边距,填充和浮动div
。
这些框架的另一个好处是它们往往在不同平台上运行良好。那是Linux / Mac / Android / iOs / Windows等。