CSS图片垂直居中详解
CSS图片垂直居中问题,困扰了我许久,今天终于可以总结下来了:
方法一:利用定位
HTML结构如:
1 2 3 4 5 | < div class="box"> < a class="pic-wrap" href="#" target="_blank"> < img src="http://img01.taobaocdn.com/tps/i1/T1LeeNXodaXXXXXXXX-130-150.png"> </ a > </ div > |
CSS代码如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | body { margin : 0 ; padding : 0 ; font : 12px / 1.5 tahoma , arial ; } .box { width : 220px ; height : 220px ; border : 1px solid #F30 ; margin : 100px auto 0 ; display : table; } .pic-wrap { display : table-cell ; text-align : center ; vertical-align : middle ; } /*主要针对IE6、7的hack*/ .box { * position : relative ; } .pic-wrap { * width : 100% ; * position : absolute ; * top : 50% ; * left : 0 ; /*继承自body的字体会影响到ie6,设置默认的windows系统字体*/ _font-family : sans-serif ; } .pic-wrap img { * position : relative ; * top : -50% ; * left : 0 ; /*在ie中空文本节点有默认高度*/ vertical-align : middle \ 9 ; /*在ie中,a标签中的img标签默认有蓝色边框*/ border : none \ 9 ; } |
方法二:
HTML结构同上,
CSS代码如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | .box { width : 220px ; height : 220px ; border : 1px solid #F30 ; margin : 100px auto 0 ; } .pic-wrap { display : table-cell ; vertical-align : middle ; width : 220px ; height : 220px ; text-align : center ; /*ie6、7不支持display:table-cell*/ * display : block ; * font-size : 192px ; /*字体大小为height*0.783或者height/1.14,这里约为192px*/ _font-family : sans-serif ; /*设置字体,否则在ie6下会有一个像素的偏差*/ } .pic-wrap img { border : none ; vertical-align : middle ; /*由于ie下空文本节点有默认高度,所以设置*/ } |
【注意,当在css中设置了body元素字体的话,那么方法二在ie7下会失效的】
最佳方法:
CSS代码如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | body { margin : 0 ; padding : 0 ; font : 12px / 1.5 tahoma , arial ; } .box { width : 220px ; height : 220px ; border : 1px solid #F30 ; margin : 100px auto 0 ; } .pic-wrap { display : table-cell ; vertical-align : middle ; width : 220px ; height : 220px ; text-align : center ; /*ie6、7不支持display:table-cell*/ * display : block ; _font-size : 192px ; + line-height : 220px ; /*设置ie7中空文本节点行高为220px*/ _font-family : sans-serif ; } .pic-wrap img { border : none ; vertical-align : middle \ 9 ; /*由于ie中有默认高度的空文本节点*/ } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构