您现在的位置是:网站首页> 编程资料编程资料
CSS行高line-height的个人理解深入理解CSS行高line-height与文本垂直居中的原理全面了解css行高line-height的用法CSS中的line-height行高属性学习教程CSS中的line-height行高属性的使用技巧小结CSS中行高line-height属性的一些使用技巧css属性行高line-height的用法详解CSS line-height行高上下居中垂直居中样式属性关于css中line-height(行高)设置无效的问题的解决方法
2021-09-06
834人已围观
简介 “行高“顾名思义指一行文子的高度,大家对CSS行高line-height都有自己的理解,下面为大家介绍下本人自己的理解
一、行高的字面意思
“行高“顾名思义指一行文子的高度。具体来说是指两行文子间基线间的距离。
基线是在英文字母中用到的一个概念,我们刚学英语的时候使用到的那个英语本子每行有4条线,其中底部第二条线就是基线,是a,c,z,x等字母的地边线。
————————顶线(top line)————————————————
——————————中线(middle line)————————————
————————————基线(base line)———————————
———————————————底线(bottom line)——————
vertical-align中有top,middle,baseline,bottom与之是有关联的,但是具体细节如何,浏览器差异怎样,我还是不是很清楚。
但是由于中午跟英文长得不一样,所以基线的说法就像老太太穿线一一对不上眼。你理解为底线之差也不为不可。只是定义一回事,表现则另一回事。
二、line-height与line boxes高度
先说一个大家熟知的现象,有一个空的div,,如果没有设置至少大于1像素高度height值时,该div的高度就是个0.如果该div里面打入了一个空格或是一个汉字 ,则此div就会有一个高度。那么您有没有思考过,为什么div里面有文字后就会有高度呢?
这是个看上去很简单的问题,是理解line-height非常重要的一个问题。可能有人会认为是:文子撑开的!文子占据空间,自然将div撑开。我一开始也是这样理解的,但是事实上,深入理解inline模型后,我发现,根本不是文字撑开了div的高度,而是line-height!哟证明很简单(如下测试代码):
css代码:
.test1{font-size:20px; line-height:0; border:1px solid #cccccc; backgroud:#eeeeee;}
.teset2{fon-size:0; line-height:20px; border:1px solid #cccccc; backgroud:#eeeeee;}
html代码:
结果:test1 div有文字大小,但是行高为0,结果div的高度就是个0;test2 div文字大小为0,但是有行高,为20像素,结果div高度就是20像素。这就说明撑开div高度的是line-height不是文字内容。
到底这个line-height行高怎么就产生了高度呢?在linline box模型中,有个line boxes,这个是看不见的。line boxes的工作就是包裹每行文字。一行文字一个 line boxes。例如”艾佛森退役"这5个字,如果它们在一行显示,你艾佛森再牛,对不起,只有一个line boxes罩着你;但是”春哥纯爷们“这5个字,要是竖着写,一行一个,那真是够爷们,一个字罩着一个line boxes,于是总计5个line boxes。line boxes什么特性也没有,就是高度。所以一个没有设置height属性的div的高度就是由一个line boxes的高度堆积而成的。
其实line boxes不是直接的生产者,属于中层干部,真正的活儿都是它的手下-inline boxes干的,这些手下就是文字啦,图片啦,span之类的inline属性的标签啦。line boxes只是个考察汇报人员,考察它的手下谁的实际line-height值最高,谁最高,它就要谁的值,然后向上汇报,形成高度。例如,取手下line-height最高的值.则line boxes的高度就是40像素了。
“行高“顾名思义指一行文子的高度。具体来说是指两行文子间基线间的距离。
基线是在英文字母中用到的一个概念,我们刚学英语的时候使用到的那个英语本子每行有4条线,其中底部第二条线就是基线,是a,c,z,x等字母的地边线。
————————顶线(top line)————————————————
——————————中线(middle line)————————————
————————————基线(base line)———————————
———————————————底线(bottom line)——————
vertical-align中有top,middle,baseline,bottom与之是有关联的,但是具体细节如何,浏览器差异怎样,我还是不是很清楚。
但是由于中午跟英文长得不一样,所以基线的说法就像老太太穿线一一对不上眼。你理解为底线之差也不为不可。只是定义一回事,表现则另一回事。
二、line-height与line boxes高度
先说一个大家熟知的现象,有一个空的div,,如果没有设置至少大于1像素高度height值时,该div的高度就是个0.如果该div里面打入了一个空格或是一个汉字 ,则此div就会有一个高度。那么您有没有思考过,为什么div里面有文字后就会有高度呢?
这是个看上去很简单的问题,是理解line-height非常重要的一个问题。可能有人会认为是:文子撑开的!文子占据空间,自然将div撑开。我一开始也是这样理解的,但是事实上,深入理解inline模型后,我发现,根本不是文字撑开了div的高度,而是line-height!哟证明很简单(如下测试代码):
css代码:
复制代码
代码如下:.test1{font-size:20px; line-height:0; border:1px solid #cccccc; backgroud:#eeeeee;}
.teset2{fon-size:0; line-height:20px; border:1px solid #cccccc; backgroud:#eeeeee;}
html代码:
复制代码
代码如下:测试1
测试2
结果:test1 div有文字大小,但是行高为0,结果div的高度就是个0;test2 div文字大小为0,但是有行高,为20像素,结果div高度就是20像素。这就说明撑开div高度的是line-height不是文字内容。
到底这个line-height行高怎么就产生了高度呢?在linline box模型中,有个line boxes,这个是看不见的。line boxes的工作就是包裹每行文字。一行文字一个 line boxes。例如”艾佛森退役"这5个字,如果它们在一行显示,你艾佛森再牛,对不起,只有一个line boxes罩着你;但是”春哥纯爷们“这5个字,要是竖着写,一行一个,那真是够爷们,一个字罩着一个line boxes,于是总计5个line boxes。line boxes什么特性也没有,就是高度。所以一个没有设置height属性的div的高度就是由一个line boxes的高度堆积而成的。
其实line boxes不是直接的生产者,属于中层干部,真正的活儿都是它的手下-inline boxes干的,这些手下就是文字啦,图片啦,span之类的inline属性的标签啦。line boxes只是个考察汇报人员,考察它的手下谁的实际line-height值最高,谁最高,它就要谁的值,然后向上汇报,形成高度。例如,取手下line-height最高的值.则line boxes的高度就是40像素了。
相关内容
- 用纯CSS实现容器内图片上下左右居中
- CSS实现连续数字和英文的自动换行的方法CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- css控制div鼠标放上去变色纯CSS制作菜单栏当鼠标经过时会变色的css实现随鼠标移动div渐变色效果css 鼠标经过文字变色CSS 实现鼠标放在上面时整行变色效果
- css调用服务器端字体示例代码CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- css实现div内图片上下左右居中用纯CSS实现容器内图片上下左右居中css页面中常见左中右分栏布局的两种实现方式css页面左中右分栏布局示例详解css布局实现左中右布局的5种方式
- 下拉框select样式改写具体实现CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- css属性使用中的一些注意事项(实战经验)CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- css中!important的作用(IE6 IE7 FF)及其原理浅谈CSS 权值 层叠 重要性(!important)css中提升优先级属性!important的用法总结从可维护性角度考虑css的!important规则的可用性强制CSS !important使用介绍CSS优先级和!important与IE6的BUG讨论及解决方案CSS下!important属性 CSS中提升优先级属性!important的用法问题总结
- css弹出层覆盖底层具体实现CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- css中的四种定位方式示例介绍CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题