设置 img 在 div 中水平居中和垂直居中
Ø 前言
写 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 中水平居中和垂直居中的更多相关文章
- 文字在div中水平和垂直居中的的css样式
文字在div中水平和垂直居中的的css样式 text-align:center; /*水平居中*/ line-height: 20px; /*行距设为与div高度一致*/ 示例如下: HTML元素 & ...
- div中的img垂直居中的方法,最简单! 偷学来的,,,不要说我抄袭啊(*^__^*)
让div中的img垂直居中,水平居中很简单,用text-align:center; 让div中img垂直居中的方法其实也很简单 重点是: display:table-cell; 让标签具有表格的属 ...
- [转]如何让div中的内容垂直居中
转自:http://blog.163.com/yan_1990/blog/static/197805107201211311515454/ 虽然Div布局已经基本上取代了表格布局,但表格布局和Div布 ...
- 如何让div中的内容垂直居中
虽然Div布局已经基本上取代了表格布局,但表格布局和Div布局仍然各有千秋,互有长处.比如表格布局中的垂直居中就是Div布局的一大弱项,不过好在千变万化的CSS可以灵活运用,可以制作出准垂直居中效果, ...
- 设置span在div中垂直居中
转自:https://blog.csdn.net/weirenkuan/article/details/51177695 使用display:table-cell,span中内容无论多少,都可以垂直居 ...
- 如何让div中的span垂直居中 ----height:100%设置div的高度
如果div中只有一个span一个元素,可以使用line-height.如果div中还有其他元素,可以设置span的css如下: .span{ position: absolute; top: 50%; ...
- div块水平居中,垂直居中
水平居中一个div想要水平居中于它的父div中只需要给它加css属性margin:0 auto; 即可 <!DOCTYPE html> <html> <head> ...
- 在CSS中水平居中和垂直居中:完整的指南
这篇文章将会按照如下思路展开: 一.水平居中 1. 行内元素水平居中 2. block元素水平居中 3. 多个块级元素水平居中 二.垂直居中 1. 行内元素水平居中 2. block元素水平居中 3. ...
- div中让文字垂直居中
在div中如何让文字垂直居中? 作者在刚接触web前端开发时就遇到了这个问题,一直没有记录下来,今天正好有空,便记录下来. 为了方便展示,我把style先直接写在了div里. 效果如下图所示: 图1. ...
随机推荐
- [HEOI2014]平衡(整数划分数)
下课了,露露.花花和萱萱在课桌上用正三棱柱教具和尺子摆起了一个“跷跷板”. 这个“跷跷板”的结构是这样的:底部是一个侧面平行于地平面的正三棱柱教具,上面 摆着一个尺子,尺子上摆着若干个相同的橡皮.尺子 ...
- 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)
链接:https://ac.nowcoder.com/acm/contest/371/B来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知道 ...
- SpaceVim中vimproc的vimproc_linux64.so未找到
vimproc是我使用的SpaceVim中自动安装的插件,在启动时出现了"找不到dll文件"的提示,通过查阅官网( https://github.com/Shougo/vimpro ...
- CF739E Gosha is hunting
法一: 匹配问题,网络流! 最大费用最大流,S到A,B流a/b费0,A,B到i流1费p[i]/u[i],同时选择再减p[i]*u[i]? 连二次!所以i到T流1费0流1费-p[i]*u[i] 最大流由 ...
- CF698C - LRU
这又是什么毒瘤..... 解:把操作序列倒着来,就是考虑前k个入队的元素了.显然这样每个元素的概率不变. 状压.设fs表示当前元素为s的概率. 每次转移的时候选择一个不在s中的元素,作为下一个加入的元 ...
- [Splay][学习笔记]
胡扯 因为先学习的treap,而splay与treap中有许多共性,所以会有很多地方不会讲的很细致.关于treap和平衡树可以参考这篇博客 关于splay splay,又叫伸展树,是一种二叉排序树,它 ...
- 使用T4模板动态生成邮件内容并储存到任意位置
一.基础概念介绍 T4模板是扩展名为 .tt 的文本文件. 他分为设计时模板 和运行时模板.主要区别在于在vs中右键点击文件,打开“属性”,在“自定义工具”一栏中的值分别如下: 设计时模板: Text ...
- Win32 SDK:ListBox 为什么不整个 LB_SETTEXT
Win32 & SDK: ListBox 有个 LB_GETTEXT,为什么没有 LB_SETTEXT,想修改指定Item的Text,还真不容易. 自已写了一个,支持单选和多选模式,部分代码: ...
- PHP快速排序算法
说明: 通过设置一个初始中间值,来将需要排序的数组分成3部分,小于中间值的左边,中间值,大于中间值的右边,继续递归用相同的方式来排序左边和右边,最后合并数组 示例: <?php $a = arr ...
- eclipse安装activiti 工作流插件
记录一下下eclipse集成activiti插件的过程. eclipse的版本信息为:Version: Mars.1 Release 1 (4.5.1) 下面就开始介绍下如何安装activiti插件. ...