CSS解决浏览器的等宽空格问题

苍嘉烨彻

苍嘉烨彻

2016-02-19 23:37

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的CSS解决浏览器的等宽空格问题,手机电脑控们准备好了吗?一起看过来吧!

原文:http://www.gracecode.com/Archive/Display/2254

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

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

同时,注意到 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--

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

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

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

对应的 CSS 应为

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

经测试通过。

--Split--

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

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

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

另,感谢 小虎 的发言

展开更多 50%)
分享

猜你喜欢

CSS解决浏览器的等宽空格问题

Web开发
CSS解决浏览器的等宽空格问题

解决浏览器的等宽空格CSS问题方法

Web开发
解决浏览器的等宽空格CSS问题方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

CSS 浏览器的等宽空格

Web开发
CSS 浏览器的等宽空格

DIV CSS布局浏览器兼容的问题

Web开发
DIV CSS布局浏览器兼容的问题

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

FireFox浏览器和IE浏览器下CSS兼容问题

Web开发
FireFox浏览器和IE浏览器下CSS兼容问题

浏览器不能正常解析CSS代码的解决

Web开发
浏览器不能正常解析CSS代码的解决

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

DIV+CSS网页布局的基础知识整理

DIV+CSS网页布局的基础知识整理

不要使用的HTML标签(WEB标准网页布局)

不要使用的HTML标签(WEB标准网页布局)
下拉加载更多内容 ↓