Ø  前言

写 html + css 时,img 标签的垂直与水平居中,应该是很常见的设计。实现的方式很多,但是容易遗忘,下面分别整理了几种实现方式。

1.   css 代码

<style type="text/css">

p, img{

margin: 0px;

}

#div1{

width: 600px;

/*border: 1px solid blue;*/

margin: 0px auto;

}

.interior{

width: 100%;

height: 120px;

border: 1px solid purple;

margin-bottom: 5px;

}

.interior img{

width: 100px;

height: 100px;

border: 1px solid orange;

}

#div1_1{

text-align: center;

line-height: 118px;

}

#div1_1 img{

display: inline-block;

vertical-align: middle;

}

#div1_2{

text-align: center;

display: table;

}

#div1_2 span{

display: table-cell;

vertical-align: middle;

}

#div1_3{

position: relative;

text-align: center;

}

#div1_3 img{

position: absolute;

left:50%;

top: 50%;

margin-left: -50px;

margin-top: -50px;

}

#div1_4 {

text-align: center;

}

#div1_4 img {

position: relative;

top: 9px;

}

</style>

2.   html 代码

<div id="div1">

<p>方式1. 使用</p>

<p>div: text-align: center; line-height: 150px;</p>

<p>img:display: inline-block; vertical-align: middle;</p>

<div id="div1_1" class="interior">

<img src="../../../../Images/20170319161233408.jpg" />

</div>

<p>缺点:<p>

<p>1. 需要父 div 定义 text-align: center; 这样如果有其他元素也会同样水平居中。</p>

</br>

<p>方式2. 使用</p>

<p>div: text-align: center; display: table;</p>

<p>span: table-cell; vertical-align: middle;</p>

<div id="div1_2" class="interior">

<span>

<img src="../../../../Images/20170319161233408.jpg" />

</span>

</div>

<p>缺点:<p>

<p>1. 需要父 div 定义 text-align: center; 这样如果有其他元素也会同样水平居中。</p>

<p>2. 而且需要使用 span 标签将 img 标签包裹。</p>

</br>

<p>方式3. 使用绝对定位 img</p>

<p>div: position: relative;</p>

<p>img:position: absolute; left:50%; top: 50%; margin-left: -50px; margin-top: -50px;</p>

<div id="div1_3" class="interior">

<img src="../../../../Images/20170319161233408.jpg" />

<span>span 1 span 1 span 1</span>

</div>

<p>缺点:<p>

<p>1. 如果内部有其他元素时,都水平垂直居中,会被 img 遮盖。</p>

</br>

<p>方式4. 使用相对定位 img</p>

<p>div: text-align: center;</p>

<p>img:position: relative; top: 9px;</p>

<div id="div1_4" class="interior">

<img src="../../../../Images/20170319161233408.jpg" />

<span>span 1 span 1 span 1</span>

</div>

<p>缺点:<p>

<p>1. 需要父 div 定义 text-align: center; 这样如果有其他元素也会同样水平居中。</p>

<p>2. 必须知道父 div 的高度,自行调整 top 值,在高度不确定的情况下就不能使用了。</p>

</div>

3.   运行效果

Ø  总结

1.   其实方式1、2、3 都并没有真正的垂直居中,仔细观察会发现,不是上边距比下边距高了几px,就是下边距比上边距高了几px。是否有其他方式可以解决呢?

2.   如果在父 div 高度确定的情况下,方式4是比较可取的,浏览器兼容也挺好。

3.   参考链接:http://www.51xuediannao.com/html+css/htmlcssjq/css_img_center.html

