CSS经典问题(一):图片垂直居中细节

  按照惯性思维水平居中很简单,text-align: center; 垂直居中也不难,line-height的值等于height的值。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <link rel="stylesheet" type="text/css" href="css/base.css">
 7     <style>
 8         .content{
 9             width: 400px;
10             height: 120px;
11             line-height: 120px;
12             font-size: 20px;
13             text-align: center;
14             background: #00eeff;
15         }
16         .content>img{
17             width: 100px;
18             height: 100px;
19             vertical-align: middle;
20             display: inline-block;
21         }
22     </style>
23 </head>
24 <body>
25     <div class="content">
26       <img src="img/logo.jpg">
27     </div>
28 </body>
29 </html>

效果图:

不难发现图片在垂直方向,与父容器的垂直距离并不相等。那么这是为什么?

w3c上是这样解释的:

vertical-align 属性设置元素的垂直对齐方式。该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。

这里就需要了解到基线和ex的概念。基线并不是汉字文字的下端沿,而是英文字母“x”的下端沿。ex 相对长度单位。相对于字符“x”的高度。此高度通常为字体尺寸的一半。但是不难发现,中线并不是距离基线上半个ex的位置。而且ex与字体大小有关。那么猜测是否是因为字体大小,影响到了图片垂直居中。

那么尝试把font-size设置为0。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <link rel="stylesheet" type="text/css" href="css/base.css">
 7     <style>
 8         .content{
 9             width: 400px;
10             height: 120px;
11             line-height: 120px;
12             font-size: 0px;
13             text-align: center;
14             background: #00eeff;
15         }
16         .content>img{
17             width: 100px;
18             height: 100px;
19             vertical-align: middle;
20             display: inline-block;
21         }
22     </style>
23 </head>
24 <body>
25     <div class="content">
26       <img src="img/logo.jpg">
27     </div>
28 </body>
29 </html>

然后神奇的垂直居中了。

                                  (未完待续)

时间: 2024-12-10 05:00:37

CSS经典问题(一):图片垂直居中细节的相关文章

前端技术之CSS实现图片垂直居中

前端技术之CSS实现图片垂直居中技术 maybe yes 发表于2015-03-14 18:52 原文链接 : http://blog.lmlphp.com/archives/86/The_front-end_technology_pure_CSS_to_achieve_image_vertically  来自 : LMLPHP后院 让 图片实现水平居中比较简单,只需要在父级容器中添加属性 text-align 为 center 即可.使用纯 CSS 实现图片的垂直居中,可以将图片包裹容器的 d

CSS让图片垂直居中的几种技巧

在网页设计过程中,有时候会希望图片垂直居中的情况.而且,需要垂直居中的图片的高度也不确定,这就会给页面的布局带来一定的挑战.下面总结了一下,曾经使用过的几种方法来使图片垂直居中,除了第一种方法只限于标准浏览器外,另外两种方法的兼容性还不错. 方法一 将外部容器的显示模式设置成display:table,这个设置的意思不用多说了吧… img标签外部再嵌套一个span标签,并设置span的显示模式为display:table-cell,这样span内部的内容就相当于表格,可以很 方便的使用verti

兼容各种浏览器的图片垂直居中CSS解决方案

1.通过添加一无语义图片来解决图片垂直居中CSS,兼容各种IE6,IE7,火狐,谷歌等浏览器. <style> .itm{border:2px solid #ccc;width:160px;height:160px;text-align:center;} .blank{width:0;height:160px;} .itm img{vertical-align:middle;} </style> <div class="itm"> <img s

CSS实现图片垂直居中

.box{ width: 100px; height: 100px; border: 1px solid #ccc; border-radius: 5px; margin-bottom: 15px; } .out, .in{ float: left; margin-right: 15px; } /* out */ .out .t{ box-shadow: 0 -3px 5px -2px #f00; } .out .r{ box-shadow: 3px 0 5px -2px #0f0; } .ou

备忘:CSS图片垂直居中全兼容淫技整理集合

1. ie的文档流样式 writing-mode:tb-rl .box1 a{    writing-mode:tb-rl;  /* 触发layout 后面高度生效,文档流 自上往下,自右往左,宽度要自适应,文字方向在垂直方向居中 */    height:100%;    vertical-align:middle} 2. inline-block方式 .box2 i{    zoom:1; height:100%; width:0; /* 触发layout,撑起行内的高度,宽度为0,不占横向

css:图片垂直居中

图片在容器中垂直居中,有几种方式: 1.放在table里 (最简单直接的方法) <table style="height:200px;border:1px solid #000;"> <tr> <td> <img src="http://pics.taobao.com/bao/album/promotion/taoscars_180x95_071112_sr.jpg" /> </td> </tr>

css图片垂直居中

css图片垂直居中一.style代码 .case-pic{ height: 125px; position: relative; text-align: center } .case-pic span{ display: inline-block; height: 100%; vertical-align: middle; } .case-pic .img{ height: 60px; vertical-align:middle; } 二.html代码 <div class="case-p

CSS中让图片垂直居中的方法

在网页实现的过程中,经常会遇到图片垂直居中[水平居中的话,“text-align:center;”即可搞定]的情况.有时难免会遇到图片大小不同,但是要垂直居中于大小一样的容器里,这时候就比较棘手了.以前练习的时候,总是用一样的图片进行排版,避重就轻.但是今天,面对这个问题,觉得有必要挑战一下自己,同时也为有同样困惑的朋友们做一下探讨.以下内容就是我做的总结,简单又实用. 简述: 将外部容器的显示模式设置成display:table-cell,[针对IE6/IE7]在img标签的前面插入一对空标签

div+css:div中图片垂直居中

div中图片垂直居中 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <style> 7 .box { 8 width: 200px; 9 height:200px; 10 display: table-cell; 11 /* 水平居中 */ 12 text-align:center; 13