css中vertical-align和line-height的用法

1、先来看一种现象:

  (1)、将一个图片放入一个div块中,div块背景颜色设置为aquamarine。将会发现图片与div块下边沿有一定间隙。

      实例:

     

      代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>css中vertical-align和line-height的用法</title>
  6. <style>
  7. *{
  8. margin: 0px;
  9. padding: 0px;
  10. }
  11. div{
  12. background-color: aquamarine;
  13. }
  14. img {
  15. width: 300px;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <div>
  21. <img src="./131796750659172.jpg" alt="picture">
  22. </div>
  23. </body>
  24. </html>

  (2)、在div块的图片后面放入一个span标签,内容为xxxx!,会发现span标签内的元素与图片是在底线对其的,当给span加一个背景时,可以看到图片底部是与字母x底部对齐的。

    实例:

      

      实例:放大之后可以很明显的看出来!

      

      代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>css中vertical-align和line-height的用法</title>
  6. <style>
  7. *{
  8. margin: 0px;
  9. padding: 0px;
  10. }
  11. div{
  12. background-color: aquamarine;
  13. }
  14. img{
  15. width: 300px;
  16. }
  17. span{
  18. background-color: azure;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <div>
  24. <img src="./131796750659172.jpg" alt="picture">
  25. <span>xxxxx!</span>
  26. </div>
  27. </body>
  28. </html>

      为什么会出现这种现象呢?

  答:原因是行内元素默认都受vertical-align(垂直对齐方式)和line-height(行高)的影响,而vertical-align默认的对齐方式是baseline,即基线对齐。这个基线就是span标签里的字母X的下边沿,故图片底部是与字母底部相对齐的(不是与span标签的背景对齐)。又因为字母本身有line-height(行高)值,所以span标签加上背景后比字母要高一些。

      解决方法:(四种方法任意一种都可解决该问题)

  (1)、将整个div内的font-size设置为0;

  (2)、将图片img变为块级元素,即设置其为display:block;

  (3)、给div设置一个行高(值尽量小些),设置为line-height:5px;

  (4)、设置图片img垂直对齐方式vertical-align,值为top/middle/bottom任意一个都可以(为了覆盖默认的值baseline);

    效果如下:

    

    完整代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>css中vertical-align和line-height的用法</title>
  6. <style>
  7. *{
  8. margin: 0px;
  9. padding: 0px;
  10. }
  11. div{
  12. background-color: aquamarine;
  13. /*line-height: 5px;*/
  14. /*font-size: 0;*/
  15. }
  16. img{
  17. width: 300px;
  18. /*display: block;*/
  19. vertical-align: bottom;
  20. }
  21. span{
  22. background-color: azure;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div>
  28. <img src="./131796750659172.jpg" alt="picture">
  29. <span>xxxxx!</span>
  30. </div>
  31. </body>
  32. </html>

2、图片垂直居中的问题

    在div和img中添加以下属性及属性值即可实现图片在div块中的垂直居中。

  1. <style type="text/css">
  2. ...
  3.  
  4. div{
  5. line-height: 500px;
  6. font-size: 0px;
  7. }
  8. img{
  9. vertical-align: middle;
  10. }
  11.  
  12. ...
  13. <style>

    效果如下:

      

    代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>css中vertical-align和line-height的用法</title>
  6. <style>
  7. *{
  8. margin: 0px;
  9. padding: 0px;
  10. }
  11. div{
  12. background-color: aquamarine;
  13. line-height: 500px;
  14. font-size: 0px;
  15. }
  16. img{
  17. width: 300px;
  18. vertical-align: middle;
  19. }
  20. span{
  21. background-color: azure;
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <div>
  27. <img src="./131796750659172.jpg" alt="picture">
  28. <span>xxxxx!</span>
  29. </div>
  30. </body>
  31. </html>

    本文出处:http://www.zhangxinxu.com/wordpress/2015/08/css-deep-understand-vertical-align-and-line-height/

css中vertical-align和line-height的用法的更多相关文章

  1. 前端知识点回顾之重点篇——CSS中vertical align属性

    来源:https://www.cnblogs.com/shuiyi/p/5597187.html 行框的概念 红色(line-height)为行框的顶部和底部,绿色(font-size)为字体的高度, ...

  2. CSS中box-sizing属性的理解与部分用法

    今天看了一些关于box-sizing的一些资料,在这里整理一下,希望也能对大家有所帮助. box-sizing是CSS的一个属性,很好的解决了盒模型的相关问题.CSS中的盒模型(Box model)分 ...

  3. CSS中的class与id区别及用法

    转自http://www.divcss5.com/rumen/r3.shtml及http://www.jb51.net/css/35927.html 我们平常在用DIV CSS制作Xhtml网页页面时 ...

  4. Css中路径data:image/png;base64的用法详解

    今天查看一些网站的css中发现了 background-image:url(data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAAB ...

  5. CSS中路径及form表单的用法

    1.什么是路径? 路劲分为三种 1.绝对路径: 从盘符开始,然后依次的往下查找 本地: C:/Users/Administrator/Desktop/0527day01/07.html 服务器的: w ...

  6. DIV+CSS中标签dl dt dd常用的用法

    转自:http://smallpig301.blog.163.com/blog/static/9986093201010262499229/ < dl>< /dl>用来创建一个 ...

  7. Css中路径data:image/png;base64的用法详解 (转载)

    大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如: background-image:url(data:image/png;base64, iVBORw0KGg ...

  8. html/css中相对定位relative和绝对定位absolute的用法

    一.相对定位(position:relative) 1.相对定位:将盒子的position属性设置为relative:可通过left.top.right.bottom设置偏移量. 相对定位基础用法示例 ...

  9. 浅析CSS中的BFC和IFC

    1. 为什么会有BFC和IFC 首先要先了解两个概念:Box和formatting context: Box:CSS渲染的时候是以Box作为渲染的基本单位.Box的类型由元素的类型和display属性 ...

  10. html5之canvas困惑 在canvas标签内需要设置了宽跟高,如果在css中设置同样的宽跟高,画出来的图像变形了?

    <canvas class="cvs"></canvas> 遇到的问题: 如css 中设.cvs{width:500px;height:400px;},也就 ...

随机推荐

  1. C语言学习12

    希尔排序 //希尔排序 #include <stdio.h> void main() { ], i; int shell(int a[], int n); printf("请输入 ...

  2. 【笔记】linux x86漏洞利用

    0x1任意代码执行是如何实现的? 任意代码执行使用一种叫“覆盖返回地址”的技术来实现.这种方式使得攻击者重写位于栈上的返回地址,这将导致任意代码执行.

  3. xtu summer individual 2 E - Double Profiles

    Double Profiles Time Limit: 3000ms Memory Limit: 262144KB This problem will be judged on CodeForces. ...

  4. HDU1757-A Simple Math Problem,矩阵快速幂,构造矩阵水过

    A Simple Math Problem 一个矩阵快速幂水题,关键在于如何构造矩阵.做过一些很裸的矩阵快速幂,比如斐波那契的变形,这个题就类似那种构造.比赛的时候手残把矩阵相乘的一个j写成了i,调试 ...

  5. [Docker]容器的隔离与限制

    1.Docker事实 1)容器技术的兴起源于Pass技术的普及 2)Docker公司发布的Docker项目具有里程碑式的意义 3)Docker项目通过容器镜像解决了应用打包这个根本性难题 4)容器本身 ...

  6. 【模板】manacher算法

    传送门 某篇好文章 #include <cstdio> #include <cstring> #define N 22200000 #define min(x, y) ((x) ...

  7. IPython的常见用法

    IPython :交互式的Python命令行 安装: pip install ipython 使用(命令行中启动): ipython # 与Python解释器的使用方法一致 IPython高级功能: ...

  8. Codeforces827D. Best Edge Weight

    $n \leq 2e5,m \leq 2e5$的有边权图,对每条边问:不改其他边的情况下这条边最多能是多少使得他一定在所有最小生成树上,如果无穷大输出-1. 典型题+耗时题,CF上的绝望时刻..打VP ...

  9. linux下rename用法--批量重命名 转

    原文地址:https://www.cnblogs.com/hester/p/5615871.html Linux的rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Li ...

  10. 前端的指导方针---css篇

    英语是渣渣,想学英语,又不想花钱报培训班.看不懂的文章,还是翻译一下留着自己看吧. 引自   :  https://github.com/bendc/frontend-guidelines HTML ...