CSS基础知识之文本属性二三事
line-height
可以给某个元素指定一个不带单位的缩放因子,这样它的后代元素就会继承这个缩放因子,再根据自身的字号大小来计算自己的行高(line-height)值,
body {
font-size: 12px;
line-height: 1.5;
}
h1 {
font-size: 36px;
}
这里,body 元素的行高是 18px(12 * 1.5),而 h1 元素的行高则会是 54px(36 * 1.5)。
而实际工作中我们给 body 设置一个不带单位的行高值就可以很好地保证所有文字有良好的可读性,比如伟大的 Bootstrap,
body {
line-height: 1.428571429;
}
这样做的好处就是通常情况下,其它元素只需要改变文字大小就可以了,而不用去改变行高。如果给 body 元素设置了一个固定的行高值,而后代中某个元素的字体大小超过了这个行高值就会因为行高不够而发生重叠,甚至如果该元素因为某种效果而设置了溢出隐藏的话,那么溢出那部分文字将被裁切。

text-decoration
文本修饰是非继承类属性,给 body 元素设置为 none,并不会影响到后代中默认有文本修饰的元素,例如超链接,所以如果要去掉超链接的默认下划线还是需要单独进行设置,
a {
text-decoration: none;
}
虽然该属性默认不继承,但是祖先元素上设置的修饰会“延伸”到后代元素中,
<p>我有下划线 <span>我咋会有下划线呢?</span></p>
p {
color: red;
text-decoration: underline;
}
p span {
color: green;
text-decoration: none;
}

这里的下划线是 p 元素的。
p {
color: red;
text-decoration: underline;
}
p span {
color: green;
text-decoration: underline;
}

这里 span 的下划线覆盖了 p 的下划线.
p {
color: red;
text-decoration: underline;
}
p span {
color: green;
text-decoration: overline;
}

