浏览器的字体等宽空格

作者:grace 来源:gracecode.com 时间:2008-08-28 12:25:00 

很多时候,希望能够在 HTML 中使用空格排版。但浏览器在解析 HTML 时,会把连续的空格解析成一个,所以我们会使用   等这样的占位符。

但是   也不是很可靠,比如空格间距非常大,那么我们必须增加多个占位符,同时页面的体积会变得非常大。

同时,注意到 Safari 中的   宽度是已设定字符的空格宽度(Safari 的默认字体为 Times),也就是说一个中文字符需要两个占位符。

具体情况如下图所示

其实,这不是 Safari 的问题,而是字体的问题。解决的方式就是使用下面的属性

font-family: '宋体';

将 Safari 的默认字体设置成“宋体”等中英文等宽的字体,就能解决。Windows 版本的 Safari 字体设置,需要直接使用中文“宋体”这样的名称而不是“Simsun”(了解原因的兄弟请告诉我)。

但至此,我们的根本目标没有解决,就是能否避免使用   这样的占位符,而使用“原生”的空格。考虑针对空白的相应 CSS 属性,具体了解有关 white-space 的用法,接下来就比较好处理了。

总结下使用 white-space 实现等宽空格的条件,有两个。需要设置对应的属性

white-space: pre;

然后设置等宽字符(包括等宽空格)即可。综合起来,就是这样

font-family: '宋体', Simsun; white-space: pre;

由于使用了中文 CSS 名称,所以在实际使用中需要考虑样式的字符编码问题。同时,需要额外考虑的是,苹果机是否有“宋体”(或者其他等宽的字体),有苹果机的兄弟请帮忙测试下

--Split--

感谢 小马 提供的另外一个思路,就是使用 em 单位。1em 简单的说,就可以认为是一个字符宽度;同理,.5em 就是半个字符。那么,上面的情况就可以使用这样写。

<span>买<ins class="half-word"></ins>宝<ins class="half-word"></ins>贝:</span><br /> <span>我的淘宝:</span><br /> <span>社<ins class="two-word"></ins>区:</span><br />

对应的 CSS 应为

.half-word {width: .5em;} .two-word{width:2em;}

经测试通过。

--Split--

针对这上述的两种不同方法,个人认为应当按照实际情况考虑采用。比如第一种方法,虽然依赖具体的等宽字体,但没有添加其他额外的结构,对于以后的维护会更加的方便;第二种方法,则更多的考虑了实际的应用情况(同时也不用依赖具体的等宽字体),但是也添加了额外的结构。

所以,如考虑到以后的可维护性,同时“语义”的角度上分析,推崇第一种做法。而实际的应用情况下,同时需要应用比较复杂时,个人会选用第二种。

标签:浏览器,Safari,字体
0
投稿

猜你喜欢

  • 屏蔽Flash 右键菜单的方法

    2008-05-24 07:21:00
  • 如何把数据从SQL Server导出到Access或Excel中去?

    2009-11-02 20:26:00
  • [译]Javascript风格要素(二)

    2008-02-29 12:51:00
  • SQL Server 2000里的数据类型

    2011-06-11 14:07:00
  • Microsoft Office Access 2007使用技巧

    2008-05-23 13:23:00
  • 如何把URL和邮件地址自动转换为超级链接?

    2009-11-02 20:22:00
  • 完美的渐变透明效果,支持Firefox

    2008-06-18 18:18:00
  • 请注意页面head区域的编码是不是规范

    2008-08-06 13:14:00
  • 如何用变量实现群聊和悄悄话?

    2010-05-19 21:33:00
  • SQL Server重温 事务

    2012-08-21 10:48:15
  • xmlhttp中运行getResponseHeader出错,提示:The requested header was not found

    2010-03-27 21:47:00
  • 如何使用ADO.NET连接数据库?

    2010-06-03 10:52:00
  • MYSQL数据库教程:唯一编号

    2009-02-27 15:27:00
  • 主流浏览器性能比较

    2009-10-19 14:34:00
  • div不换行,css不换行,自动换行

    2009-09-07 12:52:00
  • CSS属性behavior的语法及介绍

    2010-01-13 12:40:00
  • 对用户研究实践的思考

    2010-10-19 12:21:00
  • 文字的减法

    2007-11-06 12:58:00
  • asp检测文件编码方法

    2007-10-03 14:27:00
  • 查询字符串中包含特殊字符的问题

    2009-01-09 13:13:00
  • asp之家 网络编程 m.aspxhome.com