text-indent: 3em; /* values */
text-indent: 40px;
text-indent: 15%; /* values, relatives to the containing block width */
text-indent: inherit
通过使用text-indent属性,所有元素的第一行都可以缩进一个给定长度,甚至可以是负值。
p{text-indent: 3em }
这个规则会使所有段落的首行缩进3em。
一般地,可以为所有块级元素应用text-indent,但无法将这个属性应用到行内元素,图像之类的替换元素上也无法应用text-indent属性。
不过,如果一个块级元素的首行中有一个图像,它会随着该行的其余文本移动。
text-indent还可以设置为负值,利用这种技术,可以实现很多有意思的效果。最常见的用途是一种“悬挂缩进”,即第一行悬挂在元素中余下部分的左边。
p{text-indent: -4em }
在使用负值时要当心,第一行可能会超出父容器的左边界,为了避免这种问题,可以针对负缩进再设置一个外边距或一些内边距。
div{width:400px}
p{text-indent:10%}
这样会使段落的第一行缩进40px。
注意,即使插入了行分隔符,这种缩进也只应用于一个元素的第一行。
div#outer{width:500px}
div#inner{text-indent:10%}
p{width:200px}
其中,div#inner是div#outer的子元素,p元素是div#inner的子元素。
div#inner的缩进会是50px,p元素继承了这一缩进,因此也会有50px的缩进。
text-align: left;
text-align: right;
text-align: center;
text-align: justify;
text-align: inherit;
它会影响一个元素中的文本行相互之间的对齐方式。
显然,值left、right、center会导致元素中的文本分别左对齐、右对齐和居中。
text-align只应用于块级元素,且并不控制块元素自己的对齐,只控制它内部行内内容的对齐。
西方语言都是从左向右读,所以text-align的默认值是left,文本在左边界对齐,右边界成锯齿状。
而对于一些从右向左的语言,text-align则默认为right。
justify属性,表示两端对齐,文本行的左右两端都放在父元素的内边界上,然后,调整单词和字母间的间隔,使各行的长度恰好相等。两端对齐文本在打印领域很常见。
/* Keyword values */
line-height: normal;
/* Unitless: use this number multiplied by the element's font size */
line-height: 3.5;
/* values */
line-height: 3em;
/* values */
line-height: 34%;
/* Global values */
line-height: inherit;
line-height: initial;
line-height: unset;
line-height属性是指文本行基线之间的距离,而不是字体的大小。
在最基本的情况下,指定line-height可以用来增加(或减少)文本行之间的垂直间隔。其实是line-height控制了行间距,这是文本行之间超出字体大小的额外空间,换句话说,line-height值和字体大小之差就是行间距。
由line-height产生的行间距就是增加或减少各行内框高度的因素之一。
一旦所有内容的行内框都生成好了,接下来在行框的构造中就会考虑到这些行内框。行框的高度恰好足以包含最高行内框的顶端,和最低行内框的底端。
当一个块级元素从另一个元素继承line-height时,问题会变得更为复杂。
line-height值从父元素继承时,要从父元素计算而不是在子元素上计算,比如:
<div>
<p>aaaaap>
div>
body{font-size:10px}
div{line-height:1em}
p{font-size:18px}
此时,div的line-height是10px,而p元素就会继承这个10px作为其line-height值,但它的font-size值为18px,大于line-height,这就可能会导致行与行之间间距过小,从而形成重叠。
为了解决这种问题,可以使用缩放因子来指定line-height。
当为line-height指定一个数字时,它将是继承值而不是计算值,这个数会应用到该元素及其所有子元素上,所以每个元素都根据其自己的font-size值计算line-height。
body{font-size:10px}
div{line-height:1}
p{font-size:18px}
p元素从div元素继承来了缩放因子1,因此其line-height将会是18*1=18px。
/* keyword values */
vertical-align: baseline;
vertical-align: sub;
vertical-align: super;
vertical-align: text-top;
vertical-align: text-bottom;
vertical-align: middle;
vertical-align: top;
vertical-align: bottom;
/* values */
vertical-align: 10em;
vertical-align: 4px;
/* values */
vertical-align: 20%;
在CSS中,vertical-align 只应用于行内元素和替换元素(如图像和表单输入元素)。
即,vertical-align不影响块级元素中内容的对齐。不过,可以用它来影响表单元格中元素的垂直对齐。
vertical-align属性不能继承。
当然,对齐的具体位置取决于行内有哪些元素,它们有多高,以及父元素字体的大小。
<div>
<span>aaaaaaspan>
div>
div{font-size:14px;line-height:18px}
span{vertical-align:50%}
span元素的基线会升高9px,也就是继承来的line-height值的一半。
vertical-align会把一个元素升高或降低指定的距离。
因此,vertical-align:5px会把一个元素升高5px,负长度值会使元素下降。
要认识到垂直对齐的文本并不会成为另一行的一部分,它也不会覆盖其他行中的文本。也就是说,所有垂直对齐的元素会影响行高。行框的描述是,其高度要足以包含最高行内框的顶端或最低行内框的底端,这也包括因垂直对齐上升或下降的行内框。
word-spacing: normal; /* Keyword value */
word-spacing: 3px; /* values */
word-spacing: 0.3em;
word-spacing: inherit;
word-spacing用于修改字间间隔。
word-spacing属性接受一个正长度值或负长度值。这个长度会增加到字之间的标准间隔。默认值normal与设置值为0是一样的。
letter-spacing: normal;
letter-spacing: 0.3em;
letter-spacing: 3px;
letter-spacing: .3px;
letter-spacing: inherit;
修改字母或字符之间的间隔。
输入的长度值会使字母间的间隔增加或减少指定的量。
word-spacing的值可能受text-align属性值的影响。
另外,一个元素的子元素会继承该元素的计算值。但无法为word-spacing和letter-spacing定义一个可继承的缩放因子来取代计算值。
/*关键值*/
text-decoration: none; /*没有文本装饰*/
text-decoration: underline ; /*下划线*/
通常,无装饰的文本是默认外观,但也不总是这样,例如链接默认地会有下划线。如果想去掉链接的下划线,可以使用text-decoration:none来实现。
还可以在一个规则中结合多种装饰。比如希望又有下划线又有上划线:
a{text-decoration:underline overline}
但是,如果两个不同的装饰都与同一个元素匹配,则胜出规则的值将会完全取代另一个:
h2.stricken {text-decoration:line-through}
h2{text-decoration:underline overline}
最终结果是h2元素只有一个贯穿线。
text-decoration不能继承。
也就是说,文本修饰属性会延伸到后代元素。这意味着如果祖先元素指定了文本修饰属性,后代元素则不能将其删除。例如,在如下标记中
This text has some emphasized words in it.
应用样式p { text-decoration: underline } 会对整个段落添加下划线,再添加样式 em { text-decoration: none } 则不会引起任何改变;整个段落仍然有下划线修饰。
然而,新加样式 em { text-decoration: overline } 则会在< em>标记的文字上添加另一种新样式。
/* offset-x | offset-y | blur-radius | color */
text-shadow: 1px 1px 2px black;
/* color | offset-x | offset-y | blur-radius */
text-shadow: #CCC 1px 0 10px;
/* offset-x | offset-y | color */
text-shadow: 5px 5px #558ABB;
/* color | offset-x | offset-y */
text-shadow: white 2px 5px;
/* offset-x | offset-y
/* Use defaults for color and blur-radius */
text-shadow: 5px 10px;
text-shadow: inherit;
这个属性现在还是草稿阶段。
white-space: normal
white-space: nowrap
white-space: pre
white-space: pre-wrap
white-space: pre-line
white-space: inherit
这个属性会影响用户代理对源文档中的空格、换行和tab字符的处理。
文字转行代表是否会自动换行。
其中wrap代表换行,因此nowrap和pre都是不换行的。
direction属性影响块级元素中文本的书写方向、表中列布局的方向、内容水平填充其元素框的方向、两端对齐元素中最后一行的位置。
默认值为ltr,而从右向左读的语言默认值是rtl。