浏览器的字体等宽空格

作者: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
投稿

猜你喜欢

  • ASP生成静态网页各种方法收集整理

    2008-02-18 19:25:00
  • Centos 安装 PHP7.4 和 Nginx的操作方法

    2023-10-14 01:11:55
  • Python Matplotlib库安装与基本作图示例

    2021-09-01 04:22:51
  • Sql Server中存储过程中输入和输出参数(简单实例 一看就懂)

    2012-11-30 20:09:36
  • Python编程中用close()方法关闭文件的教程

    2023-02-10 22:10:06
  • python 把列表转化为字符串的方法

    2023-06-14 20:35:48
  • 轻松实现TensorFlow微信跳一跳的AI

    2021-11-24 10:35:40
  • Python时间操作之pytz模块使用详解

    2023-05-10 02:57:17
  • php隐藏IP地址后两位显示为星号的方法

    2023-08-16 13:05:17
  • SQL Server查询速度慢的原因及优化方法

    2009-01-05 13:46:00
  • python模块导入的细节详解

    2021-01-09 19:18:08
  • 探究Python中isalnum()方法的使用

    2021-12-05 19:05:31
  • SQL Server 2000里的数据类型

    2011-06-11 14:07:00
  • python的命名规则知识点总结

    2023-08-22 09:48:21
  • c#编写的高并发数据库控制访问代码

    2024-01-16 04:57:04
  • 谈谈Tempdb对SQL Server性能优化有何影响

    2024-01-28 04:55:31
  • SQL语句导入导出大全

    2024-01-25 10:37:39
  • opencv导入头文件时报错#include的解决方法

    2023-03-28 04:34:34
  • numpy:np.newaxis 实现将行向量转换成列向量

    2023-07-13 03:14:39
  • Python 25行代码实现的RSA算法详解

    2023-04-06 17:05:58
  • asp之家 网络编程 m.aspxhome.com