html - 为什么在使用 U+3002 和 `word-break: keep-all` 时 Firefox 和 Chrome 的行为会有所不同?
问题描述
textarea
我在使用日语时输入了以下句子。
* {
margin: 0;
padding: 0;
}
textarea {
width: 5em;
height: 10em;
word-break: keep-all;
}
<textarea>あいうえお。かきくけこ</textarea>
这是Firefox中的这样一张图片,句子紧跟在U+3002(。)之后。
但是,在 Chrome 中,在 U+3002 (。) 之后立即进行换行。
根据MDN,keep-all
不允许 CJK 文本中断。
keep-all
中文/日文/韩文 (CJK) 文本不应使用分词符。非 CJK 文本行为与正常情况相同。
所以我认为 Chrome 的工作方式与规范不同。如何让 Chrome 的文本中断像 Firefox 一样工作?
操作系统和浏览器详细信息
- 视窗 10
- 火狐开发者版 67.0b1
- 谷歌浏览器 72.0.3626.121
解决方案
在 Chrome 中发生的情况是 <textarea> 有一个特殊的overflow-wrap
值,设置为break-word
. 这意味着当您word-break: keep-all
在此添加自己的值时,这两个值将发生冲突。
Chrome 似乎首先遵守该word-break
规则,而 Firefox 忽略它,如下所示:
* {
margin: 0;
padding: 0;
}
textarea {
width: 5em;
height: 10em;
word-break: keep-all;
overflow-wrap: normal;
}
<textarea>あいうえお。かきくけこ</textarea>
然后 Chrome 应用了overflow-wrap
这个结果,这确实使您的句子双倍中断。
所以这里真正奇怪的是,为什么 Chrome 拒绝在任何点字符之前word-break: break-all
中断,即使......
* {
margin: 0;
padding: 0;
}
textarea {
width: 1em;
height: 46em;
word-break: break-all;
}
<textarea>あいうえお。かきくけこ푸바.밫foobar.baz..............</textarea>
而这,不仅在 <textarea>
* {
margin: 0;
padding: 0;
}
.test {
width: 1em;
height: 46em;
word-break: break-all;
border: 1px solid;
}
<div class="test">あいうえお。かきくけこ푸바.밫foobar.baz..............</div>
不幸的是,我没有找到规避这种行为的方法......
推荐阅读
- javascript - 如何使用 Mongoose 在给定另一个嵌套字段值的情况下更新嵌套字段?
- visual-studio-code - 如何使用扩展包更新 vscode 中的用户 settings.json?
- python - 我想将参数传递给一个不可更改的函数,该函数的参数存储在列表中?
- android - 使用条件向状态数组中的每个对象添加新值
- php - 允许连接到数据库
- python - 在 Python 中,如何将函数属性用作函数?
- c# - 我的删除按钮网格视图中的行索引错误
- python - 如何在 Python 中基于另一个 JSON 过滤一个 JSON?
- python - Beautifulsoup python 找不到我要找的东西
- java - 获取特定时区的时间并检查当前时间是否介于android中的两个不同时间之间