iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >web开发中换行以及换行属性的示例分析
  • 738
分享到

web开发中换行以及换行属性的示例分析

2024-04-02 19:04:59 738人浏览 安东尼
摘要

小编给大家分享一下web开发中换行以及换行属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

小编给大家分享一下web开发中换行以及换行属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

关于换行以及换行属性

对于CSS的white-space属性,我想大部分人应该和我差不多,最常用的就是nowrap属性,最多用来做超长省略号显示的时候会用到【hiahiahia~】

起因是这样的:产品doggie策划了一个元旦活动,活动主页最下边需要显示配置的活动规则,注意,是配置的活动规则,所以,免不了运营小妹要在后台配置一个活动规则,肯定不指望她们能配置html文本的呀,对吧,于是她们配置的是这样的:

1、封垫苏菲房间都是克拉夫;
    2、对方萨芬的刷分放大;
    3、粉打发打发打发

这样色的,于是,取数据的时候,那隐藏的换行符免不了就被带走了~走了~了,它就变成了一个真正的,换行符。就像Word文档里面看见的那样

于是,页面呈现与DOM结构就变成了这样

显然,这不是我们真实想要它呈现的效果,我们当然是想它能聪明的在该换行的时候换行呀,对吧,那么问题来了,为什么,它没有换行呢?

换行符

阿望脑袋里能记下来的换行符一共有4种

  1. \n:最初接触\n,是学C语言换行的时候,释义为:输入完一行内容后,光标转到下一行的起始位置

  2. \r\n:回车换行(回车:回车就是把水平位置复位,换行:换行就是往下一行,不改变水平位置,可以想象一下,在word文档中点击键盘回车键,其实执行的是回车+换行的操作)

  3. <br />:这个换行符是HTML唯一能识别的换行标签

  4. ?:word文档软回车标记

当然,除了这几种,不同的语言可能会有它们自己的换行符,比如c++的endl,VB的空格+下划线

百度百科显示,word换行符是一种换行符号,它的作用是换行显示,但是它不是真正的段落标记,它的换行不是真正意义上的重起一段,因此被换行符分割的文字其实仍然还是一个段落中的,word中基于段落的所有操作都是不会识别换行符为段落结尾的,再加上在HTML中,只能识别br标签来做基本的文本换行,所以,这也就是文章开头说的,为什么word软回车换行符不能在HTML中正确回车显示了。

HTML中的换行

在HTML中,换行可以有以下几种办法

块级元素包裹

这个就不多做解释了,块级元素最基本的定义就是一般都从新行开始,相邻的块级元素将会在不同行显示,默认了它的换行行为

br 标签

br 是HTML中默认的、唯一的可识别的换行元素,在要换行的地方加进去就行,它是一个自闭合标签

pre 标签

来,解释一下上面才说了br 是HTML中默认的、唯一的可识别的换行元素,怎么突然有冒了个pre标签出来!

pre 元素可定义预格式化的文本,被包围在 pre 元素中的文本通常会保留空格和换行符,而文本也会呈现为等宽字体,所以,并不是因为它被识别成了换行元素才导致换行,而是因为,它保留了文本节点最原始的格式,你给我什么,我还你什么,而不是像其他的元素,你给我充满换行符合空格的文本,我给你被我压缩压缩再压缩的瘦身版文本

友情提示:它不仅可以保留换行格式,还可以保留你的多个空格噢,因为pre元素默认带有样式 white-space: pre;

举个栗子

<pre>
        1、封垫苏菲房间都     是克拉夫;
        2、对方萨芬的刷分放大;
        3、粉打发打发打发
    </pre>

    // 显示
    1、封垫苏菲房间都     是克拉夫;
    2、对方萨芬的刷分放大;
    3、粉打发打发打发

    <div>
        1、封垫苏菲房间都     是克拉夫;
        2、对方萨芬的刷分放大;
        3、粉打发打发打发
    </div>

    // 显示
    1、封垫苏菲房间都 是克拉夫; 2、对方萨芬的刷分放大; 3、粉打发打发打发

鉴于对pre标签的无知,在阿望还在做jsP的时候,遇到这种换行的需求通常都是正则表达式将换行符转换成br标签,然后通过HTML(Vue的v-html)渲染成换行的DOM节点,相信也是大多数人的第一选择

'我的字符串1\r\n\r\n\r\n\r\n我的字符串2\r\n111'.replace(/\r\n/g, '<br />')

