英文单词断行问题:CSS中word-break、word-wrap以及hyphens的兼容性和区别
CSS中一提到单词断行,最先映入脑海的肯定是word-break和word-wrap这两条属性。但对于这两条属性到底有什么区别,兼容性如何,我一直都概念模糊。今天抽空把它们以及CSS3中新加入的断行属性之间的区别和作用理理清楚,做一下笔记。
在英文段落中有时会碰到一些很长的单词,这些单词的长度超出容器宽度。在默认的页面文档中,如果单词长度超出了单行,会被自动移到下一行中,图中puzzling!就被自动换行了;而如果单词本身的长度已经超出容器宽度,常规的文档对此就没有约束力了,图中dddddd…这个单词就这么溢出了:
为了不让这样超长的单词超出容器宽度,可以用word-break: break-all 强制断行。
但是强制换行会把完整的单词打断,会影响阅读,而且一旦用word-break: break-all,单词内断行的频率会非常高(puzzling!这个不词不算长单词,也被轻易的打断了)。我们需要的只是在单词本身长度超出容器宽度的时候强制断行,一般情况下,只需要根据空格来判断后面的单词是否需要换行,所以用word-wrap: break-word 就可以了:
所以用一个word-wrap: break-word,就能满足网页上最基本的换行排版了。
让我们再深入一点。读书时候英语老师曾教过我们,英语书写在换行的时候,为了节约纸张,把每一行最后的格子也利用起来,可以给没写完的那个单词加一个横杠“-”在下一行继续写完这个单词即可。在网页中有没有办法实现?答案还是有的,只是这是一个CSS3的属性:hyphens: auto
hyphens目前被浏览器支持度还比较有限,当前版本的谷歌浏览器Chrome就不支持,据我测试在Firefox,IE10+,Safari中还是被支持的,不过要给她加上几个熟悉的前缀:
1 |
-moz-hyphens: auto; |
同时页面的编码也需要写成这种格式允许的语种:
1 |
<html lang="en-US"> |
于是puzzling!这个单词在支持hyphens的浏览器中就自动加了横杠断行了:
配合word-wrap: break-word,就是一般我们需要的排版效果了:
1 |
div {
|

另外,hyphens还有一个有趣的值:manual,可以通过特殊符号给单词人为的添加横杠断行,但个人觉得很少能用得到。具体可以参考mozilla的官方文档,里面还有浏览器兼容性列表
本文的实例代码在这里:http://blog.brain1981.com/wp-content/uploads/css-wordBreak.html。可以在不同的浏览器中打开这个页面查看单词断行的区别。
英文单词断行问题:CSS中word-break、word-wrap以及hyphens的兼容性和区别的更多相关文章
- css强制html不换行 css强制英文单词断行 重拾丢失的
css强制html不换行 css强制英文单词断行 强制不换行 div{ white-space:nowrap; } 自动换行 div{ word-wrap: break-word; word-brea ...
- css中单位px、pt、em和rem的区别
国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? px :像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.(引自CSS ...
- LeetCode之“动态规划”:Word Break && Word Break II
1. Word Break 题目链接 题目要求: Given a string s and a dictionary of words dict, determine if s can be seg ...
- 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 ...
- LeetCode ||& Word Break && Word Break II(转)——动态规划
一. Given a string s and a dictionary of words dict, determine if s can be segmented into a space-sep ...
- 理解css中min-width和max-width,width与它们之间的区别联系
css中,min-width是用来限制元素的最小宽度,max-width用来限制元素的最大宽度,也就是说当元素的width大于max-width,或者小于min-width.就被它们的值所代替,尤其适 ...
- CSS中inherit指定继承的使用方法和auto的区别
CSS中的每个属性都有一个特定值"inherit",其含义是指定继承父元素的相应属性,使用inherit一方面在代码上能地表明要继承于父元素的样式属性,另一方面也使子元素继承了那些 ...
- leetcode@ [139/140] Word Break & Word Break II
https://leetcode.com/problems/word-break/ Given a string s and a dictionary of words dict, determine ...
- 前端开发 CSS中你所不知道的伪类与伪元素的区别--摘抄
做过前端开发的人都熟悉伪类与伪元素,而真正能够彻底了解这二者的区别的人并不多.伪类与伪元素确实很容易混淆. 伪元素主要是用来创建一些不存在原有dom结构树种的元素,例如:用::before和::aft ...
随机推荐
- CSS3知识点整理(一)----基本样式
(一) 在编写CSS3样式时,不同的浏览器可能需要不同的前缀.它表示该CSS属性或规则尚未成为W3C标准的一部分,是浏览器的私有属性,虽然目前较新版本的浏览器都是不需要前缀的,但为了更好的向前兼容前缀 ...
- SQL SERVER运维日记--收缩数据库
一个小故事 某天,小王正在和HR妹妹闲聊,正HAPPY时,,突然收到系统告警消息,数据库磁盘被剩余空间500M,OMG,不行,磁盘快满了,要是业务要停了,,那就小王只能删库到跑路了,,, 先检查下,有 ...
- [商业_法务] 2、注册公司起名很费劲,用C++怒写个随机名字生成器
前言 博主最近在注册公司,由于之前听说过注册公司的名字很难通过,于是便直接找代理去帮忙跑趟,为确保万无一失,还自己绞尽脑汁想了几个很奇葩的名字(噬菌体.云木.灌木.杏仁...). 但是不幸的是那些奇葩 ...
- Microsoft.Identity的IPasswordHasher的默认实现与运用
本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址 www.cnblogs.com/tdws 相信了解了MS Identity认证体系的一定知道UserManager的作用,他是整个体 ...
- intellij IDEA mybatis插件破解方法
1>安装mybatis插件,找到mybatis_plus.jar包的位置,在C:\Users\LZHL\.IntelliJIdea2016.3\config\plugins\mybatis_pl ...
- esri-leaflet入门教程(4)-加载各类图层
esri-leaflet入门教程(4)-加载各类图层 by 李远祥 在leaflet中图层一般分为底图(Basemap)和叠加图层(Overlay).前面章节已经介绍过底图其实也是实现了TileLay ...
- js移动端向左滑动出现删除按钮
最近在做移动端项目时,需要实现一个列表页面的每一项item向左滑动时出现相应的删除按钮,本来想着直接使用zepto的touch.js插件,因为之前实现相同的功能时用过这个插件,当时还挺好用的,直接使用 ...
- 用react分页显示数据
去年年底,尝试着用react写个组件化的页面! demo地址 里面有一个list页面弄了一下数据的分页展示 展示一下主要三个组件:父组件listBox.列表组件List.按钮组件PageButton ...
- 学习ASP.NET MVC(十)——排序
1 按照价格对书籍进行排序 下面我们通过一个简单的例子学习如何对书籍信息按照价格进行排序. 首先,我们在Controllers\BookController.cs文件中的SearchIndex方法添加 ...
- 字符串查找算法总结(暴力匹配、KMP 算法、Boyer-Moore 算法和 Sunday 算法)
字符串匹配是字符串的一种基本操作:给定一个长度为 M 的文本和一个长度为 N 的模式串,在文本中找到一个和该模式相符的子字符串,并返回该字字符串在文本中的位置. KMP 算法,全称是 Knuth-Mo ...