图片水平垂直居中对齐的四种做法

在前端开发中,图片垂直居中对奇是很常见的,有些是固定高度,有些没有固定高度,本文分享我用的四种方法,希望对你有所启发。

以下说的做法暂不考虑IE浏览器的兼容性,适用于移动端

以下的做法中假定外层的高度和宽度已经固定。通用HTML和CSS代码:

<div class="img">
<img src="1.jpg"/>
</div>
.img {
    width:300px;
    height:300px;
    margin:20px auto;
    background:#f00;
}

1.相对定位+margin:auto

利用图片相对于外层浮动,加上 margin:auto

<div class="img">
<img src="1.jpg/"/>
</div>
.img {
    position:relative;
}
.img img {
    position:absolute;
    top:0;
    bottom:0;
    left:0;
    right:0;
    margin:auto;
}

2.增加一个空白标签

兼容性较好,支持IE浏览器

<div class="img">
    <img src="1.jpg/"/>
    <i class="oblock"></i>
</div>
.img {
    text-align:center
}
.img img {
    vertical-align:middle
}
.img .oblock {
    display:inline-block;
    height:100%;
    width:0;
    vertical-align:middle
}

3.flexbox

利用flexbox里面的垂直居中属性:align-items:center(垂直居中)和justify-content:center(水平居中);

<div class="img">
    <img src="1.jpg/"/>
</div>
.img {
    display:-webkit-box;
    display:-ms-flexbox;
    display:flex-box;
    display:flex;
    -webkit-box-align:center;
    -ms-flex-align:center;
    align-items:center;
    -webkit-box-pack:center;
    -ms-flex-pack:center;
    justify-content:center;
    text-align:center;
}

4.table-cell

利用display:table-cell+图片vertical-align:middle

<div class="img">
    <span class="icenter"><img src="1.jpg/"/></span>
</div>
.img .icenter {
    display:table-cell;
    vertical-align:middle;
    text-align:center;
    height:300px;
    width:300px
}
.img img {
    vertical-align:middle;
    display:inline-block
}
时间: 2024-11-10 22:50:55

图片水平垂直居中对齐的四种做法的相关文章

CSS制作水平垂直居中对齐

作为前端攻城师,在制作Web页面时都有碰到CSS制作水平垂直居中,我想大家都有研究过或者写过,特别的其中的垂直居中,更是让人烦恼.这段时间,我收集了几种不同的方式制作垂直居中方法,但每种方法各有千秋呀,要正确的选择也是一件不容易的事情.我会将这几种方法一一介绍给大家,以供大家参考.或许对于我这样的初学者有一定的帮助. 用CSS来实现元素的垂直居中效果是件苦差事,虽然说实现方法有多种,但有很多方式在某些浏览器下可能无法正常的工作.接下来我们就一起来看看这些不同方法实现垂直居中的各自优点和其不足之处

网页中图片的垂直居中对齐

相信很多前端开发人员都曾遇到过需要将图片设置为垂直居中对齐的经历,我刚好在之前的一个项目刚刚解决了这个问题,使用的方法非常简单,兼容性也很好.具体做法如下: 1.只需要兼容各大现代浏览器: 父元素{ display:teble-cell; width:Npx; height:Npx; vertical-align:middle;} 2.如果要兼容IE7以前的低版本IE浏览器: 父元素{ display:teble-cell; width:Npx; height:Npx; vertical-ali

高宽不定图片水平垂直居中

图片水平垂直居中的两个常用方法: 1.Table-cell. IE8+及标准浏览器利用display:table-cell让容器以表格元素的方式呈现,配合vertical-align和text-align实现内部图片水平垂直居中. IE67不支持display:table-cell,可用font-size,值为容器的0.875倍做hack. html,body,p, div { margin: 0; padding: 0; } .wrap { height: 300px; width: 300p

图片水平垂直居中

效果仅见:http://runjs.cn/detail/tkid13aj <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style type="text/css"> body{ margin:0; padding:0;} dl,dt,dd,img{ margin:0; paddin

HTML-img图片水平垂直居中。

<style> .box{ width:800px;height:800px;border:1px solid #000; text-align:center;}//水平居中 span{ display:inline-block; height:100%; vertical-align:middle;}//垂直居中 img{ vertical-align:middle;}//垂直居中 </style> </head> <body> <div class

如何将一个绝对定位的div水平垂直居中对齐

如何将一个绝对定位的div垂直居中对齐:建议:尽可能的手写代码,可以有效的提高学习效率和深度.在某些时候可能需要将一个绝对定位的div在它的父对象中垂直居中对齐,可能用到的频率不是太高,但是偶尔也会用到,下面就简单介绍一下如何实现此功能.在通常情况下,可以为元素添加margin:0px auto即可让元素在它的父元素水平居中,然后再将它设置为垂直居中对齐即可.但是为绝对定位的对象添加margin:0px auto并不能生效,所以说还是要用老办法实现.代码示例如下: <!DOCTYPE html>

动态分配内存输出文本中的单词的四种做法

题目:有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好). 第一种做法 char c[] = "     asd afil     kjgl    rip  kjgdr  gds  sdg  gs "; char b[10] = {0}; char *a[10] = {NULL}; int i = 0, j = 0,k = 0;     //i使字符不断后移,j用来标识指针a,k用来标识中间字符数组b; while (1) {//把字符串的'\0' 作为i

不定宽的图片水平垂直居中

如何让不定高和不定宽的图片水平垂直居中在某一个定高定宽的容器中呢,请听我细细到来. 现在有很多浏览器(如chrome,部分ie,firefox,opera等)都支持display:table,display:table-cell,让图片水平垂直居中就很简单了,给外部容器加一个display:table和vertical-align:middle,text-align:center属性,图片给display:table-cell属性,就可以实现水平垂直居中. 当然,并不是所有的浏览器(如ie6,等

未知宽高的图片水平垂直居中的几种方法

最近在项目中遇到不固定宽高的图片要水平垂直居中的情况,发现垂直居中存在兼容性问题,下面收集了一些方法,可根据需要权衡使用. 1. 背景法(兼容性好,简单,但不利于动态导入的图片) html: <div class="wrap"></div> css: .wrap{ width:300px; height:200px; background: url(../img/test.jpg) center center no-repeat; } 2. 图片外面用个p标签,