line-height标签,line height属性
如何理解line-height与vertical-align
如何理解line-height与vertical-align
随着互联网行业的发展,人们对网页的要求已经不限于传递信息,如何将网页设计的更合理,能更容易的让用户获取信息也愈发重要。而文字作为网页信息的主要载体,它的样式对用户交互的影响十分巨大,本次小课堂将跟大家分享两个关于文字样式的标签:line-height和vertical-align。
定义:行高是指文本行基线baseline之间的垂直距离
设置固定长度(px,rem等固定单位)
设置数字:设置数字,此数字会与当前的字体尺寸相乘来设置行间距。
设置百分比:基于当前字体尺寸的百分比行距
注意: 数字可以直接被继承,然后在计算行高,而百分比是先计算出行高,在以px继承
定义:使行内元素的基线相对于该元素所在行的基线的垂直对齐
默认值baseline:元素基线与父元素基线对齐
众所周知,vertical-align支持很多属性值;(关键字值:vertical-align等等: middle;长度值:vertical-align: 4px等等;百分比值:vertical-align: 10%...等等)
注意:vertical-align的百分比值不是相对于字体大小或者其他什么属性计算的,而是相对于line-height计算的。
1,图片默认是inline水平的,而vertical-align对块状水平的元素无感。因此,我们只要让图片display水平为block就可以了,我们可以直接设置display或者浮动、绝对定位等
2,直接修改line-height值
把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align property 属性。
设置父元素display:flex,使用align-items:center
绝对定位后设置top和left为50%,然后纵向变化50%的自身高度
参考一: MDN
参考二: 深入理解line-height与vertical-align
参考三: 对CSS vertical-align的一些理解与认识(一)
为什么我的vertical-align属性不起作用?
我们知道了vertical-align是垂直对齐的意思,不少经验尚浅的同行会试着使用这个属性实现一些垂直方向上的对齐效果,
? ? ? ? ? ? 会发现有时候可以,有时候又不起作用,不知道为什么?因为只有一个元素属于inline或是inline-block(table-cell也可以理解为inline-block水平)水平,其身上的vertical-align属性才会起作用。
还有什么其他的方法实现垂直居中
感谢大家观看
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院???
? “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
? ?这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。
? ?快来与我一起学习吧~
【前端CSS】CSS行高(line-height)及文本垂直居中原理
在 CSS 中, line-height 属性设置两段段文本之间的距离,也就是行高,如果我们把一段文本的 line-height 设置为父容器的高度就可以实现文本垂直居中了,比如下面的例子:
这样,span标签中的文字就相对于div垂直方向居中了,想要文本水平居中设置text-align:center即可。
在浏览器中,会将给每一段文本生成一个行框,行框的高度就是行高。行框由上间距、文本高度、下间距组成,上间距的距离与下间距的距离是相等的。
默认情况下一行文本的行高分为:上间距,文本的高度,下间距,并且上间距是等于下间距的,所以文字默认在这一行中是垂直居中的。
几条线与行高的关系图解:
文本的行高也可以看成是基线到基线的距离:
如果一段文本的高度为16px,如果给他设置line-height的高度为200,那么相当于,文本的上下间距的高度增加了,但是文本本身的高度依然是16是不变的,并且一直默认在行框中垂直居中,而上间距和下间距平分了200px的高度并且减去文本本身的高度。所以,容器被这一行文本占满,而本身文字在自己的一行中是垂直居中的,所以看起来就像是在容器中垂直居中。
谷歌浏览器字体的默认大小是:16px,字体的最小值为:12px,默认行高为:18px;默认情况下如果没有给div设置高度,那么这个div的高度会比其中文本的大小大一点(这个大多少现在没有办法确定);
设置起来是最直接的,同时也最方便的。
如果 line-height 单位设置为 % ,那么将来在计算的时候,基数是当前标签中的文本的字体的大小。
如果是 % , % 之前的数据一定是整数 : 150% ,200% 。
效果跟 % 是一样一样的。
注意:一行 em 的大小相当于是当前标签中的 font-size 的大小。
如果是 em , em 之前的数据一定是: 1.2em ,1.5em ,2em
如果不涉及到继承,那么带不带单位( em )都是一样的效果,但是如果涉及到继承的话,那么就有很大的区别了:
我们知道, CSS 的三大特性是继承、层叠、优先级。 line-height 也是可以被继承的,如下面的示例:
在不给div设置行高的情况下, span 标签的文字行高默认为 18
接着我们给 div 设置一个行高等于 20px
我们再来看看 span 标签的的变化
而且,不管我们给行高设置什么单位( px、%、em 、不带单位)都可以被继承。
如果行高的单位不是 px ,那么将来行高要进行计算:这个计算需要一个基数,这个基数是当前标签的字体大小,而不是浏览器默认字体大小。以上面的例子为例,我们并没有设置任何字体大小,此时我们把 line-height 设置为 150% ,那么文字行高将变为 24px(16px*1.5=24 )。
效果如下:
此时我们在给div设置一个 font-size 等于 20px :
那么文字行高将会变成 30px,20px*1.5=30px ;
深入理解line-height
1 .两行文字之间基线的距离,倒数第二根
2 .vertical-align中有top,middle,baseline,bottom与之是由关联的.这些就是文字对应的四根线哪一根的css样式
1 .如果一个标签没有定义height属性,包括百分比高度,那么最终的高度表现一定是来自line-height起了作用.
2 .那width是怎么来的
3 .line-height产生高度的原因:在inline box模型中,有一个line boxes,他会包裹每一行文字。line boxs也不是直接的生产者,而是中层干部。真正决定高度的是手下的一堆inline标签,line boxes会考察手下元素的line-height值,谁的值高,就会用谁的值,向上汇报,最后形成全部高度
4 .line-height可以和height互换,因为实现的效果一样。都能撑开一个高度,然而这两个CSS属性有一个较隐蔽的差异,就是使用height会使标签haslayout,而使用line-height则不会
5 .行高在文章显示中的应用 line-hheight:1.5 .不能写死,不然不会自动适配文字的大小
1 .首先,一行中的每个元素都有一个各自的内容区域。这个是由字体尺寸决定的
2 .行内元素会生成一个行内框inline box。没有其他因素影响的时候,行内狂等于内容区域,设定行高可以增加或减少行内框的高度
3 .由于行高可以应用在任何元素上,所以同一行内的若干元素都有可能有不同的行高和行内框高
4 .行框:是指本行的一个虚拟的矩形框,高度是本行内所有元素行框中的最大值
1 .只对行内元素奇效。默认是baseline参数基线对齐
2 .属性值
1 .设置行间的距离
2 .line-height 与 font-size 的计算值之差(在 CSS 中成为“行间距”)分为两半,分别加到一个文本行内容的顶部和底部。可以包含这些内容的最小框就是行框。
1 .一个div如果没有设置高度,这时我们在div里面添加文字,盒子会有高度。这个高度是由line-height支撑起来的,而不是font-size
2 .对于非替换的内联元素,他的可视高度“完全”由line-height决定。和padding,border完全没有影响
3 .line-height作用于内联元素的谢姐
4 .问题1:按理说,如果line-height是1,那么就是没有间距,但是为啥是这样的结果呢,看起来上面的被覆盖了8px的像素,上面的是20,下面的是28px.为啥normal才是这个效果
//这样的默认感觉才是对的,但是为啥加了默认值反而覆盖了呢。
3 .line-height 与 font-size 的计算值之差(在 CSS 中成为“行间距”)分为两半,分别加到一个文本行内容的顶部和底部。可以包含这些内容的最小框就是行框
4 .当line-height设置为2的时候,半行距是大小1倍文字的大小,两行文字中间的间距的间隙差不多是一个文字尺寸大小。如果line-height值值大小是1倍文字大小,那么半行间距是哦,两行文字会挨在一起。如果间距是负值,两行文字就会重叠纠缠在一起
5 .纯文本,line-height会决定最终的高度
1 .首先line-height不会影响替换元素的高度,比如图片.但是如果添加line-height值的话,实际表现是会有影响的,因为图片构成的内联元素,会构成一个内联盒子,而每一个内联盒子前面都有一个宽度为0的幽灵空白节点,其内联特性表现和一个正常的字符一模一样,于是这个字符使用了行高,所以最后的表现就是行高的高度
2 .图文混合的时候,内联替换元素和内联非替换元素一起的时候
1 .对于块级元素,line-height没有任何用,我们平时改变line-height,块级元素的高度跟着变化实际上是通过改变块级元素里面内联级别元素占据的高度实现的
1 .错误的说法:想要让的单行,垂直居中,只要设置line-height大小和height高度一样就可以了
2 .实现原因:行高的实现机制是上下平分line-height值
3 .多行文本实现垂直居中的3种方式
1 .normal
2 .数值
3 .百分比
4 .长度值
5 .最关键的区别:继承的时候不一样。数值作为line-height,那么最后继承的是都是1.5或者2这个值,但是如果是百分数,或者长度值,那么继承出来的是最后算出来的值。所以属性重置的时候要用下面这种写法
6 .css计算行高的时候,不是向下取整,而是向上取整。
深入理解CSS行高line-height
基线并不是汉字的下端沿,而是英文字母"x"的下端沿
对于行内元素如em、strong、span和等,其padding、margin、border-top、border-bottom 不会增加行高。padding会覆盖;margin将重置为0;border-top和border-bottom同样会覆盖。padding-left、padding-right、border-left和border-right可用。
img元素会影响行高
证明撑开div高度的是line-height而不是font-size
内联盒子/匿名内联盒子inline-boxes
行框盒子line-boxes? 每一行就是一个“行框盒子”,每“行框盒子”由一个个“内联盒子组成”
包含盒子containing-box,由一行行的“行框盒子”组成
内容区域content-area,一种围绕文字看不见的盒子,大小与font-size大小有关
1.行高的垂直居中性
、、在单行或多行或图片垂直居中实现上的应用
单行文字的垂直居中对齐: line-height值设置为height一样大小的值可以实现单行文字的垂直居中;height值可以省略
多行文字的垂直居中对齐 : 要实现高度不固定的文字垂直居中使用padding就好了。对于高度固定的div,里面文字单行或多行显示,字体大小有大有小的情况怎么办呢?方法之一就是借助于line-height。
、 、图片的垂直居中
类似上面处理的方法,借助 i标签或伪元素
、 、使用缩放因子