Trick:不用table,怎么等分DIV

在SF上,有人提出一个问题:不用table,如何把Div分成3行*3列。提供了三种思路:

第一种方式

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实现

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

原文链接:http://www.ido321.com/1562.html

ps:原文下方的评论给出第四种方式。

时间: 2024-11-01 22:32:33

Trick:不用table,怎么等分DIV的相关文章

table布局与div布局

DIV与TABLE本身并不存在什么优缺点,所谓web标准只是推荐的是正确的使用标签,好比说:DIV用于布局,而TABLE则本来就是转二维数据的.让TABLE做该做的事,并不是说页面里不出现TABLE就是多么多么牛. DIV是标准,是大势所趋,但并不意味着所有的页面都适合用它来做. 中国的门户和国外的有很大的区别,中国网民并不喜欢信息量少的页面,YAHOO到了中国页面上的内容就多了不少,而上次改为简洁的页面后访问量下降的厉害以至于没过几天就又改了回来.正式由于中国的国情造就了搜狐.新浪这样门户.

CSS技巧!像table一样布局div

许多网页设计师都喜欢,将两个或者多个容器等高的并排放置,并在里面展示每个容器的内容,就象经典表格布局中的单元格控制几个栏目的位置,也喜欢容器的内容居中或顶部对齐显示. 但是你又不喜欢用table来实现他,那怎么办呢?实现的方法很多,有根据视觉错觉实现的,有用JS控制使高度相等的,还有采用容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法来解决列高度相同的问题. 其实有个简单的方法,使用display:table, display:table-row and display:table-cel

Table td中 div 不能100%的原因

就算和Table一样去掉头部的那段代码也不能100%显示,原因很简单,你让div的height="100%",执行网页时,css先执行到,而整个网页中的内容还没有完全载入,是获取不到div外面的<body>等的高度的,所以height="100%"也就不能如愿显示了.加上body{height:100%}就轻松解决啦,一开始就让body以100%显示,他的下级div自然就100%的,不过对于FF浏览器还应该把HTML也先给height:100%,即htm

CSS3等分div

CSS代码 body,p{margin: 0;} .parent{display: flex; width:1200px; margin:0 auto;} .child{flex:1;height: 100px;} .child + .child{margin-left: 20px;} Html代码 <div class="parent" style="background-color: lightgrey;"> <div class="

不用position,让div垂直居中

先弄懂after伪类的用法,就可以很容易理解了. <!DOCTYPE html> <html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .pic_box{width:400px; height:400px; background-c

如何用&lt;dl&gt;标签做表格而不用table标签

我们都知道很多的内容编辑器(TinyMCE编辑器.fck)都有插入表格功能,快速方便,但是这些表格用到的<table>标签,可以查看html源代码就能发现,table标签对搜索引擎不是很友好,table太多话可能无法被SE收录,有没办法用其他方法来实现绘制表格呢?比如用<dl>标签? <dl> 标签是定义列表(definition list),结合<dt>(定义列表中的项目)和<dd>(描述列表中的项目),并将它们设置为同行显示就能实现表格的效果

制作网页时Div与Table的区别

1.制作效率 我想没人反对表格的制作效率要高于Div的效率.很明显Div布局代码全部都要手写.即使你在熟悉代码,也没有 Dreamweaver生成来的快吧!所以Table可以很容易建立起结构化的界面,通过table自身的参数定义,我们能把页面布局很快定义成我们所需要的效果. 2.浏览器的兼容问题 table和div在兼容问题中,table更具有优势. 我们常用的IE6.0,IE7.0火狐Firefox浏览器对div css设置上非常挑剔,往往同一个css在2种浏览器上会有不同的结果,对设计制作人

基于表单布局:分析过时的table结构与当下的div结构

一些话在前面 最近做了百度前端学院一个小任务,其中涉及到表单布局的问题, 它要处理的布局问题:左边的标签要右对齐,右边的输入框.单选按钮等要实现左对齐. 从开始入门就被告知table布局已经过时了,当时只知道其然不知其所以然,于是我尝试用了div布局和table布局两种解法. 先上效果图: table布局表单 HTML结构: <form action="" class="clearfix" id="reg"> <table cl

html中DIV+CSS与TABLE布局方式的区别及HTML5新加入的结构标签(转)

DIV与TABLE布局的区别 div 和 table 的加载方式不同,div 的加载方式是即读即加载,遇到 <div> 没有遇到 </div> 的时候一样加载 div 中的内容,读多少加载多少:table 的加载方式是完成后加载,遇到 <table> 后,在读</table> 之前,table 中的内容不加载,或者传输中断了的时候加载,这是因为TABLE牵涉到多行多列问题,所以只有当TABLE所有内容加载完毕,浏览器才知道该怎么显示 . div与css配合使