参考

word-break 和 word-wrap 的区别 (我以为这篇已经很厉害了)

彻底搞懂word-break、word-wrap、white-space (没想到, 这一篇更厉害)

white-space

white-space 是负责管理空格, 换行的, 比如 &nbsp; <br>, \n

默认的行为:

&nbsp; 和 <br> 有效

连续的 space 会被缩减成一个

\n 无效

句子超过一行后会自动换行

单个字太长则会超出边界.

大神已经整理很好给我们了:

一般而言, 不需要背起来, 只需要知道默认行为和最常遇到的情况就可以了.

\n 无效是最常遇到的问题. 比如 user 通过 textarea 写了 \n 换行, 后来被弄掉了.

解决方案就是用 white-space: pre-line

word-break

word-break 讲的是单个字要怎样 break.

默认情况, 英文就是看连续字母一直到空格算一个能被 break 的字. 中文不看空格, 每一个字都可以被 break

break-all

break-all 的情况, 英文的每一个字母都可以被 break. 中文本来就可以.

keep-all

keep-all 的情况, 中文变得跟英文一样, 只有到空格才能被 break.

2 个都很少会被用到. 因为效果都不太好.

overflow-wrap (word-wrap)

以前叫 word-wrap. CSS 3 后改的, 现在都支持了。

break-word

它的效果就是只有当一个字没办法被 break 又超过了边界时, 才把那个字 break-all. 这才是最常用到的体验.

当遇到 flex, break-word 失效

参考: Stack Overflow – flex item overflows container due to long word even after using word-wrap

其原因是 flex item 在没有设置 min width 的时候, 最小就是 width 本身. 当设置 min-width: 0 以后, 就会看到 break-word 效果了.

但这招感觉有点 hacking 的味道...

还有一招是用

word-break: break-word;

不过这招当遇到很长很长的字, 它也会 break 掉. 这个体验不一定是想要的.

总结

几个东西需要记住

1. 连续 space 会被合并, 所以要连续 space 就得用 &nbsp;

2. 默认 \n 是无效的, 需要加 white-space: pre-line

3. 当遇到 1 个很长的单字时, 用 overflow-wrap: break-word 把它 break 掉

4. 如果不希望自动换行 white-space: nowrap; 或者 pre; 区别是 pre 允许 \n

题外话: 当 inline element 遇上 new line

<p><span>abc</span><span>xyz</span><span>123</span></p>

<p>
<span>abc</span>
<span>xyz</span>
<span>123</span>
</p>

这 2 个 <p> 渲染出来的效果是不一样的

第一个 <p> 间中没有空格

第二个 <p> 中间却有空格, 所以当 inline element 遇上 new line 会变成空格哦. 这个要注意了.

CSS – word-break, overflow-wrap, word-wrap, white-space的更多相关文章

  1. leetcode 139. Word Break 、140. Word Break II

    139. Word Break 字符串能否通过划分成词典中的一个或多个单词. 使用动态规划,dp[i]表示当前以第i个位置(在字符串中实际上是i-1)结尾的字符串能否划分成词典中的单词. j表示的是以 ...

  2. 139. Word Break 以及 140.Word Break II

    139. Word Break Given a non-empty string s and a dictionary wordDict containing a list of non-empty  ...

  3. word break和word wrap

    默认情况下,如果同一行中某个单词太长了,它就会被默认移动到下一行去: word break(normal | break-all | keep-all):表示断词的方式 word wrap(norma ...

  4. [LeetCode] Word Break II 拆分词句之二

    Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each ...

  5. 【leetcode】Word Break II

    Word Break II Given a string s and a dictionary of words dict, add spaces in s to construct a senten ...

  6. 17. Word Break && Word Break II

    Word Break Given a string s and a dictionary of words dict, determine if s can be segmented into a s ...

  7. LeetCode:Word Break II(DP)

    题目地址:请戳我 这一题在leetcode前面一道题word break 的基础上用数组保存前驱路径,然后在前驱路径上用DFS可以构造所有解.但是要注意的是动态规划中要去掉前一道题的一些约束条件(具体 ...

  8. LeetCode Word Break II

    原题链接在这里:https://leetcode.com/problems/word-break-ii/ 题目: Given a string s and a dictionary of words  ...

  9. 【LeetCode OJ】Word Break II

    Problem link: http://oj.leetcode.com/problems/word-break-ii/ This problem is some extension of the w ...

  10. Leetcode#139 Word Break

    原题地址 与Word Break II(参见这篇文章)相比,只需要判断是否可行,不需要构造解,简单一些. 依然是动态规划. 代码: bool wordBreak(string s, unordered ...

随机推荐

  1. tp5框架No input file specified

    最近从网上下载了一个项目,本地搭建好环境.访问页面出现No input file specified. 这个问题之前就遇到过,是因为权限的问题,导致nginx无法解析php文件,这次有点不一样所以记录 ...

  2. EasyDesktop 浏览器书签管理从未如此简单

    作为一名软件开发从业人员, 每天80%的时间都在与浏览器打交道, 一半的时间在用浏览器开发调试, 另一半时间则是在互联网上搜寻各种知识和资源. 为此, 我的浏览器书签栏存储和很多非常棒的链接, 多到2 ...

  3. BTC 地址

    比特币地址(Bitcoin Address)是用于接收和发送比特币的唯一标识符,类似于传统金融系统中的银行账号.一个比特币地址由一串字母和数字组成,通常以1.3或bc1开头,具体长度为26至35个字符 ...

  4. CCF 任务调度

    样例的示意图 查了一圈,然后很烦,不想学习方法,好卡.查了一些题解,发现都是10分,30分先搁置的博客,最后翻到 堪称官方标称的思路 (CCF题目pat题目各大poj/hdoj好戏那个都没有标程,这里 ...

  5. CCF 有趣的数

    问题描述: 试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1 ...

  6. Jmeter函数助手37-setProperty

    setProperty函数用于修改jmeter属性值. 属性名称:填入需要修改的属性名 Value of property:填入需要修改的属性值 Return Original Value of pr ...

  7. 7月22号python 每日一题

    7月22号python 每日一题 LCR 121. 寻找目标值 - 二维数组 难度:中等 m*n 的二维数组 plants 记录了园林景观的植物排布情况,具有以下特性: 每行中,每棵植物的右侧相邻植物 ...

  8. 三.mysql问答合集

    目录 三.MySQL 3.1 关系型和非关系型数据库的区别 关系型数据库 非关系型数据库 3.2 登录数据库的方式,如何远程登录 3.3 MySQL的服务结构,当客户端发起请求后,处理过程 3.4 如 ...

  9. 国产AI训练卡,对标美国NVIDIA公司的A100,华为昇腾Atlas 300T A2(Ascend 910B4)高性能GPU/NPU/AI推理/国产计算/信创训练卡 —— 电商平台已开售

    China has successfully achieved the localization of AI chips, breaking through the technological res ...

  10. AI领域的国产显卡如何在现有技术下吸引用户 —— 廉价增加显存 —— 大显存

    先给出一个不大准确的但相差不差的背景介绍: 同样性能级别的显卡,NVIDA的24G的要3W,32G的要5W,48G的要7W, 80G的要10W. 国产同同性能的显卡32G的要10W,48G的要15W, ...