Home > Develop > CSS 设置段落间距

CSS 设置段落间距

2010/01/27 23 comments

段落间距网页设计里一个提升阅读体验的重要因素。但网页排版不想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)。内容有删改。

Categories: Develop Tags: ,

23 comments.

  1. 万戈
    2010/01/27 at 3:54 pm

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

    Reply | #1
  2. welee
    2010/01/27 at 4:22 pm

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

    Reply | #2
  3. 土狼妹妹
    2010/01/27 at 4:44 pm

    对代码基本不懂,学习了

    Reply | #3
  4. hxyhbkj
    2010/01/27 at 5:50 pm

    IE6和IE7不兼容CSS~~~!

    Reply | #4
  5. Nox
    2010/01/27 at 6:34 pm

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

    Reply | #5
  6. evlos
    2010/01/27 at 7:18 pm

    IE系列就是一茶几 ~

    Reply | #6
  7. Leigh
    2010/01/27 at 7:24 pm

    搓个炉石,绝对还会来看

    Reply | #7
  8. Kaelzhang
    2010/01/27 at 7:57 pm

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

    Reply | #8
  9. Leigh
    2010/01/27 at 8:39 pm

    @Kaelzhang 额。。

    Reply | #9
  10. zwwooooo
    2010/01/27 at 8:45 pm

    ie失望

  11. zwwooooo
    2010/01/27 at 8:45 pm

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

  12. leecay
    2010/01/27 at 11:07 pm

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

  13. Jutoy
    2010/01/28 at 1:57 am

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

  14. Zenoven自由人
    2010/01/28 at 10:31 am

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

  15. bolo
    2010/01/28 at 1:17 pm

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

  16. Jutoy
    2010/01/28 at 1:31 pm

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

  17. bolo
    2010/01/28 at 1:34 pm

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

  18. LAONB
    2010/01/28 at 2:56 pm

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

  19. MC
    2010/01/29 at 6:04 pm

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

  20. 卢松松
    2010/01/29 at 8:25 pm

    我还是在ie6下搞css呢

  21. Firm
    2010/01/29 at 10:11 pm

    我经常没考虑到IE6

  22. bolo
    2010/01/30 at 11:15 am

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

  23. Firm
    2010/01/31 at 4:36 pm

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

X [¥15]