CSS line-height浅析(3)

这一部分我们来简单应用一下line-height属性。

一、单行文本垂直居中

代码如下:

 1 <style>
 2 div {
 3     width:200px;
 4     height:80px;
 5     background-color:cyan;
 6     line-height:80px;
 7 }
 8 </style>
 9 </head>
10 <body>
11 <div>
12 <p>单行文本垂直居中</p>
13 </div>
14 </body>

页面效果:

二、图像水平垂直居中

代码如下:

 1 <head>
 2 <style>
 3 div {
 4     width:350px;
 5     height:200px;
 6     background-color: cyan;
 7     text-align: center;
 8     line-height: 200px;
 9 }
10 img {
11     vertical-align: middle;
12 }
13 </style>
14 </head>
15 <body>
16 <div>
17 <img src="1.jpg" alt="A picture"
18 style="width:175px;height:100px">
19 </div>
20 </body>

页面效果:

其实现原理,我们可以有两种方式解读。

第一种方式,先让隐藏文本节点垂直居中,然后图像与它垂直居中对齐。

来看这段代码:

 1 <style>
 2 div {
 3     width:350px;
 4     height:200px;
 5     background-color: cyan;
 6     text-align: center;
 7     line-height: 200px;
 8  }
 9 span {
10     background-color: red;
11 }
12 </style>
13 </head>
14 <body>
15 <div>
16 <img src="1.jpg" alt="A picture"
17 style="width:175px;height:100px">
18 <span>xxx</span>
19 </div>
20 </body>

其页面效果为:

前面我们提到过,<img>元素后面有一个隐藏文本节点,在这里,我们将它显现出来,xxx;

根据div {height:200px; line-height:200px;} 的设置,xxx作为div中的单行文本被垂直居中了;

此时vertical-align为默认值baseline,所以图像的底边与文本的基线对齐。

如果我们进一步设置img {vertical-align:middle;},就能得到图像垂直居中;如图:

然后我们在html中删掉帮助我们理解的本来是隐藏的 xxx ,就能得到图像水平垂直居中的结果。

第二种方式,先让图像与隐藏文本节点垂直居中对齐,再逐渐扩大行高,由行高撑开隐藏文本的高度,直到行高等于容易的高度,实现垂直居中。

请看如下代码:

 1 <style>
 2 div {
 3     width:350px;
 4     height:200px;
 5     background-color: cyan;
 6     text-align: center;
 7  }
 8 img {
 9     vertical-align:middle;
10 }
11 span {
12     background-color: red;
13 }
14 </style>
15 </head>
16 <body>
17 <div>
18 <img src="1.jpg" alt="A picture"
19 style="width:175px;height:100px">
20 <span>xxx</span>
21 </div>
22 </body>

其页面效果:

上图为line-height:normal时的页面效果,下面我们逐渐增大line-height的值,来看看页面的变化。

注意,因为图像的height值为100px;所以当line-height的值小于100px时,页面是没有变化的。

当line-height的值为130px时,其页面效果:

当line-height的值为170px时,其页面效果:

当line-height的值为200px时,其页面效果:

此时line-height与height的值相等,这就是我们想要的效果图。

不过我们还可以继续增加line-height的值,看看有什么变化。

当line-height的值为400px时,其页面效果:

由于容器的高度是200px,而我们的文本行高是400px;从图像上看出,以x的中点为界,上下的高度都是200px。

这个逐渐增加line-height导致不同页面效果的行为,起码可以证明单行文本确实有行高。

(在执行这些操作的时候,有些想法一闪而逝,可惜没有抓住,只想到了这一点,惭愧。。。)

三、多行文本水平垂直居中

代码如下:

 1 <style>
 2 div#box {
 3     width:500px;
 4     height:300px;
 5     background-color: cyan;
 6     text-align: center;
 7     line-height: 300px;
 8 }
 9 div#container {
10     display:inline-block;
11     vertical-align: middle;
12     line-height: 1.5;
13     width: 380px;
14     text-align: left;
15 }
16 </style>
17 </head>
18 <body>
19 <div id="box">
20 <div id="container">
21 <p>
22 1.多行文本水平垂直居中的原理与图像一样;<br>
23 2.将文本用一个容器封装起来,把它当成图像看待。<br>
24 3.设置display属性值为inline-block;<br>
25 4.设置line-height属性值;<br>
26 5.设置width属性值;<br>
27 6.设置text-align属性值。
28 </p>
29 </div>
30 </div>
31 </body>

页面效果:

总结:

关于垂直居中,关键是让容器的height值与line-height值相等!

时间: 2024-07-30 13:50:42

CSS line-height浅析(3)的相关文章

line height 与 vertical align

