打印

[教程] [翻译]像table一样布局div[1]

本主题由 yoom 于 2010-1-21 23:12 下沉
复制内容到剪贴板
代码:
翻译自:Equal height boxes with CSS
原文:http://www.456bereastreet.com/archive/200405/equal_height_boxes_with_css/
这个翻译的页面版权所有,授权蓝色理想。转载请注明出处
下面是我翻译的内容,是根据我对文章的理解意译的,你就别挑哪里翻译的不对了,我的目的只是传达这个CSS技巧
许多网页设计师都喜欢,将两个或者多个容器等高的并排放置,并在里面展示每个容器的内容,就象经典表格布局中的单元格控制几个栏目的位置,也喜欢容器的内容居中或顶部对齐显示。
但是你又不喜欢用table来实现他,那怎么办呢?实现的方法很多,有根据视觉错觉实现的,有用JS控制使高度相等的,还有采用容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法来解决列高度相同的问题。
其实有个简单的方法,使用display:table, display:table-row and display:table-cell 就可以实现,而且高度小的容器会自适应那些高度相对较高的,但是IE不支持这个属性,我们先不用去责备IE,相信以后会有所改善的。这里我制作了一个模型

先看看xhtml的结构:
复制内容到剪贴板
代码:
<div class="equal">
    <div class="row">
        <div class="one"></div>
        <div class="two"></div>
        <div class="three"></div>
    </div>
</div>
很简单不用解释就能看懂,但是这里给出一个table的结构,是不是很相似
复制内容到剪贴板
代码:
<table>
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>
下来是css:
复制内容到剪贴板
代码:
    .equal {
        display:table;
        border-collapse:separate;
    }
    .row {
        display:table-row;
    }
    .row div {
        display:table-cell;
    }
    .row .one {
        width:200px;
    }
    .row .two {
        width:200px;
    }
    .row .three {
        
    }
解释:
1.dispaly:table;让层.equal作为块级元素的表格table显示,也就是将他作为一个表格
2.border-collapse:separate;边框独立,就像表格没有合并单元格以前
3.display:table-row;将.row作为表格行tr显示
4.display:table-cell;将.row的下级div作为表格单元格td显示
5.然后定义宽度

这里还使用了 border-spacing:10px;来区别几个盒子,正如上面所陈述的,IE下不能正常显示,但是在:Mozilla 1.6, Opera 7.50, Safari 1.2.2, Firefox 0.8, OmniWeb 5b, Camino 0.8b, and Netscape 7.1经过测试均可以完美显示.
至此整个任务就结束了,请在非IE浏览器下预览模型效果
本帖最近评分记录
blog Web标准化交流会 WEB标准群:46077068
IE 中支持的 display 值只有 none, block, inline 和 inherit
用 javascript 更改表格元素的显示需要额外注意才行
IE不支持的???
小鸟初初飞入大森林-越看越深
FF可以很好的支持的。期待IE7能够完美的支持,但是算上IE7的普及时间,也要等一段时间啦。
IE不支持?那就先放一下了,期待[2]

TOP

IE不支持,怎么能谈上用呢?
现在的市场还是IE的

TOP

我觉得一旦div变成了页面结构嵌套,就算多好看也是无用的。我宁愿暴露给搜索引擎一个最简单、最纯粹的内容链接,再做一个js来做皮肤美化。
-随笔/文集/画集/教程:GhostEver Blog-
-瑶池摘仙果,沙扬梦驼铃,风起孤云舞,流意满阁楼

TOP

引用:
原帖由 cloudy 于 2006-8-9 11:12 发表
我觉得一旦div变成了页面结构嵌套,就算多好看也是无用的。我宁愿暴露给搜索引擎一个最简单、最纯粹的内容链接,再做一个js来做皮肤美化。
我觉得不尽然,div嵌套也是有他的好处的,比如简单。
junly.61uc.com

TOP

这群呆子,你们为什么要用DIV来模拟表格?难道你们吃饱撑的?你们技术很牛?DIV有DIV的用处,表格有表格的用处,不要乱用。我也可以用表格模拟DIV的,但是我从来不这么做,因为我不像你们那么愚蠢。

TOP

引用:
原帖由 bxezt2007 于 2008-3-14 17:11 发表
这群呆子,你们为什么要用DIV来模拟表格?难道你们吃饱撑的?你们技术很牛?DIV有DIV的用处,表格有表格的用处,不要乱用。我也可以用表格模拟DIV的,但是我从来不这么做,因为我不像你们那么愚蠢。
这位同学,你到底看懂了文章的意思没有?没有的话麻烦回头一个字一个字看下来。

这是一个实现等高的技巧,谁去模拟表格了?

最后,嘴巴放干净点。本来不发表言论的,不过看你的口气就有冲动要还口。

TOP

是啊,IE下那是相当难看!
FF下正常,实现等高这个方式不错!
浏览器的兼容性咋就这么麻烦呢,赶快统一起来!
学习 进步 学习不停 进步不止

TOP

引用:
原帖由 majer 于 2008-3-14 17:29 发表


这位同学,你到底看懂了文章的意思没有?没有的话麻烦回头一个字一个字看下来。

这是一个实现等高的技巧,谁去模拟表格了?

最后,嘴巴放干净点。本来不发表言论的,不过看你的口气就有冲动要还口。
对不起,当时刚刚睡醒,确实是没看文章内容,只是粗略地喵了一眼,又以为是个在教人家模拟表格的教程;以后我会仔细看清楚再跟帖。
不过,做一个IE不支持的布局方式,好像是在实际应用中无任何意义。当然,此贴只是讨论技术,而不是实际应用。

[ 本帖最后由 bxezt2007 于 2008-5-26 16:09 编辑 ]

TOP

最近在学习这个,仔细看一下。
警告
  • yoom: 请勿翻老帖进行无意义回复。 2010-1-21 23:09

提示:警告两次以上者,每次警告将会被禁言三天。

TOP