设置 img 在 div 中水平居中和垂直居中的更多相关文章

  1. 文字在div中水平和垂直居中的的css样式

    文字在div中水平和垂直居中的的css样式 text-align:center; /*水平居中*/ line-height: 20px; /*行距设为与div高度一致*/ 示例如下: HTML元素 & ...

  2. div中的img垂直居中的方法,最简单! 偷学来的,,,不要说我抄袭啊(*^__^*)

    让div中的img垂直居中,水平居中很简单,用text-align:center; 让div中img垂直居中的方法其实也很简单 重点是: display:table-cell;   让标签具有表格的属 ...

  3. [转]如何让div中的内容垂直居中

    转自:http://blog.163.com/yan_1990/blog/static/197805107201211311515454/ 虽然Div布局已经基本上取代了表格布局,但表格布局和Div布 ...

  4. 如何让div中的内容垂直居中

    虽然Div布局已经基本上取代了表格布局,但表格布局和Div布局仍然各有千秋,互有长处.比如表格布局中的垂直居中就是Div布局的一大弱项,不过好在千变万化的CSS可以灵活运用,可以制作出准垂直居中效果, ...

  5. 设置span在div中垂直居中

    转自:https://blog.csdn.net/weirenkuan/article/details/51177695 使用display:table-cell,span中内容无论多少,都可以垂直居 ...

  6. 如何让div中的span垂直居中 ----height:100%设置div的高度

    如果div中只有一个span一个元素,可以使用line-height.如果div中还有其他元素,可以设置span的css如下: .span{ position: absolute; top: 50%; ...

  7. div块水平居中,垂直居中

    水平居中一个div想要水平居中于它的父div中只需要给它加css属性margin:0 auto; 即可 <!DOCTYPE html> <html> <head> ...

  8. 在CSS中水平居中和垂直居中:完整的指南

    这篇文章将会按照如下思路展开: 一.水平居中 1. 行内元素水平居中 2. block元素水平居中 3. 多个块级元素水平居中 二.垂直居中 1. 行内元素水平居中 2. block元素水平居中 3. ...

  9. div中让文字垂直居中

    在div中如何让文字垂直居中? 作者在刚接触web前端开发时就遇到了这个问题,一直没有记录下来,今天正好有空,便记录下来. 为了方便展示,我把style先直接写在了div里. 效果如下图所示: 图1. ...

随机推荐

  1. Codeforces | CF1029D 【Concatenated Multiples】

    \(qwq\)昨天晚上\(Div.3\)过了这道题...早上交了\(1A\)...看在\(CF\)上\(hack\)的情况并不乐观而且也没人来交这题的份上...我决定发一篇题解帮\((zhuang)\ ...

  2. cf1088D Ehab and another another xor problem (构造)

    题意:有两数a,b,每次你可以给定c,d询问a xor c和b xor d的大小关系,最多询问62次($a,b<=2^{30}$),问a和b 考虑从高位往低位做,正在做第i位,已经知道了a和b的 ...

  3. Finding Lines UVALive - 6955(随机)

    给出n个点,问你有没有可能存在一条直线,这n个点中存在百分号p以上点在这条直线上. 两个点确定一条直线,所以可以随机枚举两个点,然后用这条直线去判断其他的点是不是在这条直线上,如果在这个直线上的点超过 ...

  4. Python3 与 C# 扩展之~基础衍生

      本文适应人群:C# or Python3 基础巩固 代码裤子: https://github.com/lotapp/BaseCode 在线编程: https://mybinder.org/v2/g ...

  5. [THUWC2017]在美妙的数学王国中畅游

    [THUWC2017]在美妙的数学王国中畅游 e和sin信息不能直接合并 泰勒展开,大于21次太小,认为是0,保留前21次多项式即可 然后就把e,sin ,kx+b都变成多项式了,pushup合并 上 ...

  6. poj2893 M×N puzzle

    x数码难题有解性判定: 只有必要性证明,没有充分性...... 还记得那个naive至极的八数码难题吗? 它回来了! 主要是借助逆序对这一神奇的手段: 考虑把x数码写成一排时的逆序对的奇偶性: 当你左 ...

  7. JMeter请求执行次数 你想执行几次就执行几次

    今天介绍下JMeter如何控制请求执行次数 主要有两种方式: 方式一:通过循环控制器控制每个请求的执行次数 例如:脚本执行规律是这样的,login-->customerPage-->sea ...

  8. 遍历List过程中同时修改

    public static void Main() { List<int> list = new List<int>(); ,,,,,,,,,}; list.AddRange( ...

  9. hdu 2973"YAPTCHA"(威尔逊定理)

    传送门 题意: 给出自然数 n,计算出 Sn 的值,其中 [ x ]表示不大于 x 的最大整数. 题解: 根据威尔逊定理,如果 p 为素数,那么 (p-1)! ≡ -1(mod p),即 (p-1)! ...

  10. logistics回归简单应用(二)

    警告:本文为小白入门学习笔记 网上下载的数据集链接:https://pan.baidu.com/s/1NwSXJOCzgihPFZfw3NfnfA 密码: jmwz 不知道这个数据集干什么用的,根据直 ...