当前位置: 首页 > Web前端 > HTML

文字处理之一:空白字符和white-space属性

时间:2023-04-02 22:54:06 HTML

p标签插入一段文字是很常见的需求,但仔细分析,还有很多需要注意的细节。本篇和下篇博客主要讲一下文本内容显示的处理。本文主要介绍空白字符和white-space属性。浏览器的默认行为浏览器支持4种空白字符:空格、制表符、回车和换行。默认情况下,有以下几点:所有空白字符都会被当做空格

HelloWorld

helloworld之间加了一个换行符,但是最终的显示效果是这样的:插入的换行符,但是当它最终被展示时,它变成了一个空间。这也意味着如果我们有两段文本,换行符将不会保留在p标签中。要实现换行效果,要么使用两个p标签,要么使用
进行换行。开头和结尾的空格将被直接忽略。

helloworld

头部和尾部都有空格,但是最后显示的时候,两边的空格会被直接忽略掉。如果开头和结尾是换行符,它们也会被忽略。我们为什么要做这个?比如我们在写代码的时候,为了结构清晰,通常喜欢排版:

helloworld

最终显示效果如下:p标签开头和结尾的两个换行符会被直接忽略,这样带来的空白字符通过我们的排版不会影响最终的展示效果。span标记内的前导和尾随空格也会被忽略,因此不要指望在span包装的hello之后和world之前添加空格来增加两者之间的间距。多个空间会被合并应该很熟悉了。我在hello和world之间插入了100个空格,只会显示一个。所以如果我想插入多个空格,我只能使用字符实体,也就是。

HelloWorld

HelloWorld

空白属性浏览器的默认行为为我们提供了很多便利,满足了我们的日常需求。比如代码的排版不会对显示造成太大的影响。然而,这种默认行为并不总能满足我们的需要。如果需要改变,可以通过white-space属性来实现。顾名思义,这个属性就是控制空白字符的。同时,它也会对浏览器默认的换行行为产生一定的影响。white-space:normal,这是默认值,这是浏览器的默认行为。除了上面提到的对空白字符的处理,当文本放不下一行时,浏览器会自动换行。关于换行的具体细节会在下一篇博客中介绍。这里我们尽量简单,只考虑汉字。如果单词太多,我们将换行。

文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点textisabitmoretextisabitmore

最终显示效果如下:white-space:nowrap:所谓wrap,翻译成中文就是一个包。在CSS中,我们可以把它理解为放不下的一行,为了不超过容器,浏览器必须把文字包裹起来,把文字包裹起来。然后nowrap不换行,就是文字超过了就超过。SometextisabitmoretextMoretextisbitmoretextisabitmoretextisabitmoretextisabitmoretextisbitmoretextisbitmoretextisabitmore

最终显示效果如下:white-space:pre:希望我写的格式是最终显示浏览器的,浏览器不做任何处理,那就用这个值,或者使用
标签也有同样的效果文字有点多Moretextalittlemoretextalittlemoretexta多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点

最终显示效果如下如下:我一开始加的空格没有忽略,中间加的换行不算空格,甚至多个换行不合并,第二行太长没有自动换行.简而言之,浏览器什么都不做。white-space:pre-wrap:pre的效果好像有点太粗糙了,我还需要wrap一些,就是希望在pre的基础上自动换行。多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字:white-space:pre-line:line表示一行,plusline表示我更强调换行,所以我保留换行和浏览器的wrap换行,这两个都和换行有关。空格应该还是合并合并,应该忽略,和pre不一样。多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点文字多一点显示效果如下:总结一下,这个属性其实控制了三点:换行符是否作为一个空格处理Handle多个空格是否合并,结束空格是否被忽略,是否自动换行。每个属性对应的行为是下表中的换行符和空格字符的组合,忽略自动换行符。normal视为空格,merge是nowrap视为空格,mergeNoprereservedNopre-wrapreservedYespre-linereservedMerging是关于换行的,还有很多细节,下一篇会详细讨论~

猜你喜欢