Add New Notes
120
Zim/Web-Design/height/CSS中line-height属性详解.txt
Normal file
@@ -0,0 +1,120 @@
|
||||
Content-Type: text/x-zim-wiki
|
||||
Wiki-Format: zim 0.4
|
||||
Creation-Date: 2011-05-15T19:18:15+08:00
|
||||
|
||||
====== CSS中line-height属性详解 ======
|
||||
Created Sunday 15 May 2011
|
||||
|
||||
其实想成为一个页面布局高手,并不是那么的容易!像我这样的上不了台面的水平,也就是在真正牛B的天地之外小打小闹混口饭吃而已。不过,我觉得若是有时间深入的了解一下css其中的微妙知识点,也是一件不错的事。技多不压身嘛。这是今天偶尔看到的一篇文章,对line-height属性讲解十分详细,相当不错。对于想深入了解css的童鞋们是一个不错的教程。下面开始播放:
|
||||
|
||||
**行高指的是文本行的**__基线__**间的距离,但是文本之间的空白距离不仅仅是行高决定的,同时也受**__字号__**的影响。**
|
||||
|
||||
===== 语法 =====
|
||||
|
||||
line-height属性的具体定义列表如下:
|
||||
|
||||
语法: line-height : normal | <实数> | <长度> | <百分比> | inherit
|
||||
说明: 设置元素中行的高度。
|
||||
值: normal:默认行高,一般为1到1.2; 实数:实数值,缩放因子; 长度:合法的长度值,可为负数; 百分比:百分比取值基于元素的字体尺寸。
|
||||
初始值: normal
|
||||
继承性: 继承
|
||||
适用于: 所有元素
|
||||
媒体: 视觉
|
||||
计算值: 长度和百分比值为绝对值;其他同指定值。
|
||||
|
||||
__行高__指的是文本行的基线间的距离。而基线(Base line),指的是一行字横排时下沿的基础线,**基线并不是汉字的下端沿,而是英文字母x的下 端沿**,同时还有文字的顶线(Top line)、中线(Middle line)和底线(Bottom line),用以确定文字行的位置,如下图 所示:
|
||||
{{./1.gif}}
|
||||
行高与字体尺寸的差称为__行距__(leading),如下图所示:
|
||||
{{./2.gif}}
|
||||
|
||||
|
||||
|
||||
===== 内容区域、行内框和行框 =====
|
||||
|
||||
理论上讲,一行中的每个元素都有一个__内容区域,它是由字体尺寸决定__的,如下图所示:
|
||||
{{./3.gif}}
|
||||
|
||||
行内元素会生成一个__行内框__(inline box),行内框只是一个概念,它__无法显示__出来,但是它又确实存在。在没有其他因素影响的时候,行内框等于内容区域,而设定行高则可以增加或者减少行内框的高度,即:__将行距的值(行高-字体尺寸)除以2,分别增加到内容区域的上下两边__,如下图所示:
|
||||
{{./4.gif}}
|
||||
由于行高可以应用在任何元素上,因此同一行内的若干元素可能有不同的行高和行内框高,例如有如下代码,其显示如下图所示。
|
||||
{{./5.gif}}
|
||||
|
||||
<p style=”line-height:20px;”>行高20px。
|
||||
<strong style=”line-height:50px;”> 行高50px。</strong>
|
||||
<span style=”line-height:30px;”>行高30px。</span>
|
||||
</p>
|
||||
|
||||
这里又有一个新的概念——__行框__(line box)。同行内框类似,行框是指本行的一个虚拟的矩形框,其高度等于__本行内所有元素中行高最大的值__。因此,当有多行内容时,每行都会有自己的行框,如下图所示:
|
||||
{{./6.gif}}
|
||||
提示:理解行框和行内框的概念对于学习本章[7.4垂直对齐:vertical-align属性]一节的内容非常重要。
|
||||
注意:行框的高度只同本行内元素的行高有关,而和父元素的高度(height)无关。
|
||||
|
||||
__小结:__
|
||||
行距是相邻两行的上一行基线和下一行的顶线间距离
|
||||
行高是相邻两行间的基线间距离。
|
||||
内容区域由字体尺寸决定,两者相等。
|
||||
行内框由其内的字体尺寸和line-height决定。
|
||||
行框由同一行中最大的行内框决定。
|
||||
|
||||
|
||||
|
||||
===== 行高的计算与继承 =====
|
||||
|
||||
以em、ex和百分比为单位的行高,其__基数是元素本身的字体尺寸__。例如有代码如下:
|
||||
|
||||
<p style=”font-size:20px;line-height:2em;”>字高20px,行高2em。</p>
|
||||
<p style=”font-size:30px;line-height:2em;”>字高30px,行高2em。</p>
|
||||
|
||||
个段落的行高都为2em,但是字体大小不同,因此显示如下图所示:
|
||||
{{./7.gif}}
|
||||
行高可以设定得比字体高度小,此时多行的文字将叠加到一起,例如有如下代码,其显示如下图所示:
|
||||
{{./8.gif}}
|
||||
p { font-size : 20px; line-height :10px; }
|
||||
<p>字高20px,行高10px。此时多行的文字将叠加到一起。</p>
|
||||
|
||||
行高是可继承的,但是__继承的是计算值__,例如有如下代码:
|
||||
|
||||
p { font-size :20px; line-height : 2em; }
|
||||
p span { font-size : 30px; }
|
||||
<p>字高20px。<span>字高30px。</span></p>
|
||||
|
||||
<p>元素的行高2em,字体尺寸为20px,因此计算值为40px,虽然<span>元素本身的字体尺寸为30px,不过其继承的行高仍为40px。但是在不同的浏览器内显示的效果却不尽相同,如下图所示:
|
||||
{{./9.gif}}
|
||||
由于继承的是计算值,因此当元素内的文字字体尺寸不一样的时候,如果设定固定的行高很可能造成字体的重叠,例如有如下代码,其显示如下图所示:
|
||||
{{./10.gif}}
|
||||
p { font-size : 20px; line-height : 1em; }
|
||||
p span { font-size : 30px; }
|
||||
|
||||
<p>字高20px,行高1em,当文本为多行时可能会发生文字重叠的现象。<span>字高30px。</span></p>
|
||||
|
||||
为了避免这种情况,可以为每个元素单独定义行高,但是这样很烦琐,因此可以定义一个没有单位的实数值作为缩放因子来统一控制行高__,缩放因子是直接继承的__,而不是继承计算值。例如修改上例中的行高为:
|
||||
|
||||
p { line-height : 1; }
|
||||
|
||||
则上例中的XHTML代码显示如下图所示:
|
||||
{{./11.gif}}
|
||||
当内容中含有图片的时候,如果图片的高度大于行高,则__含有图片行的行框将被撑开到图片的高度__,如下图所示:
|
||||
{{./12.gif}}
|
||||
注意:图片虽然撑开了行框,但是不会影响行高,因此也不会影响到基于行高来计算的其他属性。
|
||||
提示:当行内含有图片的时候,__图片和文字的垂直对齐方式默认是基线对齐__,关于垂直对齐将在本章[7.4 垂直对齐:vertical-align属性]一节中讨论
|
||||
|
||||
**PS:**如果line-height属性值有单位,那么继承的值则是换算后的一个具体的px级别的值;而如果属性值没有单位,则浏览器会直接继承这个 “因子(数值)”,而非计算后的具体值,此时它的line-height会根据本身的font-size值重新计算得到新的line-height 值。为了应付各种不可尽知的情况,请习惯不要给line-height单位。
|
||||
|
||||
|
||||
|
||||
===== 浏览器的差别与错误 =====
|
||||
|
||||
浏览器在显示的时候往往会有自己的表现形式,例如在Opera内,行高将按照CSS定义的将行距除以2增加到内容区域的上下两边,而IE和Firefox则不是完全平分,如下图所示:
|
||||
{{./13.gif}}
|
||||
不过,相差的1至2个像素在实际显示中一般不会有太大的影响,因此可以忽略不计。比较严重的错误是IE 6.0对于含有图片或者表单元等__可替换行内元素的行高失效的问题__,不过,在IE 7.0中已经修正了这个错误,但是其表现同其它浏览器也不相同。例如有如下代码,其显示如下图所示:
|
||||
{{./14.gif}}
|
||||
#lineHeight4 p { line-height : 60px; }
|
||||
#lineHeight4 fieldset{ border : 0; }
|
||||
<div id=”lineHeight4″>
|
||||
<p>内容含有图片在[IE 6]内浏览line-height将失效。<img src=”../../img/ddcat_anim.gif” alt=”图片” width=”88″ height=”31″ /></p>
|
||||
<form id=”testForm” action=”#”> <fieldset> <p><label for=”test1″>表单元素</label>< input type=”text” maxlength=”16″ value=”IE6内行高失效” /></p></fieldset> </form>
|
||||
</div>
|
||||
|
||||
由上图中读者可以发现,IE 7.0中,将半行距分别加在了图片的上下,而由于图片默认是基线对齐,因此文字的基线下移了,这显然不符合CSS中的规定。
|
||||
|
||||
对于IE 6.0中行高失效的问题,需要使用CSS Hack手段来针对IE 6.0设定替换元素的上下补白来修正。
|
||||
BIN
Zim/Web-Design/height/CSS中line-height属性详解/1.gif
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/10.gif
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/11.gif
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/12.gif
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/13.gif
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/14.gif
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/2.gif
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/3.gif
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/4.gif
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/5.gif
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/6.gif
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/7.gif
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/8.gif
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
Zim/Web-Design/height/CSS中line-height属性详解/9.gif
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
55
Zim/Web-Design/height/css_百分比_定义高度_小结.txt
Normal file
@@ -0,0 +1,55 @@
|
||||
Content-Type: text/x-zim-wiki
|
||||
Wiki-Format: zim 0.4
|
||||
Creation-Date: 2011-05-15T22:01:30+08:00
|
||||
|
||||
====== css 百分比 定义高度 小结 ======
|
||||
Created Sunday 15 May 2011
|
||||
|
||||
http://blog.csdn.net/nailwl/archive/2010/07/16/5740057.aspx
|
||||
css 百分比 定义高度 小结
|
||||
|
||||
在符合标准的 XHTML 模式下,将 DIV 的高度简单的设置为 100% 往往并不能达到想要的效果,
|
||||
|
||||
原因是“百分比”是个相对于父节点的值,
|
||||
|
||||
如果你没有设置他们的父节点的高度,那么设置 DIV 的高度为100%就没有了意义。
|
||||
|
||||
另外一个问题是你或许期望的并不是100%,而是在页面高度不够一屏时按照100%显示,
|
||||
|
||||
当你的页面超过视窗的大小时,DIV 要能够撑开,这样的话min-height才是你真正想要的。
|
||||
|
||||
下面的代码可以让页面不足一屏时按照100%显示,当超过一屏时,又能够撑开:
|
||||
|
||||
CSS:
|
||||
|
||||
html, body {
|
||||
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
|
||||
#container {
|
||||
|
||||
/* this is the div you want to fill the window */
|
||||
|
||||
min-height: 100%;
|
||||
|
||||
}
|
||||
|
||||
由于 Internet Explorer (IE) 6 及其以下的版本并不支持 min-height 属性,
|
||||
|
||||
因此,我们需要添加针对 IE 的代码。
|
||||
|
||||
CSS:
|
||||
|
||||
* html #container {
|
||||
|
||||
height:100%
|
||||
|
||||
}
|
||||
|
||||
在 IE 下,当 DIV 的内容超过 DIV 本身的高度时,
|
||||
|
||||
DIV 会自动撑开,因此这样的代码可以很好的解决上面的问题。
|
||||
|
||||
|
||||
44
Zim/Web-Design/height/height属性参考.txt
Normal file
@@ -0,0 +1,44 @@
|
||||
Content-Type: text/x-zim-wiki
|
||||
Wiki-Format: zim 0.4
|
||||
Creation-Date: 2011-05-15T22:03:16+08:00
|
||||
|
||||
====== height属性参考 ======
|
||||
Created Sunday 15 May 2011
|
||||
http://www.w3school.com.cn/css/pr_dim_height.asp
|
||||
CSS height 属性
|
||||
|
||||
CSS 参考手册
|
||||
定义和用法
|
||||
|
||||
height 属性设置元素的高度。
|
||||
说明
|
||||
|
||||
这个属性定义元素内容区的高度,在内容区外面可以增加内边距、边框和外边距。
|
||||
|
||||
行内非替换元素会忽略这个属性。
|
||||
默认值: auto
|
||||
继承性: no
|
||||
版本: CSS1
|
||||
JavaScript 语法: object.style.height="50px"
|
||||
实例
|
||||
|
||||
设置段落的高度和宽度:
|
||||
|
||||
p
|
||||
{
|
||||
height:100px;
|
||||
width:100px;
|
||||
}
|
||||
|
||||
TIY
|
||||
浏览器支持
|
||||
|
||||
所有主流浏览器都支持 height 属性。
|
||||
|
||||
注释:任何版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit"。
|
||||
可能的值
|
||||
值 描述
|
||||
auto 默认。浏览器会计算出实际的高度。
|
||||
length 使用 px、cm 等单位定义高度。
|
||||
% 基于包含它的块级对象的百分比高度。
|
||||
inherit 规定应该从父元素继承 height 属性的值。
|
||||
7
Zim/Web-Design/height/overflow.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Content-Type: text/x-zim-wiki
|
||||
Wiki-Format: zim 0.4
|
||||
Creation-Date: 2011-05-15T20:14:16+08:00
|
||||
|
||||
====== overflow ======
|
||||
Created Sunday 15 May 2011
|
||||
|
||||