日期:2014-02-28 浏览次数:21376 次
应原书编辑要求,先在文章顶部给出链接:《Everything You Know About CSS Is Wrong》http://www.sitepoint.com/books/csswrong1/
这本书是10月发行的旧书,为了避免版权纠纷,如要转载本文请保留以上链接,并遵照该 CC2.5协议。
从 digital-web 的首页上看到一个标题党《Everything You Know About CSS Is Wrong》,被雷过之后细心看了下原文,发现了一种新的CSS规划思路(其实就是详细引见了display:table属性)。在IE6仍是王道的时代谈这种技术为时过早,全当是练习英文翻译贴出来给大家分享下,欢迎大家指点不足之处。
—————————以下是中文翻译——————————–
当IE8发布时,它将支持很多新的CSS display属性值,包括与表格相关的属性值:table、table-row和table-cell,它也是最后一款支持这些属性值的主流浏览器。它标志着复杂CSS规划技术的结束,同时也给了HTML表格规划致命一击。最终,使用CSS规划来制造出类似于table规划的栅格将会变得十分迅速和简单。
网页元素使用上那些与表格相关的display属性值后,能够模仿出与表格相反的特性。我将会在该文中给大家演示这种方法给CSS规划带来的巨大影响。
使用CSS表格
CSS表格能够处理所有那些我们在使用绝对定位和浮动定位进行多列规划时所遇到的问题。例如,“display:table;”的CSS声明能够让一个HTML元素和它的子节点像table元素一样。使用基于表格的CSS规划,使我们能够轻松定义一个单元格的边界、背景等款式,而不会产生由于使用了table那样的制表标签所导致的语义化问题。
在深入了解这种方法之前,让我们先来写份HTML文档实例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
? HTML head content…
</head>
<body>
<div id="wrapper">
<div id="header"></div>
<div id="main">
<div id="nav">
? navigation column content…
</div>
<div id="extras">
? news headlines column content…
</div>
<div id="content">
? main article content…
</div>
</div>
</div>
</body>
</html>
这份HTML源代码满足了内容呈现方面的要求。先是导航栏,然后是附加栏,最后是内容栏。
我们同样需求将以下CSS款式使用上去:
#main {
display: table;
border-collapse: collapse;
}
#nav {
display: table-cell;
width: 180px;
background-color: #e7dbcd;
}
#extras {
display: table-cell;
width: 180px;
padding-left: 10px;
border-right: 1px dotted #d7ad7b;
}
#content {
display: table-cell;
width: 380px;
padding-left: 10px;
}
这种基于表格的新CSS规划方式能够正确的在IE8、Firefox、Safari和Opera(译者注:包括FF2/FF3/Google都通过了测试)中显示出来。下面这张图片是它在IE8中的样子:
我们轻松实现了三栏等高规划,而无需使用伪造背景图片之类的技巧,更不用担心定位和清除浮动的问题!