论 HTML 中使用空格的多种方式

2019-08-22

学习空格的使用.

以前只知道  , 现在发现还有别的空格形式, 而别的空格形式我查我这边儿的 HTML 实体表没查着, 所以在这里学习一下.

主要是知道有这么些东西即可, 能够认识它们. 至于我自己平时创造产值的时候当然还是用  .

前面的讲解还是按照我加的 wiki 的介绍来. 其他为辅. 因为我发现有的原作者写的内容跟 wiki 介绍还是有出入的.

这就是我和 xS叉N 还有 j书上的人的区别: 我 Command + C、Command + V 的时候都是带着批判审慎的态度, 都过了一遍脑子, 或是在自己电脑上亲自跑出结果了而不是无脑抄. 你自己都不知道好不好使就去无脑抄, 那可不抄的都是些并没有什么卵用的么. 到时候再碰到问题用不了怪谁😂

以下内容出自: HTML中& nbsp; & ensp; & emsp; & thinsp;等6种空白空格的区别 这位作者我这边儿看来应该是写得最早的. 就先当是他写的吧.

还参考了: chriscoyier/dabblet.css

再就可以读一读:

html 空格符號 nbsp; ensp; emsp; 介紹以及實現中文對齊的方法

HTML中    等6种空格标记

HTML 提供了 5 种空格实体(space entity), 它们拥有不同的宽度, 非断行空格( )是常规空格的宽度, 可运行于所有主流浏览器. 其他几种空格(   ‌‍)在不同浏览器中宽度各异.

  

wiki 介绍见: Non-breaking space

它叫不换行空格, 全称 Non-breaking space (原文说的是 No-Break Space, 不专业), 它是最常见和我们使用最多的空格, 大多数的人可能只接触了  , 它是按下 space 键产生的空格. 在 HTML 中, 如果你用空格键产生此空格, 空格是不会累加的(只算 1 个). 要使用 HTML 实体表示才可累加, 该空格占据宽度受字体影响明显而强烈.

 

wiki 介绍见: En (typography)

它叫”半角空格”, 全称是 En space, en 是字体排印学的计量单位, 为 em 宽度的一半. 根据定义, 它等同于字体度的一半(如 16px 字体中就是 8px). 名义上是小写字母 n 的宽度. 此空格传承空格家族一贯的特性: 透明的, 此空格有个相当稳健的特性, 就是其占据的宽度正好是 1/2 个中文宽度, 而且基本上不受字体影响.

 

wiki 介绍见: Em (typography)

它叫“全角空格”, 全称是 Em Space, em 是字体排印学的计量单位, 相当于当前指定的点数. 例如, 1em 在 16px 的字体中就是 16px. 此空格也传承空格家族一贯的特性: 透明的, 此空格也有个相当稳健的特性, 就是其占据的宽度正好是 1 个中文宽度, 而且基本上不受字体影响.  

 

wiki 介绍见: Thin space

它叫窄空格, 全称是 Thin Space. 我们不妨称之为”瘦弱空格”, 就是该空格长得比较瘦弱, 身体单薄, 占据的宽度比较小. 它是 em 之六分之一宽.‌

‌

wiki 介绍见: Zero-width non-joiner

它叫零宽不连字, 全称是 Zero Width Non Joiner, 简称 “ZWNJ”, 是一个不打印字符, 放在电子文本的两个字符之间, 抑制本来会发生的连字, 而是以这两个字符原本的字形来绘制. Unicode 中的零宽不连字字符映射为“”(zero width non-joiner, U+200C), HTML字符值引用为:‌‍

‍

wiki 介绍见: Zero-width joiner

它叫零宽连字, 全称是 Zero Width Joiner, 简称 “ZWJ”, 是一个不打印字符, 放在某些需要复杂排版语言(如阿拉伯语、印地语)的两个字符之间, 使得这两个本不会发生连字的字符产生了连字效果. 零宽连字符的 Unicode 码位是 U+200D(HTML:‍).


此外, 浏览器还会把以下字符当作空白进行解析: 空格( )、制表位(	)、换行(
)和回车(
)还有( )等等.

代码示例

作者原来用的 jQuery 版本太老(jQ 1.7.1), 我给换成 jQ 3.4.1 了.

<!DOCTYPE html>
<html lang="en" dir="ltr">
    <head>
        <meta charset="utf-8">
        <title>使用空格的多种方式</title>
        <style>
          div {
            margin: 0 0 10px 0;
            border: 1px solid red;
            width: 100px;
          }
          body {
            background: black;
            padding: 40px 20px;
            color: white;
          }
          h2 {
            font-size: 12px;
            margin: 10px 0 0 0;
            color: red;
          }
        </style>
    </head>
    <body>
        <label>whitespace</label>
        <select id="switch">
          	<option value="normal">normal</option>
          	<option value="nowrap">nowrap</option>
          	<option value="pre">pre</option>
          	<option value="pre-wrap">pre-wrap</option>
          	<option value="pre-line">pre-line</option>
        </select>
        <h2>Actual spaces</h2>
        <div class="spaces">
            A bunch of words you see.
        </div>
        <h2>Thin spaces &amp;thinsp;</h2>
        <div class="thin-spaces">
            A&thinsp;bunch&thinsp;of&thinsp;words&thinsp;you&thinsp;see.
        </div>
        <h2>Non breaking spaces &amp;nbsp;</h2>
        <div class="non-breaking-spaces">
            A&nbsp;bunch&nbsp;of&nbsp;words&nbsp;you&nbsp;see.
        </div>
        <h2>En spaces &amp;ensp;</h2>
        <div class="en-spaces">
            A&ensp;bunch&ensp;of&ensp;words&ensp;you&ensp;see.
        </div>
        <h2>Em spaces &amp;emsp;</h2>
        <div class="em-spaces">
            A&emsp;bunch&emsp;of&emsp;words&emsp;you&emsp;see.
        </div>
        <h2>Zero width joiner &amp;zwj;</h2>
        <div class="zero-width-joiner">
            A&zwj;bunch&zwj;of&zwj;words&zwj;you&zwj;see.
        </div>
        <h2>Zero width non joiner &amp;zwnj;</h2>
        <div class="zero-width-non-joiner">
            A&zwnj;bunch&zwnj;of&zwnj;words&zwnj;you&zwnj;see.
        </div>
        <script src="https://libs.cdnjs.net/jquery/3.4.1/jquery.min.js"></script>
        <script>
            $("#switch").change(function() {
                $("div").css({
                    "white-space": $("#switch option:selected").val()
                })
            })
        </script>
    </body>
</html>