一.line height 其中代表inline box(包含上下间距,若height==line-height,则行间距=line-height - font-size/2),big代表content area. 注: 若line-height < content area ,则line box要取line-height的值,这也是为什么会重叠的原因. line-height属性取值: 1. % 若自身没有设置line-height,则line-height = 父元素的font-size *

Jquery CSS 操作 - height() 方法

一.height() 方法 height() 方法返回或设置匹配元素的高度 $(".btn1").click(function(){ $("p").height(50); }); height方法事例 Jquery CSS 操作 - height() 方法,码迷,mamicode.com

深入了解css的行高Line Height属性

来源:http://www.cnblogs.com/fengzheng126/archive/2012/05/18/2507632.html 什么是行间距? 古时候我们使用印刷机来出来文字.印刷出来的每个字,都位于独立的一个块中. 行间距,即传说中控制两行文字垂直距离的东东.在CSS中,line-height被用来控制行与行之间垂直距离. 不过,行间距与半行间距,还是取决于CSS中的line-height.那么,如何来使用line-height呢? 默认状态,浏览器使用1.0-1.2 line-

CSS——对height和line-height的理解

最近在做CSS界面时经常遇到line-height和height这两个属性,一直没搞很明白,今天静下心来好好网上查阅了一下,算是有所领悟.https://blog.csdn.net/a2013126370/article/details/82786681这个博主写的很不错,至少让我对line-height和height的理解更深刻了,值得借鉴. 一.一些基本概念 1.行高是指文本行基线间的垂直距离. 2.行距是上行的底线和下一行顶线之间的距离. 我个人理解,可以得出以下结论: 1. 在没有设置d

CSS position:absolute浅析

一.绝对定位的特征 绝对定位有着与浮动一样的特性,即包裹性和破坏性. 就破坏性而言,浮动仅仅破坏了元素的高度,保留了元素的宽度:而绝对定位的元素高度和宽度都没有了. 请看下面代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>绝对定位的特征</title> 6 <style> 7 .box1,.box2,.b

demopu教你学习css,css中height,min-height,max-height的区别

min-height  样式用于设置元素的最小高度. max-height  样式用于设置元素的最大高度 Javascript object.style.maxHeight="20"; Jquery $().css('max-height',20); 更多学习  http://www.demopu.com/doc/css/max-height.html www.demopu.com / css / max-height

如何使CSS中height:100% 起作用

1.按照w3c中的width和height属性,可以明确%设定宽高是根据父元素的宽高来的: 2.Web浏览器在计算有效宽度时会考虑浏览器窗口的打开宽度.如果你不给宽度设定任何缺省值,那浏览器会自动将页面内容平铺填满整个横向宽度.即我们不设置宽,会自动填满整个横向宽度,因为页面并没有缺省的高度值,所以,当你让一个元素的高度设定为百分比高度时,无法根据获取父元素的高度,也就无法计算自己的高度. 解决方案: html,body{ height: 100%; margin: 0; padding: 0;

前端用户体验优化: JS &amp; CSS 各类效果代码段

前言 不定时更新 在线预览 https://zzyper.github.io/opti... 在线预览的源码 https://github.com/zzyper/opt... 部分内容仅兼容webkit内核,其他内核自行查询 可控密度的虚线分隔线 css .line { height: 1px; width: 100%; transform: scaleY(0.4); -webkit-transform: scaleY(0.4); background-image: linear-gradien

【原】移动web点5像素的秘密

最近和一个朋友聊天,朋友吐露了工作上的一些不开心,说自己总是喜欢跟别人比较,活得比较累,这种感觉大部分人经历过,往往觉得是自己心态不好,其实不然,这是人性,此时应该快速摆脱这种状态,想到DOTA大9神的笔录,游戏也是人生,懂得思考的人生才会不断促使自己进步,详细我不清楚了,大概意思是这样:人这一辈子就一次,快乐很重要,人如何感受到快乐,说起来真的不难,有两个点,一点是"你能够让别人喜欢你":另外一点是"跟好朋友一起时你能够卸下面具",是怎么样的就怎么样.希望能给不开

【转】移动web点5像素的秘密

你可能不知道的.5px 移动web设计中,在retina显示屏下网页会由1px会被渲染为2px,那么视觉稿中1px的线条还原成网页需要css定义为.5px.文章开头的漫画中,细心的设计师发现粗线条并吐槽,前端哥的理由是因为css的border-width不支持.5px,所以用了1px来替代,最终渲染为2px的粗线条,这个问题往往会被忽视,从而导致移动网页中普遍存在2px的粗线条. retina下的网页1px被渲染为2px(甚至是3px,例如iPhone 6 Plus),可参考的文章<高清显示屏原