
今天早上刷新闻时,一个关于CSS的标题吸引了我的注意。这类文章通常让我学到新技巧。我点开了两篇相关博文:一篇是David Bushell的固定全出血布局,另一篇则是Josh Comeau的同一主题文章。读完后,我最大的感触是:为什么要把如此简单的东西搞得这么复杂?当然,这两篇文章依然值得一读——我也从中收获了一些新思路。
圣杯布局(Holy Grail layout)曾让无数开发者头疼。在必须依赖<div>和浮动的年代,想准确实现它简直是一场噩梦。但在此之前,用表格实现这个布局却轻而易举。
请看Josh文章中的这张经典示意图:

只需看一眼,你就能明白如何用表格来描述它:
用表格代码实现几乎就是几行的事。再配合简单的CSS设置,让表格撑满整个视口:
body, html { padding: 0; margin: 0; height: 100%; }
table { width: 100%; min-height: 100%; }
我知道你可能会反对:“表格不应用来布局!”但为什么?现代CSS不断添加新特性,本质上是想再现表格的功能,却把元数据都塞进CSS,导致语法变得笨拙。如果你实在不想用<table>元素,完全可以用<div>配合display: table-cell等属性模拟表格行为。
不过话说回来,圣杯布局如今已不那么流行了——侧边栏菜单显得过时,移动端适配也不理想。广告呢?放在侧边栏太奇怪,还不如直接插在正文中间。于是我们又回到了最传统的流式布局。
我挺喜欢全出血(Full Bleed)布局。这篇博文本身就在使用它(虽然HTML/CSS来自主题,并非我手写)。这种布局的核心是:正文内容居中显示在一个固定宽度的列中,但图片等元素可以突破这个宽度,延伸到页面边缘。
比如下面这张图片,受限于正文宽度:

在编辑器中,我可以一键让这张图片占满所需宽度,于是它会比正文列更宽(若不在移动端)。如果屏幕不是太大,它甚至能触到屏幕边缘。

不过我通常不会让图片真正贴到屏幕边缘,因为现代显示器的尺寸实在太大,那样反而会破坏可读性。
为了达到这种效果,我见过五花八门的实现方案。今天读的两篇文章又教了我两种新方法。但所有人都忽略了一个更简单的经典方案——来自1997年的CSS 2:
p, h1, h2, h3, h4, h5, h6, img {
margin-left: auto;
margin-right: auto;
display: block;
max-width: 650px;
}
img.extracool {
max-width: 850px;
}
img.ultracool {
max-width: 100%;
}
这段代码在任何现代浏览器中都能完美运行,完全不依赖你周围的布局机制(比如栅格或flex)。你可以为每个元素定义最大宽度,而不是被提前设定的网格线束缚。这几乎就是CSS在页面上的主要用途。而且,它在1997年就已经可以用了!
作为额外福利,这种方案让你的微调变得异常灵活——想给标题设置更宽的限制?加一行规则就行。
关注微信号:智享开源 ,及时了解更新信息。
原文链接:https://blog.brixit.nl/css-is-simple-stop-making-it-hard/
你必须 登录 才能发表评论.
| 微信捐赠 | 支付宝捐赠 |
|---|---|
![]() |
![]() |
扫码关注公众号:智享开源

还没有任何评论,你来说两句吧!