写活动页时在标题中间敲了三个空格,浏览器只显示一个,设计师截图过来问是不是偷懒了。HTML 会把连续空白折叠成一个,这是规范行为,不是浏览器 bug。想把html空格打出来,得换几种写法。
nbsp 和普通空格的区别
是不间断空格,浏览器不会折叠,也不会在它前面换行。写「¥ 99」能让价格和符号黏在一起,不会在窄屏上拆成两行。连续写多个 可以做缩进,但源码会很脏,不如用 CSS。结尾的分号不能省,少了就变成普通文本。它在中文里宽度偏窄,排版效果和全角空格不一样,别混着用。
保留排版用 pre 或 white-space
代码块、诗歌这类需要原样显示的内容,用 <pre> 标签包起来,里面的空格和换行都会保留,字体也会变成等宽。普通段落可以加 white-space: pre-wrap,空格和换行都不丢,长行还会自动折返。只缩进首行的话,用 text-indent: 2em,比敲四个 规范得多。white-space: nowrap 则相反,强制一行显示,适合短标签。pre 里别放需要语法高亮的代码,它只管保留格式,不管着色。
中文首行缩进和全角空格
中文段落首行空两格,标准做法是 text-indent: 2em。直接在源码里敲两个全角空格也能看出效果,但复制到别的编辑器容易乱,不同字体下宽度也不一致。Word 里的全角空格复制到网页,宽度经常对不上,得重新调。表格里对齐数字,用 CSS 的 padding 或 text-align,不要靠空格凑。真要占位,用 撑住空单元格,防止边框塌陷,或者给单元格设个最小高度。标题居中别用空格挤,text-align: center 一行搞定。
html空格的处理原则很简单:排版交给 CSS,只有必须黏在一起的符号才用 。别在源码里堆一长串空格,改起来自己都数不清,跨浏览器还可能对不齐。真需要精确到像素的间距,用 margin 和 padding,空格撑出来的布局在不同字体下会跑偏。nbsp 在英文单词之间用多了,复制文本时会带出奇怪字符。