现在想来,当初那些前辈们教下来的也是这个办法,估计,他们也没想到,一行CSS代码就能解决吧。。。

CSS属性换行

我们假设有个超长的文本节点:"哈哈哈,congratulations",我们假设有个容器长度只能装得下"哈哈哈,con"

word-break

word-break 属性规定自动换行的处理方法,可以让浏览器实现在任意位置的换行,它是css3推出的新属性(有兼容性问题),用来标明怎么样进行单词内的断句

什么叫单词内的断句呢?简单点来说,就是当文本节点"哈哈哈,congratulations"在容器中显示成了"哈哈哈,con[假设这里换了行]gratulations"的时候,就产生了单词内断句。浏览器默认的时候,"哈哈哈,congratulations"在容器中会显示成"哈哈哈,[假设这里换了行]congratulations",即:如果有一个单词很长,导致一行中剩下的空间已经放不下它时,则浏览器会把这个单词挪到下一行去

word-break一共有三个属性值

nORMal 浏览器默认的换行规则

"哈哈哈,congratulations"在容器中会显示成"哈哈哈,[假设这里换了行]congratulations"

break-all 允许在单词内换行(单词是指non-CJK (CJK 指中文/日文/韩文) 文本)

"哈哈哈,congratulations"在容器中会显示成"哈哈哈,con[假设这里换了行]gratulations"

keep-all 只能在半角空格或连字符处换行

CJK 文本不断行, Non-CJK 文本表现同 normal

word-wrap

word-wrap 属性允许长单词或 URL 地址换行到下一行

word-break一共有两个属性值

normal 只在允许的断字点换行(浏览器保持默认处理)

break-word 在长单词或 URL 地址内部进行换行

那么它与word-break的区别是什么呢?

首先看我们的前提条件:有个超长的文本节点:"哈哈哈,congratulations",我们假设有个容器长度只能装得下"哈哈哈,con",那么意味着,不添加word-break与word-wrap属性的时候,该文本节点在容器内显示为"哈哈哈,[假设这里换了行]congratulations",且单词congratulations肯定是冲出了容器边界的,超级难看。这个时候word-wrap就能派上用场了,给这段文字加上word-wrap: break-word之后,文本节点就会显示成"哈哈哈,[假设这里换了行]congratula[假设这里换了行]tions",这样,为了防止长单词溢出,就在它的内部断句了

那既然有word-wrap,又为什么要有word-break属性呢?简单来说,当设置word-break:break-all; word-wrap:break-word,我们的超长文本"哈哈哈,congratulations"就会显示成"哈哈哈,con[假设这里换了行]gratulatio[假设这里换了行]ns",它的用处就是:节省空间!是的,你没有看错!

word-wrap 是用来决定允不允许单词内断句的,如果不允许的话长单词就会溢出。最重要的一点是它还是会首先尝试挪到下一行,看看下一行的宽度够不够,不够的话就进行单词内的断句

word-break:break-all则更粗暴,直接进行单词内的断句

white-space

white-space 属性设置如何处理元素内的空白,这个属性声明建立布局过程中如何处理元素中的空白符,实际上会对列表溢出换行和文字溢出进行处理

空白符

空白符是指在屏幕不会显示出来的字符(如空格,制表符tab,回车换行等),HTML默认已经把所有空白符合并成一个空格

white-space一共有五个属性值

normal 默认,空白符会被浏览器忽略

多个空格合并成1个空格,换行符被忽略,在容器宽度内自调整换行

pre 空白会被浏览器保留,其行为方式类似 HTML 中的 pre 标签

多个空格被保留,换行符被保留,不会在容器宽度内自调整换行,直到遇到 br 标签为止

nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 br 标签为止

多个空格合并成1个空格,换行符被忽略,不会在容器宽度内自调整换行,这是它与默认行为不一样的地方

pre-wrap 保留空白符序列,但是正常地进行换行

多个空格被保留,换行符被保留,在容器宽度内自调整换行

pre-line 合并空白符序列,但是保留换行符

多个空格合并成1个空格,换行符被保留,在容器宽度内自调整换行

inherit 规定应该从父元素继承 white-space 属性的值

以上,可根据实际情况选择自己想要的属性值

另:若换行处想添加连字符,将congratulations换行显示为con-gratulatio-ns的话,可使用属性hyphens:auto;在适当的位置自动插入连字符换行

