• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > CSS解决页面图片水平垂直居中问题的方法

CSS解决页面图片水平垂直居中问题的方法

作者:大漠 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含CSS,图片,水平垂直居中等相关知识,大漠 希望在学习及工作中可以帮助到您

做为一个前端设计人员,对于产品展示页面的设计一定不会陌生,其中产品图片摆放是必定经历的一步,并且水平居中和垂直居中又是最多的。有时需要产品图片水平垂直居中显示,这种展示用CSS来实现又是比较棘手的一件事,我想很多前端攻程师都有研究过或者说是搜索过这些方法吧。很多网站都是使用table来实现产品图片垂直居中,实现也是相当的方便,唯一不足之处就是结构繁锁,那么今天和大家一起看几种不是使用talbe方法实现产品图片水平垂直居中的方法。

图片水平垂直居中存在的问题

所谓的图片水平垂直居中就是把图片放在一个容器元素中(容器大于图片尺寸或是指定了大小的容器),并且图片位居此容器正中间(中间是指元素容器的正中间),而图片不是以背景图片(background-image)形式展示,是以<img>元素形式展示的。如下图所示:
2016310113055157.png (149×73)

大家都知道,如果其中img有明确的尺寸,并且图片尺寸都是一致的,要实现其水平垂直居中一件非常容易的事情,我们只要像下面操作就能方便解决问题:

将图片以块元素方式显示(display:block);
给图片指定明确的margin-left和margin-top值,而其中margin-left值等于图片所在容器的宽度(imbBoxWidth)减去图片本身宽度(imgWidth)的值的一半【margin-left=(imgBoxWidth-imgWidth)/2】;margin-top值和margin-left很类似,只是把相对应的宽度值换成高度值,即【margin-top=(imgBoxHeight-imgHeight)/2】。
上面的方法是方便简单,但受限太大,比如说图片不一样时,用上面的方法实现就比较难,或许你会说给相图尺寸的图片定义一个类,然后在给他们指定不同的margin。但有很多情况下我们是无法使用这种方法来解决图片水平垂直居中的问题,比如说有很多不同尺寸的图片,而且图片容器的单位和图片大小单位不一致时,这样我们就没有办法能计算出图片与容器之间的margin是多少,此时解决图片水平居垂直居中就相当的困难。换过来说,如果有什么办法能让不同尺寸的图片实现水平垂直居中,那对于我们来说是多么有用的,又是多么方便的一件事。

解决问题——让图片水平垂直居中

解决水平居中是相当的容易,如果图片左浮动并且"display:inline"时,我们只要给图片设置一个"text-align:center"属性,就顺利解决了水平居中。

对于垂直居中的最佳解决方案,在现代浏览器中,我们可以给图片容器设置“dipslay:table-cell;vertical-align:middle”, 这种方法能顺利的让图片实现垂直居中,但只能在现代浏览器运行,在IE6-7中无法正常运。这样一来是不是将无法实现呢?大家别急,我们一起来看下面的几种方法:

1、table-cell加上display:inline

这种方法很神奇,前面我们说过用display-table和vertical-middle是在现代浏览器中实现图片垂直居中是最佳办法,只是IE6-7不支持display:table-cell,其实并不是那么严重,我们只要在IE6-7下给他来个另外的写法。其实掌握了原理在IE下实现起来也并不难,下面我们一起先来看看这个思路:

首先在图片的容器元素中设置“display:table-cell;vertical-align:middle;”实现现浏览器的垂直居中;
IE6-7有一个好的办法,就是创建一个线盒,此线盒的高度和图片容器的高度一样,并且给这个线盒也设置“vertical-align:middle”。
接下来的关键是给IE6-7创建线盒,还好IE6-7下部分显示支持“dipslay:inline-block”。这样我们就可以在图片的容器中创建一个空元素(比如说span),并且设置span的“display:inline-block;height:100%;vertical-align:middle”。

创建线盒中有一个细节需要注意,在IE6-7中空的line-block元素宽度为“0”,这样在IE6-7下是没有效果的,此时我们需要给span加上“width:1px”,此时会给水平居中造成1px的误差,但这种bug你是可以接受得了的。

那么最终解决方案就是使用display:table-cell和设置了display:inline-block的线合span。当然其中还是需要为IE写一点特殊的代码,接下来我们的起来看代码:

HTML Markup

  1. <ul class="imgWrap clearfix">  
  2.  <li><a href="#" class="imgBox"><span></span><img src="images/img1.jpg" alt="" /></a></li>  
  3.  <li><a href="#" class="imgBox"><span></span><img src="images/img2.jpg" alt="" /></a></li>  
  4.  <li><a href="#" class="imgBox"><span></span><img src="images/img3.jpg" alt="" /></a></li>  
  5.  <li><a href="#"<

您可能想查找下面的文章:

  • css小技巧
  • 各大网站CSS初始化代码
  • css权重问题
  • CSS实现鼠标上移图标旋转效果
  • 使用CSS3制作一个简单的进度条(demo)
  • 用纯CSS实现饼状Loading等待图效果
  • 利用CSS3伪元素实现逐渐发光的方格边框
  • CSS3实现内凹圆角的实例代码
  • 利用HTML5+CSS3实现3D转换效果实例详解
  • css3+伪元素实现鼠标移入时下划线向两边展开的效果

相关文章

  • 2017-08-06纯css制作带三角的边框(附效果图)
  • 2017-08-06浅析CSS实现水平垂直同时居中的5种思路
  • 2017-08-06详解CSS中@supports的用法
  • 2017-08-06CSS下10个节约开发时间的技巧
  • 2017-08-06让IE 6,7,8支持CSS3的部分属性及htc的应用
  • 2017-08-06css hack之清除浮动(clearfix)
  • 2017-08-06CSS解决链接锚点定位偏移的代码
  • 2017-08-06使用CSS3中的calc()属性来以算式表达尺寸数值
  • 2017-08-06CSS3中:nth-child和:nth-of-type的区别深入理解
  • 2017-08-06ASP.NET性能优化之负载均衡的方法

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • CSS Cookbook 创建文字导航菜单和翻转特效
    • 带你深入剖析inline-block属性值的前世今生
    • 纯CSS3大转盘抽奖示例代码(响应式、可配置)
    • div+css 定位浅析
    • 兼容ie的内阴影和外阴影实现效果及测试代码
    • css特效 一道闪光在图片上划过代码
    • !important用法使用介绍
    • 浏览器如何判断css优先级
    • css和js实现瀑布流效果示例
    • CSS行高line-height的个人理解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有