空格用法

使用 等空格实现最小成本中文对齐

中文成本

web前端开发 · 2015-01-27 18:18

一、重见天日第二春

写了篇文章“web页面相关的一些常见可用字符介绍”(见下篇文章),这篇文章里面藏了个好东西,就是使用一些空格实现个数不等的中文对齐或等宽。见下表:

字符以及HTML实体 描述以及说明

 

这是我们使用最多的空格,也就是按下space键产生的空格。在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个)。要使用html实体表示才可累加。为了便于记忆,我总是把这个空格成为“牛逼(nb)空格(sp – space)”,虽然实际上并不牛逼。该空格占据宽度受字体影响明显而强烈。在inline-block布局中会搞些小破坏,在两端对齐布局中又是不可少的元素。是个让人又爱又恨的小东东。

?

 

该空格学名不详。为了便于记忆,我们不妨就叫它“恶念(e n-ian)空格”。此空格传承空格家族一贯的特性:透明滴!此空格有个相当稳健的特性,就是其占据的宽度正好是1/2个中文宽度,而且基本上不受字体影响。

?

 

该空格学名不详。为了便于记忆,我们不妨就叫它”恶魔(e m-o)空格”。此空格也传承空格家族一贯的特性:透明滴!此空格也有个相当稳健的特性,就是其占据的宽度正好是1个中文宽度,而且基本上不受字体影响。

?

 

该空格学名不详。我们不妨称之为“瘦弱空格”,就是该空格长得比较瘦弱,身体单薄,占据的宽度比较小。我目前是没用过这个东西,这里亮出来是让其过一下群众演员的瘾。

其中的  ,由于具有某一超赞的特性,使其可以登上web届的舞台!什么特性呢?如上表加粗展示,1. 透明; 2. 宽度正好跟中文正好是1:21:1的关系,于是,一些中文排版对齐什么的,直接就可以使用这两个空格调节,如:

<ul>
    <li class="li">姓&emsp;&emsp;名:<input type="text" /></li>
    <li class="li">手&ensp;机&ensp;号:<input type="text" /></li>
    <li class="li">电子邮箱:<input type="text" /></li>
</ul>

结果轻松实现了2字/3字/4字中文的等宽两端对齐效果:

以上就是旧文内容,那为何现在这个点老生常谈呢?

因为刚刚我碰巧翻到这篇旧文时候,发现1天的访问量才10, 觉得文章如落冷宫,甚是令人怜悯,着实令人扼腕叹息。于是,决定再加点料,重新包装下,再次推向市场,看看能不能掀起一点波澜。

还有一点就是,上面的空白字符中文对齐方法在IE6下不能完全兼容,而当年11年的时候,IE6在中国还是很嚣张的,所以,很多小伙伴后来就没坚持。而如今,大红灯笼高高挂,IE6早早休掉回娘家,没有了阻碍,此方法说不定能掀起一点波澜。

二、空格新成员 

「叉三千」指什么呢?哈哈,其实是全角空格。

中文字体都是等宽的,一个全角空格的宽度就是一个普通中文的宽度。所以,上面的demo中&emsp;空格换成全角空格也是可以滴!

但是,我们不能直接在页面中打全角空格,因为在大多数编辑器中空格是透明滴,很容易就被删掉;另外,HTML压缩时候,空格很可能被干掉!咋办?需要转换书写形式。

在web页面上,一般有3种书写:

  1. 直接,例如搜狗输入法输入“版权” – ?.
  2. web字符,&copy;
  3. charCode表示:©

而上面的&ensp;, &emsp;就是具有特定名称的web字符。但是,恕我寡闻,我并不清楚全角空格是否有对应& + 关键字示意,所以,就使用工具转成了charCode字符表示,也就是这里的 ,又称「叉三千」!

稍等,你刚说了工具,什么工具!?

哈,这位同学好敏锐,我是有一个私藏的小工具,可以把任意字符转换成HTML识别格式。

使用了这个工具,你会发现&ensp;, &emsp;原来是相邻兄弟关系:

  • &ensp;
  • &emsp;

三、更多内容

当中文和英文混杂的时候,使用&ensp;, &emsp;等空格实现冒号的完美对齐还是有些困难的,除非英文使用的是等宽字体,于是乎,我们就可以使用普通的&nbsp;空格做英文字符的宽度调节。

再科普点关于字符的实用知识吧:
1. HTML中字符输出使用&#x配上charCode值;
2. 在JavaScript文件中为防止乱码转义,则是\u配上charCode值;
3. 而在CSS文件中,如CSS伪元素的content属性,直接使用\配上charCode值。

