首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >3列布局HTML/CSS

3列布局HTML/CSS
EN

Stack Overflow用户
提问于 2013-12-13 20:33:47
回答 5查看 301.1K关注 0票数 69

我有以下HTML布局:

代码语言:javascript
复制
<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

代码语言:javascript
复制
----------------------------------------------------
|              |                   |               |
| Column left  |   Column center   | Column right  |
|              |                   |               |
----------------------------------------------------
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-12-13 20:37:31

下面这样的代码应该可以做到:

代码语言:javascript
复制
.column-left{ float: left; width: 33.333%; }
.column-right{ float: right; width: 33.333%; }
.column-center{ display: inline-block; width: 33.333%; }

DEMO

编辑

要在列数较多的情况下做到这一点,可以构建一个非常简单的网格系统。例如,下面这样的代码应该适用于五列布局:

代码语言:javascript
复制
.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%;
}
代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
.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;
}
代码语言:javascript
复制
<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>

票数 154
EN

Stack Overflow用户

发布于 2013-12-15 03:25:11

这对于@easwee来说更少,而对其他可能有同样问题的人来说更多:

如果不需要对IE < 10支持,则可以使用Flexbox。这是一个令人兴奋的CSS3属性,不幸的是,它在几个不同的版本中实现了;添加了供应商前缀,并且要获得良好的跨浏览器支持,突然需要更多的属性。

有了当前的最终标准,您就可以完成

代码语言:javascript
复制
.container {
    display: flex;
}

.container div {
    flex: 1;
}

.column_center {
    order: 2;
}

就这样。如果您想要支持更老的实现,如iOS 6、Safari6、Firefox19或IE10,则可以将其扩展为

代码语言:javascript
复制
.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 demo

这里有一篇关于Flexbox跨浏览器支持的优秀文章:Using Flexbox: Mixing Old And New

票数 22
EN

Stack Overflow用户

发布于 2013-12-13 20:47:36

代码语言:javascript
复制
.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/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20566660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档