由于文本修饰属性的延伸会造成一些兼容性的问题,所以最好的做法就是给需要修饰的文本单独设置 text-decoration 属性;不要给 img 元素之类的替换元素设置文本修饰,应该使用边框来模拟。
典型错误
a {
color: red;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a span {
color: green;
}
text-indent
可以使用该属性给每个段落首行缩进2个字符,而不是使用空格,
p {
text-indent: 2em;
}

也可以指定一个负数的值,产生首行悬挂的效果,
text-indent: -3em;

让引号悬挂也是一种常用做法,

让文本缩进到一个足够远的地方,可以让文字消失,
text-indent: -9999px;
因此,通常的图像替换文字常用方法,
.logo {
background: url(logo.png) no-repeat;
display: inline-block;
height: 36px;
text-indent: -9999px;
width: 72px;
}
IE6/7 并不是真正地支持 inline-block,所以在 IE6/7中,inline-block 和 text-indent 并不能在一起愉快地玩耍,某些情况下可能会导致 .logo 消失不见,此情况可以使用浮动或者 block 替代 inline-block,不过两者都会改变布局方式,也可以使用其它方法。
更好的图像替换文本方式,
.ir {
background-color: transparent;
border: 0;
overflow: hidden;
*text-indent: -9999px;
}
.ir:before {
content: "";
display: block;
width: 0;
height: 150%;
}
text-overflow
通常情况下,长串的URL地址,在超出容器时会溢出,我们可以设定当文本溢出包含容器时显示省略符号,
li {
overflow: hidden;
text-overflow: ellipsis;
}

必须配合 overflow: hidden; 一起使用;有时候可能还得加上一个宽度,比如IE 6,
对于那些默认情况下并不会溢出的文本,需要强制其在一行内显示,这样才能产生效果,
li {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 100%; /* for IE 6 */
}
使用 white-space: pre; 或者 word-break: keep-all; 也能强制文本在一行显示,不过各有各的问题。
在 IE 8/9 中,有时候会发现没有效果,那有可能是设置了word-wrap: break-word;的原因;而该属性在 IE 8/9 中会表现得比 white-space: nowrap; 更强势,所以,像下面这样写可以保证最大限度的兼容性,
li {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal;
width: 100%;
}
text-shadow
在非白色背景的深色文字上,可以实现漂亮的内嵌效果,
text-shadow: 0 1px 0 rgba(255,255,255,.75);
可以给文本添加多个阴影,用逗号分隔,
text-shadow: 0 1px 0 #fff, 0 2px 0 #ddd, 0 3px 0 #ddd, 0 4px 0 #ddd;

white-space
white-space 属性设置如何处理元素内的空白,包括空格、换行和制表符等。
设置值为 nowrap 让文本可以在同一行上继续,遇到边界也不会换行,直到遇到 <br> 标签,
white-space: nowrap;
有时我们希望保留文本中的空格和换行符之类的,比如展示计算机的源代码的时候,就会用到 <pre>,而 <pre> 的 white-space 属性的值就是 pre,
pre {
white-space: pre;
}
pre 也不那么尽如人意,遇到边界的时候不会自动换行,所以 CSS 2.1 新增了 pre-wrap,
pre {
white-space: pre;
white-space: pre-wrap;
}
这样 pre 元素里的内容既能保持原有的格式,又能在内容超出边界的时候自动换行。
由于不是所有浏览器都支持 pre-wrap,所以还需要让那些不支持浏览器强制换行,
pre {
white-space: pre;
white-space: pre-wrap;
word-wrap: break-word;
}
当然,也许你并不希望换行,也不介意水平滚动条,那可以用水平滚动条来代替换行,
pre {
overflow: auto;
}
word-break
目前 webkit 大家族(包括 Google Chrome,Safari,Android Browser 等等)均不支持 keep-all 值,所以能用的也就 break-all 了,
word-break: break-all;
不过会造成英文文本阅读障碍,应该慎用,

word-wrap
这是比 word-break 更好的实现文本换行的方式,
word-wrap: break-word;
再添加一个溢出隐藏,避免一些恶意的连续字符,
overflow: hidden;
CSS基础知识之文本属性二三事的更多相关文章
- 【CSS】 CSS基础知识 属性和选择
css基础知识 html的基本标签都是千篇一律的,为了能够个性化外观,就需要进行样式的调整,而css就是专门用来维护,管理样式的一种格式.在html中定义css有三种方法 1. 为标签添加style属 ...
- 前端开发:css基础知识之盒模型以及浮动布局。
前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西? 为什么这个浮动没有效果? 这个问题楼主已经回答了n遍.今天则是把 ...
- (转)第一天 XHTML CSS基础知识 文章出处:标准之路(http://www.aa25.cn/div_css/902.shtml)
欢迎大家学习<十天学会web标准>,也就是我们常说的DIV+CSS.不过这里的DIV+CSS是一种错误的叫法,建议大家还是称之为web标准. 学习本系列教程需有一定html和css基础,也 ...
- CSS基础知识01
一.CSS基础知识介绍 1.css是cascading style sheet层叠式样式表的简写 2.css小用法 加粗:font-weight:bold; 正常用:norma ...
- 〖前端开发〗HTML/CSS基础知识学习笔记
经过一天的学习,把慕课网的HTML/CSS基础知识学完了,笔记整理: 1. 文件结构: HTML文件的固定结构: <html> <head>...</head> & ...
- DIV+CSS专题:第一天 XHTML CSS基础知识
欢迎大家学习<十天学会web标准>,也就是我们常说的DIV+CSS.不过这里的DIV+CSS是一种错误的叫法,建议大家还是称之为web标准. 学习本系列教程需有一定html和css基础 ...
- HTML+CSS基础知识(2)选择器的使用、盒子模型的讲解、列表的使用
文章目录 1.CSS基础知识 2.css样式 2.1.代码: 2.2 测试结果 3.CSS的语法 3.1 代码 4.块元素和行内元素 4.1 代码 4.2 测试结果 5.常用的选择器 5.1 代码块 ...
- CSS基础知识筑基
01.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets),对HTML网页内容进行统一外观样式设计和管理,给网页进行各种装饰,让她变得美观,是HTML的化妆师.(Cas ...
- CSS基础知识之float
前段时间写过一篇CSS基础知识之position,当时对float的理解不太准确,被慕课网多名读者指出(原文已修正,如有误导实在抱歉).现对float进行更深入的学习,在此把学习心得分享给大家. 浮动 ...
随机推荐
- Unity3D默认的快捷键
shift +方向键 向“向方向键前进” Windows系统Unity3D中的快捷键 组合键 键 功能 File 文件 Ctrl N New Scene 新建场景 Ctrl ...
- SVN简介
Subversion(SVN),是一个自由开源的版本控制系统,可以将数据恢复到早期版本,或者检查数据修改的历史,这些数据可以是源代码,也可以是其他类型的文件.SVN,是一个跨平台的软件,支持大多数常见 ...
- IEE修改最大连接数
IEE版本:5.1.40 1.查看当前IEE最大连接数(缺省值) mysql> show variables like 'max_connections'; +----------------- ...
- 十款让 Web 前端开发人员更轻松的实用工具
这篇文章介绍十款让 Web 前端开发人员生活更轻松的实用工具.每个 Web 开发人员都有自己的工具箱,这样工作中碰到的每个问题都有一个好的解决方案供选择. 对于每一项工作,开发人员需要特定的辅助工具, ...
- nodejs学习笔记二——链接mongodb
a.安装mongoose库用来链接mongodb数据库 安装mongodb数据库参考mongodb安装 前言(怨言) 本来是想安装mongodb库来链接mongodb的,命令行到nodejs工程目录: ...
- 用原生JS读写CSS样式的方法总结
为了日后方便查询,本人翻阅了一些资料总结了以下方法,仅限原生JS,如有不对的地方欢迎指出!只求大家看完觉得有学到点什么就OK了! 一.可以通过DOM节点对象的style对象(即CSSStyleDe ...
- Auto Mapper02《demo》
学习这些基本上网上都有一些教程或者别人做的demo,我是按照这个方式去学习的.先做个demo,学会如何去使用它,接着去慢慢的了解它是如何的运行的,理解里面的一些基本的基础知识.我们不可以再像 ...
- 简单的描述Java中的构造函数,及访问修饰符
作为一个Java 初学者,对Java的理解可能有些片面,甚至有些错误的理解,对于观看此处的您,希望您选择性观看!!! 访问修饰符: 1.常用访问修饰符: public 共有的 private 私有的 ...
- SQL - 内连接与外连接
PDF下载地址:SQL-内连接与外连接.pdf 连接查询在关系型数据库中经常用到,是多表联合查询的基础. 主要包含:内连接,外连接,交叉连接. SQL - 内连接与外连接 内连接 等值连接 不等值连接 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(二)ConnectionInfo
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...