繁体   English   中英

3列布局HTML / CSS

[英]3 column layout 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.333%; }
.column-right{ float: right; width: 33.333%; }
.column-center{ display: inline-block; width: 33.333%; }

DEMO

编辑

要使用更多列来执行此操作,您可以构建一个非常简单的网格系统。 例如,像这样的东西应该适用于五列布局:

 .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> 

或者,如果您足够幸运能够仅支持现代浏览器,则可以使用灵活的盒子

 .container { display: flex; } .column { flex: 1; /*for demo purposes only */ background: #f2f2f2; border: 1px solid #e6e6e6; box-sizing: border-box; } .column-one { order: 3; } .column-two { order: 1; } .column-three { order: 4; } .column-four { order: 2; } .column-five { order: 5; } 
 <div class="container"> <div class="column column-one">Column one</div> <div class="column column-two">Column two</div> <div class="column column-three">Column three</div> <div class="column column-four">Column four</div> <div class="column column-five">Column five</div> </div> 

@easwee对于可能有相同问题的其他人来说更少:

如果您不需要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> 

查看此链接http://jsfiddle.net/bipin_kumar/XD8RW/2/

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/

CSS:

     .container div{
 width: 33.33%;
 float: left;
 height: 100px ;} 

列后清除浮动

 .container:after {
 content: "";
 display: table;
 clear: both;}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM