如何把Div分成3行*3列不用table.

如何把一个Div等分成3行*3列不用table.

阅读 8.4k
4 个回答

第一种方式

html:

<div id="box">
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </div>
     <div>
        <span>4</span>
        <span>5</span>
        <span>6</span>
    </div>
     <div>
        <span>7</span>
        <span>8</span>
        <span>9</span>
    </div>
</div>

csss:

*{
    margin:0 auto;
    padding:0;
}
#box{
    height:200px;
    width:200px;
    border:1px solid red;
}
div div{
    width:100%;
    height:32.855%;
}
span{
    display:inline-block;
    height:100%;
    width:32%;
    border:1px solid blue;
}
#box span:nth-child(2n+2){
     border:1px solid red;
    margin-left:-7px;
}
#box span:nth-child(2n+3){
     border:1px solid green;
    margin-left:-7px;
}

在线预览:https://jsfiddle.net/dwqs/wrj2xvhg/2/

第二种方式

可以考虑display的table、table-row和table-cell属性
html:

<div id="box">
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </div>
     <div>
        <span>4</span>
        <span>5</span>
        <span>6</span>
    </div>
     <div>
        <span>7</span>
        <span>8</span>
        <span>9</span>
    </div>
</div>

css:

*{
    margin:0 auto;
    padding:0;
}
#box{
    height:200px;
    width:200px;
    border:1px solid red;
    display:table;
}
div div{
    width:100%;
    display:table-row;
}
span{
    display:table-cell;
    border:1px solid blue;
    vertical-align:middle;
    text-align:center;
}

在线预览:demo

第三种方式

利用css3的column-count布局
html:



<div id="box"> <div id="first"> 人民网北京2月24日电 (记者 刘阳)国家发展改革委知, </div> <div> 人民网北京2月24日电 (记者 刘阳)国家发展改革委知, </div> <div> 人民网北京2月24日电 (记者 刘阳)国家发展改革委知, </div> </div>

css

*{
    margin:0 auto;
    padding:0;
}
#box{
    height:200px;
    width:200px;
    border:1px solid red;
}
#box>div{
    width:100%;
    height:32.855%;
    border:1px solid blue;
    -moz-column-count:3; /* Firefox */
    -webkit-column-count:3; /* Safari and Chrome */
    column-count:3;

     -moz-column-rule:4px outset #ff0000; /* Firefox */
     -webkit-column-rule:4px outset #ff0000; /* Safari and Chrome */
      column-rule:4px outset #ff0000;
}
#first{

}

在线预览:column-count实现
但要注意的是,使用列布局时,其包含的内容本身的宽度必读大于等于容器宽度,在大于容器宽度时,会自行增加列数。

第四种方式

修改css如下:

*{
    margin:0 auto;
    padding:0;
}
#box{
    height:200px;
    width:200px;
    border:1px solid red;
}
#box div{
    display:flex;
    border:1px solid blue;
    height:32%;
}
#box div span{
    display:inline-block;
    border:1px solid green;
    width:100%;
}

在线预览:demo

已经总结我的博客:不用table,怎么等分DIV

欢迎各位补充其他方式

bootstrap 的栅格系统就是干这个的。
可以参考下它的内部实现。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 或许你需要的是淘宝UED的这个内容

    撰写回答
    你尚未登录,登录后可以
    • 和开发者交流问题的细节
    • 关注并接收问题和回答的更新提醒
    • 参与内容的编辑和改进,让解决方法与时俱进
    推荐问题