3列布局HTML / CSS
我有以下的HTML布局:
<div class="container"> <div class="column-center">Column center</div> <div class="column-left">Column left</div> <div class="column-right">Column right</div> </div>
有没有机会像下面的示例网格一样安排列, 而不用仅使用CSS 更改HTML ?
---------------------------------------------------- | | | | | Column left | Column center | Column right | | | | | ----------------------------------------------------
像这样的东西应该这样做:
.column-left{ float: left; width: 33%; } .column-right{ float: right; width: 33%; } .column-center{ display: inline-block; width: 33%; }
DEMO
编辑
要用更多的列来做到这一点,你可以build立一个非常简单的网格系统。 例如,像这样的东西应该适用于五列布局:
.column { float: left; position: relative; width: 20%; /*for demo purposes only */ background: #f2f2f2; border: 1px solid #e6e6e6; box-sizing: border-box; } .column-offset-1 { left: 20%; } .column-offset-2 { left: 40%; } .column-offset-3 { left: 60%; } .column-offset-4 { left: 80%; } .column-inset-1 { left: -20%; } .column-inset-2 { left: -40%; } .column-inset-3 { left: -60%; } .column-inset-4 { left: -80%; }
<div class="container"> <div class="column column-one column-offset-2">Column one</div> <div class="column column-two column-inset-1">Column two</div> <div class="column column-three column-offset-1">Column three</div> <div class="column column-four column-inset-2">Column four</div> <div class="column column-five">Column five</div> </div>
这对于@easwee来说更less,对于其他可能有相同问题的人来说更是如此:
如果您不需要支持IE <10,则可以使用Flexbox 。 这是一个令人兴奋的CSS3财产,不幸的是在几个不同的版本实施, 添加供应商前缀,并获得良好的跨浏览器支持突然需要比它应该更多的属性。
按照目前的最终标准,你会完成
.container { display: flex; } .container div { flex: 1; } .column_center { order: 2; }
而已。 如果你想支持像iOS 6,Safari <6,Firefox 19或IE10这样的老式实现,这就开始了
.container { display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */ display: -ms-flexbox; /* TWEENER - IE 10 */ display: -webkit-flex; /* NEW - Chrome */ display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */ } .container div { -webkit-box-flex: 1; /* OLD - iOS 6-, Safari 3.1-6 */ -moz-box-flex: 1; /* OLD - Firefox 19- */ -webkit-flex: 1; /* Chrome */ -ms-flex: 1; /* IE 10 */ flex: 1; /* NEW, Spec - Opera 12.1, Firefox 20+ */ } .column_center { -webkit-box-ordinal-group: 2; /* OLD - iOS 6-, Safari 3.1-6 */ -moz-box-ordinal-group: 2; /* OLD - Firefox 19- */ -ms-flex-order: 2; /* TWEENER - IE 10 */ -webkit-order: 2; /* NEW - Chrome */ order: 2; /* NEW, Spec - Opera 12.1, Firefox 20+ */ }
jsFiddle演示
这里有一篇关于Flexbox跨浏览器支持的优秀文章: 使用Flexbox:混合旧的和新的
.container{ height:100px; width:500px; border:2px dotted #F00; border-left:none; border-right:none; text-align:center; } .container div{ display: inline-block; border-left: 2px dotted #ccc; vertical-align: middle; line-height: 100px; } .column-left{ float: left; width: 32%; height:100px;} .column-right{ float: right; width: 32%; height:100px; border-right: 2px dotted #ccc;} .column-center{ display: inline-block; width: 33%; height:100px;} <div class="container"> <div class="column-left">Column left</div> <div class="column-center">Column center</div> <div class="column-right">Column right</div> </div>
CSS:
.container { position: relative; width: 500px; } .container div { height: 300px; } .column-left { width: 33%; left: 0; background: #00F; position: absolute; } .column-center { width: 34%; background: #933; margin-left: 33%; position: absolute; } .column-right { width: 33%; right: 0; position: absolute; background: #999; }
HTML:
<div class="container"> <div class="column-center">Column center</div> <div class="column-left">Column left</div> <div class="column-right">Column right</div> </div>
这里是演示: http : //jsfiddle.net/nyitsol/f0dv3q3z/
RWD模板1,2,3,4列
Github: https : //github.com/fxstar/PsdToHtml/blob/master/rwd.html