Home > Develop > CSS 设置段落间距
2010January . 27th

CSS 设置段落间距

段落间距网页设计里一个提升阅读体验的重要因素。但网页排版不想Word那样简单,你能否通过CSS有效率地设置段落间距呢?

网页设计里的文字排版问题

作为网页设计师,我们必须为文章的每个小标题和段落都预留一定的余量(在CSS通常使用margin),但一个段落里所包含的元素(HTML标签)并不是一成不变的,这意味着你必须为这些可能存在的元素都设置一个明确的样式,避免产生多余的代码。

在逐步向W3C的标准过渡的前提下,目前设置段落间距的方法主要有两种:

通过类(Class)

为段落的第一个元素指定一个Class值,赋予margin-top:0。

HTML:
1
2
3
4
<div id="articles">
<h1 class="first">Heading</h1>
<p>Welcome to Bolo's blog...</p>
</div>
CSS:
1
.first { margin-top: 0; }

这种方法的缺点是:引入了一个新的Class,这意味着它会降低我们的效率。你可能需要修改以前写下的文章,而且也不利于文章内容的增减。

通过CSS伪类

CSS伪类已经逐渐被一些先进的浏览器支持。

HTML:
1
2
3
4
<div id="articles">
<h1>Heading</h1>
<p>Welcome to Bolo's blog...</p>
</div>
CSS:
1
#articles >  :first-child { margin-top: 0; }

通过CSS伪类把margin-top:0赋予#articles的第一个子元素。这个方法不需要我们手动地引入一个多余的Class,因此你无需再去调整文章的代码。适应性非常强。

这种方法在CSS2标准里已经被承认,但一直得不到普及,原因就是IE6不支持(因此消灭IE6是所有Web Developer共同的责任—译者注)。

你写的CSS对IE兼容吗?

此处开始是精华啊—译者注

以上的内容只是对当前CSS可以实现的部分功能的简述,如何发挥CSS的威力靠的是网页设计师的使用方法。下面将介绍几个强大的工具,可是很方便地对IE浏览器进行最真实的兼容性测试,让你选择最好的CSS编写方案。

ie7-js

ie7-js是一个JavaScript库,它会使IE表现得像一个兼容W3C标准的浏览器,你可以在这个测试页查看某个版本的IE对这种CSS语法的兼容性,以及它们的兼容写法。

在“IE7 – js”项目有两个主要的JavaScript脚本:IE7.js和IE8.js。当你决定使用IE8-js时就不需要同时使用IE7-js,因为IE8-js已经包含了IE7-js的所有功能。你可以在这个页面找到所有关于这个项目的说明。

ie-css3.js

IE-css3.js可是令IE提供对CSS3规则的支持。但美中不足的是这个脚本并不可以令IE完全支持CSS3,而只能作为对IE的CSS引擎的扩展。毕竟CSS3还是一个未完成的标准。

eCSStender

这应该是目前最强大的JavaScript写的IE扩展了,它整合了上述两个扩展的一些突出功能,并添加了一些额外的支持。你可以在这个页面查看关于这个库的详细说明。

Bolo的看法

无论消灭IE6呼声多么高,最好的办法还是尽量去兼容它,这才不至于令自己损失读者。因此在写浏览器端的代码时,都应该优先采用兼容性强的方法。实在不行了再去写hack吧。

对于本文推荐的几个JavaScript库,如果真的用在线上的网站的话,其缺点是非常致命的(浏览器禁用了JavaScript的情况下),而且容易引起其他的不兼容(主要是和其他JavaScript脚本冲突)。因此,我推荐大家用这些库来了解IE的性能,这才是一劳永逸的做法。

本文译自:Hacking ‘paragraph spacing’ with CSS (despite IE)。内容有删改。

  1. 2010January . 27th - 3:54 PM

    提到CSS我就哭,IE的CSS怎么写都不兼容,特别是IE6和IE7

  2. 2010January . 27th - 4:22 PM

    一般的 IE6 兼容问题可以通过 hack 处理,但对于一些新的网页设计技术,即使 IE8 也不支援,这无疑是个悲剧。
    如果要兼容 IE 的话,难免会扼杀新技术的发展,若不兼容 IE 的话,则会流失一部分读者,对前端设计的人来说,这是个很纠结的问题。
    据说 IE9 将全面支援 HTML5 和 CSS3,希望微软这次说到做到吧。

  3. 2010January . 27th - 4:44 PM

    对代码基本不懂,学习了

  4. 2010January . 27th - 5:50 PM

    IE6和IE7不兼容CSS~~~!

  5. 2010January . 27th - 6:34 PM

    经典的东西,二话不说,就要收藏。。

  6. 2010January . 27th - 7:18 PM

    IE系列就是一茶几 ~

  7. 2010January . 27th - 7:24 PM

    搓个炉石,绝对还会来看

  8. 2010January . 27th - 7:57 PM

    @Leigh 打断LS搓炉石,你如果开无敌就大驱散。

  9. 2010January . 27th - 8:39 PM
  10. 2010January . 27th - 8:45 PM

    ie失望

  11. 2010January . 27th - 8:45 PM

    最烦的就是ie6了,老是在它身上花费很多时间

  12. 2010January . 27th - 11:07 PM

    现在用IE8~实在不行就直接用FF~

  13. 2010January . 28th - 1:57 AM

    对IE的解决方法,一律用绝对定位伺候,这是我的野蛮方法,囧

  14. 2010January . 28th - 10:31 AM

    但是IE还是占据着大半江山。。。。无奈啊

  15. 2010January . 28th - 1:17 PM

    @万戈
    那你先看看被人怎么做得的吧
    @welee
    无论IE9支持什么,如果不快点淘汰旧版本的话,到时将造成更大的兼容问题
    @hxyhbkj
    你听谁说的?只是兼容性差而已
    @evlos
    IE only的网站是杯具
    @Jutoy
    这样不好啊,在我印象中Opera 10 beta对position属性的渲染和IE是有很大出入的,不知道现在修正了没有
    @Zenoven自由人
    在我这里只占小半了,哈哈

  16. 2010January . 28th - 1:31 PM

    @bolo
    可以加个*号嘛,这样就只有IE能认了

  17. 2010January . 28th - 1:34 PM

    @Jutoy
    所以这样就把简单的问题边复杂了

  18. 2010January . 28th - 2:56 PM

    好久没研究CSS了,IE6能滚多远就滚多远。

  19. 2010January . 29th - 6:04 PM

    我汉化了一下 你的 Inpad 主体, 生成了 po 和 mo 哪些汉化文件,怎么放上去却没有汉化效果啊,给我的邮箱你了,你可以发给我问我拿。。。。。。。。。
    如果搞定就发布出去

  20. 2010January . 29th - 8:25 PM

    我还是在ie6下搞css呢

  21. 2010January . 29th - 10:11 PM

    我经常没考虑到IE6

  22. 2010January . 30th - 11:15 AM

    @卢松松
    你真牛,想不到你还IE6
    @Firm
    这样对访客不好

  23. 2010January . 31st - 4:36 PM

    @bolo
    恩,我都是直接忽略,时代在进步嘛

Subscriber selector

Close