对于CSS文本的一些效果,基础一些的知识比较简单,但对于text-indent,vertical-align,text-align等的深入学习能够使我们对HTML5的学习更加轻松,对这部分知识的深入了解,也更利于以后网站的一些小技巧方面的运用。

  CSS文本属性

          text-decoration 下划线、删除线、顶划线

          text-transform 文本大小写

          text-indent 段落首行缩进

          font-variant 将英文文本转换为“小型”大写字母

          text-align 文本水平对齐

          vertical-align 文本垂直对齐

          line-height 行高

          letter-spacing 字距

          word-spacing 词距

 

        (1)深入text-indent

                在CSS中,可以使用text-indent属性来定义段落的首行缩进。关于text-indent的一个技巧:使用“text-indent:2em;”来实现段落的首行缩进。

                现在来学习text-indent的另一个技巧:“text-indent:-9999px;”这种写法“text-indent:-9999px;”一般用于LOGO部分,在搜索引擎优化中,h1是非常重要的标签。一般情况下,我们都是把网址的LOGO图片放到h1标签中。不过,我们知道,搜索引擎无法识别图片,只能识别文字,为了更好地优化SEO,如何做呢?

                一个很好的解决方案:指定h1元素的长宽与LOGO图片的长宽一样,然后定义h1的背景图片(background-image)为LOGO图片。也就是说,我们使用LOGO图片作为h1标签的背景图片,然后使用“text-indent:-9999px;”来隐藏h1的文字内容。

        (2)深入text-align

                 ①text-align起作用的元素

                     text-align对文字、inline元素(行内元素)以及inline-block元素(行内块元素)起作用,但对块元素不起作用。其中,img元素属于inline-block元素。

                 ②text-align:center与margin:0 auto的区别 

                    在页面水平居中实现中,二者是最常见的两种水平居中方式,不过这两者也有本质的区别。

                    (1)text-align:center实现的是文字、inline元素以及inline-block元素的水平居中。

                    (2)margin:0 auto实现的是块元素的水平居中。

                    (3)text-align在父元素中定义,margin:0 auto在当前元素中定义。      

        (3)深入line-hegiht

                  ①line-hegiht的定义

                     在CSS中,line-hegiht还有一个更加准确的定义:两行文字基线之间的距离。

                     Ⅰ:顶线、中线、基线、底线

                            我们都用过英文簿,英文簿每一行都有4条线,分别是:顶线(top)、中线(middle)、基线(boseline)和底线(bottom)。

                            在CSS中,每一行文字都可以看成一个“行盒子”,而每一个行盒子都有4条线:顶线、中线、基线、底线。

                            vertical-align属性中的top、middle、baseline、bottom这四个属性值分别对应的就是:顶线、中线、基线、底线。

                     Ⅱ:行高、行距和半行距

                           (1)行高

                                   行高(line-height)指的是“两行基线之间的垂直距离。

                           (2)行距

                                   行距,指的是上一行的底线到下一行的顶线的垂直距离。也就是两行文字之间的空隙。

                           (3)半行距

                                   行距的一半。

                     Ⅲ:内容区与行框

                            (1)内容区

                                    内容区指的是盒子顶线到底线之间的垂直距离。

                            (2)行框

                                     行框指的是两行文字“行半距分割线”之间的垂直距离。

                 ②:line-height的取值

                     Ⅰ:height和line-hegiht

                            当没有定义line-height时,浏览器采用默认的line-height值。一行文字的高度由line-height决定,而不是由height决定的。例如,在p标签中,一个p标签的文字可以有很多行,其中line-height定义的是一行文字的高度,而height定义的是整个段落的高度(p标签的高度)。

                            在CSS中,我们可以定义height和line-height这两个属性相等,从而来实现单行文字的垂直居中。

                     Ⅱ:line-hegiht取值为百分比值、em值

                            当line-height值为百分比值或者em值时,当前元素的行高是相对于父元素的font-size值来计算的,计算公式如下:

                            line-height=(父元素font-size)x(百分比)

                            line-height=(父元素font-size)x(em值)

                     Ⅲ:line-hegiht取值为无单位数字

                           line-height还支持无单位数字的属性取值,在CSS中也只有line-hegiht属性具有这个特点。当line-hegiht值无单位数字时,实际的行高是相对于当前元素的font-size值来计算的,计算公式:line-height=(当前元素font-size)x(无单位数字)

            (4)深入vertical-align

                     W3C对vertical-align属性的定义有4个方面

                    ①vertical-align属性用于定义“周围的文字、inline元素以及inline-block元素”相对于该元素基线的垂直对齐方式。这里的“该元素”指的是被定义了vertical-align属性的元素。

                    ②在表格单元格中,vertical-align属性可以定义单元格td元素中内容的对齐方式。td元素是table-cell元素,也就是说vertical-align属性对table-cell类型元素有效。

                    ③vertical-align属性对inline元素、inline-block元素和table-cell元素有效,对块元素无效。

                    ④vertical-align属性允许指定负长度值(如-2px)和百分比值(如50%)。

                    vertical-align属性取值

                    ①负值

                        vertical-align:-2px 表示元素相对于基线向下偏移2px.此方法用于解决单选框或复选框与文字垂直对齐的问题。

                    ②百分比

                        vertical-align属性可以取值为百分比,这个百分比是相对于当前元素所继承的line-height属性值来决定的。

                    ③关键字

                        top(顶部对齐)、middle(中部对齐)、baseline(基线对齐)、bottom(底部对齐)。

                   vertical-align属性应用

                    ①inline元素和inline-块元素

                    ②块元素

                       div是块元素,所以vertical-align属性对齐无效,如果想要在div中实现图片的垂直居中,可以先为div定义display:table-cell,也就是将块元素转化为table-cell元素(表格单元格),然后再使用vertical-align:middle就可以实现了。

                    ③table-cell元素 

                       要注意,table-cell元素跟inline、inline-block元素使用vertical-align是有很大区别的。

                       (1)inline元素和inline-block元素的vertical-align是针对周围的元素来说的,vertical定义的是周围元素相对于当前元素的对齐方式。

                       (2)table-cell元素的vertical-align属性是针对自身而言的。vertical-align定义的是内部子元素相对于自身的对齐方式。