因此,想在HTML/JS/CSS中转义“我”这个汉字,分别是:

  1. \u6211, 如console.log(‘\u6211‘);
  2. \6211, 如.xxx:before { content: ‘\6211‘; }

考虑到直接 这种形式暴露在HTML中,可能会让屏幕阅读器等辅助设备读取,从而影响正常阅读流,因此,我们可以进一步优化下,使用标签,利用伪元素,例如:

.half:before { content: ‘\2002‘; speak: none; }
.full:before { content: ‘\2003‘; speak: none; }

这样,占位的空格字符即不能读,也不能选了。

好了,就这些,放水完毕!

时间: 2024-11-07 05:51:43

空格用法的相关文章

python 3.0 字符串功能

字符传常用功能 方法描述 string.capitalize 把字符串的第一个字符大写 用法: name = 'fenggongzi'print (name.capitalize()) Fenggongzi string.center(width) 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 用法: name = 'fenggongzi'print (name.center(50,'#')) ####################fenggongzi##########

javascript经常用到的函数

trim函数:                         trim() lTrim() rTrim()校验字符串是否为空:                 checkIsNotEmpty(str)校验字符串是否为整型:               checkIsInteger(str)校验整型最小值:                    checkIntegerMinValue(str,val)校验整型最大值:                    checkIntegerMaxValu

linux基础的一些常见问题总结_学习笔记

平时自己的总结(miscellaneous) oracle无法实现远程用户连接:  解决办法:       #sqlplus /nolog     SQL> connect / as sysdba    SQL> alter system set local_listener = '(ADDRESS = (PROTOCOL=TCP)(HOST=192.168.0.2)(PORT=1521)(SID=orcl))' scope=spfile;        SQL> shutdown im

JS基础笔记集

three.js:3D框架  svgtween:动画框架 一.js事件的组成:on+事件名,当触发某个事件做一些事情:   如:onclick:当点击鼠标,触发的事件: 二.在写一个页面时,结构(html).样式(css)和行为(js)是要分离出来的:    好处:代码可复用,可读性好,可维护性好: 三.通过js获取元素方法:    1>通过元素中的id名,获取元素:document.getElementById("id名"):    2>通过元素名,直接获取元素:getE

Python 字符串 String 内建函数大全(1)

关于 Python 的字符串处理相关的方法还是非常多的,由于我正在学习 Python,于是就把 Python 中这些混杂的用于 string 的函数总结出来,在自己忘记的时候便于查找,希望对于有类似需求的人有所帮助. captalize() 函数 功能 将一个字符串的第一个字母大写 用法 str.captalize() 参数 无 返回值 string 示例代码 str = "hello world!" print "str.capitalize(): ", str.

javascript通用函数库

/* -------------- 函数检索 -------------- trim函数:                         trim() lTrim() rTrim() 校验字符串是否为空:                 checkIsNotEmpty(str) 校验字符串是否为整型:               checkIsInteger(str) 校验整型最小值:                    checkIntegerMinValue(str,val) 校验整型最

表单+css样式+

一.表单 含义:所有表单元素放在 form 标签里面 <form action="提交的地址" method="提交方式默认get">表单元素 </form>页面get传值的写法路径?属性=属性值键值对键=值 & 键=值 知识点:所有的表单元素,除了提交和重置和文件,其他表单 元素可以在form标签外面用1.表单元素的类型文本类型:disabled/readonly:不可编辑 文本框:text 密码框:password 隐藏域:hid

中文文案排版指北

中文文案排版指北 統一中文文案.排版的相關用法,降低團隊成員之間的溝通成本,增強網站氣質. Other languages: English Chinese Traditional Chinese Simplifed 目次 空格 中英文之間需要增加空格 中文與數字之間需要增加空格 數字與單位之間需要增加空格 全形標點與其他字符之間不加空格 -ms-text-autospace to the rescue? 標點符號 不重複使用標點符號 全形和半形 使用全形中文標點 數字使用半形字符 遇到完整的英

ansible软件剧本书写规范

编写剧本规范:http://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html遵循pyyaml①. - 用法说明,表示列表显示的内容水果信息: 苹果 香蕉 西瓜②. : 用法说明:姓名: 张三性别: 男人员信息: 运维人员: sa 开发人员: dev 存储人员: dba③. 空格 用法说明:对内容进行分级时,需要有两个空格表示分级软件安装步骤: 服务端安装步骤:第一个里程碑: 检查软件是否安装第二个里程碑: 编