以上是“WEB开发中换行以及换行属性的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: web开发中换行以及换行属性的示例分析

本文链接: https://www.lsjlt.com/news/90495.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • web开发中换行以及换行属性的示例分析
    小编给大家分享一下web开发中换行以及换行属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • 使用Vuex进行web开发的示例分析
    这篇文章主要介绍使用Vuex进行web开发的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 vuex的概念理解提到vuex,就不能不先提vue.我个人开始尝试学习使用vue...
    99+
    2024-04-02
  • CSS中以图换字的示例分析
    这篇文章主要介绍CSS中以图换字的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!文字隐藏在h2标签中,新增span标签来保存标题内容,然后将其样式设置为display:non...
    99+
    2024-04-02
  • web开发中函数调用以及this的指向的示例分析
    这篇文章主要为大家展示了“web开发中函数调用以及this的指向的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web开发中函数调用以及this的指向的...
    99+
    2024-04-02
  • web开发中rbac的示例分析
    这篇文章主要为大家展示了“web开发中rbac的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web开发中rbac的示例分析”这篇文章吧。   //登...
    99+
    2024-04-02
  • css3中盒模型以及box-sizing属性的示例分析
    这篇文章主要为大家展示了“css3中盒模型以及box-sizing属性的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css3中盒模型以及box-siz...
    99+
    2024-04-02
  • JavaScript中Max函数min、max以及属性的示例分析
    这篇文章主要为大家展示了“JavaScript中Max函数min、max以及属性的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript中M...
    99+
    2024-04-02
  • mysql中转换函数以及排序问题的示例分析
    这篇文章主要为大家展示了“mysql中转换函数以及排序问题的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中转换函数以及排序问题的示例分析”这...
    99+
    2024-04-02
  • 微信内置开发iOS修改键盘换行为搜索的示例分析
    小编给大家分享一下微信内置开发iOS修改键盘换行为搜索的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在微信中搜索的时候...
    99+
    2024-04-02
  • Web应用开发Servlet 3.0特性的示例分析
    这篇文章给大家分享的是有关Web应用开发Servlet 3.0特性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。异步处理支持Servlet 3.0之前,一个普通Servlet的主要工作流程大致如下:首先...
    99+
    2023-06-17
  • web开发中二叉树的示例分析
    这篇文章将为大家详细讲解有关web开发中二叉树的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。0.  前言到目前为止,我们已经讲述了顺序表、链表、栈、队...
    99+
    2024-04-02
  • css内边距以及外边距属性的示例分析
    这篇文章主要为大家展示了“css内边距以及外边距属性的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css内边距以及外边距属性的示例分析”这篇文章吧。 ...
    99+
    2024-04-02
  • Linux发行版的示例分析
    这篇文章给大家分享的是有关Linux发行版的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux 是什么简单来说, Linux 是一个类 Unix 的开源操作系统。就像 Windows 或者 Mac ...
    99+
    2023-06-16
  • web开发中计数排序的示例分析
    这篇文章将为大家详细讲解有关web开发中计数排序的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。计数排序计数排序是一种非基于比较的排序算法,其空间复杂度和时间复杂度均为O(n+k),其中k是整数的...
    99+
    2023-06-19
  • Spring Boot中Web综合开发示例分析
    本篇内容主要讲解“Spring Boot中Web综合开发示例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Boot中Web综合开发示例分析”吧!Web 开发Spring Boo...
    99+
    2023-06-02
  • Minitab17中的Johnson变换示例分析
    中的Johnson变换示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Johnson变换Johnson变换(Johnson transformation)...
    99+
    2023-06-19
  • golang中并发和并行的示例分析
    这篇文章主要介绍了golang中并发和并行的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是golanggolang 是Google开发的一种静态强类型、编译型、...
    99+
    2023-06-15
  • canvas中globalCompositeOperation属性的示例分析
    这篇文章给大家分享的是有关canvas中globalCompositeOperation属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明最早知道 canvas 的 globalCompositeO...
    99+
    2023-06-14
  • React中ref属性的示例分析
    这篇文章主要介绍了React中ref属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。概述首先,Refs 和 ref 是两个概念,Refs 是 React 提供的可...
    99+
    2023-06-15
  • Spring中Transactional属性的示例分析
    小编给大家分享一下Spring中Transactional属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、Transactional声明式事务管理...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作