关于用css实现文本和图片垂直水平居中

 

一直相信好记性不如烂笔头,最近遇到很多用到垂直居中的,整理一下以便日后查阅。

一、文本垂直水平居中

1、水平居中:

  文字水平居中没什么好说的,用text-align: center;即可很容易的实现。


2、垂直居中:

  1)简单的单行文本 

  利用line-height==height,使得单行文本垂直居中。

 <div>
垂直水平居中
</div>
 div{
width: 200px;
height: 200px;
text-align: center;
line-height: 200px;
background:#1AFF00;
}

  

  简单点来说,用p标签就可以,就像这样 

<p>垂直水平居中</p>
 p{
width: 200px;
height: 200px;
text-align: center;
line-height: 200px;
background:#00ABFF;
}

  效果如下:


  2)多行文本

  利用表格元素的特性,块级父元素display: table;内联元素display: table-cell;vertical-align: middle; 

(内联)

 <div
<span>国际《儿童权利公约》界定的儿童系指18岁以下的任何人</span>
</div>
 div{
width: 200px;
height: 200px;
display: table;
background:#1AFF00;
}
span{
display: table-cell;
vertical-align: middle;
}

(块级)

 <div>
<p>国际《儿童权利公约》界定的儿童系指18岁以下的任何人</p>
</div>

 

  定位+transform: translateY(-50%); 

 div{
position: relative;
width: 200px;
height: 200px;
background: #00ABFF;
}
p{
position: absolute;
top: 50%;
left: 0;
width: 200px;
height: 64px;
transform: translateY(-50%);
}

  定位+margin负值

 div{
position: relative;
width: 200px;
height: 200px;
background:#1AFF00;
}
p{
position: absolute;
top: 50%;
left: 0;
width: 200px;
height: 64px;
margin-top: -32px;
}

  定位+margin: auto;

 div{
position: relative;
width: 200px;
height: 200px;
background:#00ABFF;
}
p{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
width: 200px;
height: 64px;
}

  两者都是定宽定高,父元素用padding值,此值为父元素高度减去子元素高度的一半

 div{
width: 200px;
height: 64px;
padding: 68px 0;
background:#1AFF00;
}
p{
width: 200px;
height: 64px;
}

  两者都是定宽定高,父元素用overflow: hidden;(css hack)子元素用margin值,此值为父元素高度减去子元素高度的一半

 div{
width: 200px;
height: 200px;
overflow: hidden;
background:#00ABFF;
}
p{
width: 200px;
height: 64px;
margin:68px auto;
}

  效果如下:

  


二、图片垂直水平居中

1、水平居中

  1)img在css初始设置中是inline-block,行内块元素,此时若是要水平居中用text-align:center;

  2)给img元素设置display:block;转换为块级元素,要想水平居中用margin:0 auto;


2、垂直居中

   1.jpg

  用这张图片做示范

 <div>
<img alt="" src="1.jpg" />
</div>

  

  line-height==height  vertical-align: middle;

 div{
width: 198px;
height: 198px;
text-align: center;
line-height: 198px;
border: 1px solid #8900FF;
}
img{
vertical-align: middle;
}

  display: table-cell;vertical-align: middle;

 div{
display: table-cell;
vertical-align: middle;
width: 198px;
height: 198px;
border: 1px solid #8900FF;
}
img{
display: block;
margin: 0 auto;
}

  

  display: table-cell;vertical-align: middle; text-align: center;

 div{
display: table-cell;
vertical-align: middle;
text-align: center;
width: 198px;
height: 198px;
border: 1px solid #8900FF;
}

  定位+display: block;transform: translate(-50%,-50%);

 div{
position: relative;
width: 198px;
height: 198px;
border: 1px solid #8900FF;
}
img{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
display: block;
}

  定位+margin负值

 div{
position: relative;
width: 198px;
height: 198px;
border: 1px solid #8900FF;
}
img{
position: absolute;
top: 50%;
left: 50%;
margin: -75px 0 0 -75px;
}

  定位+margin: auto;

 div{
position: relative;
width: 198px;
height: 198px;
border: 1px solid #8900FF;
}
img{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
display: block;
}

   overflow: hidden;margin值

 div{
width: 198px;
height: 198px;
overflow: hidden;
border: 1px solid #8900FF;
}
img{ margin: 25px;
9 }

  padding值

 div{
padding: 25px;
width: 148px;
height: 148px; border: 1px solid #8900FF;
}

 


 

  用table的属性+vertical-align: middle;实现

 <div>
<span><img alt="" src="1.jpg" /></span>
</div>
 div{
display: table;
width: 198px;
height: 198px;
text-align: center;
border: 1px solid #8900FF;
}
span{
display:table-cell;
vertical-align: middle;
}

  用background实现

 <div></div>
 div{
width: 198px;
height: 198px;
border: 1px dashed #8900FF;
background: url(1.jpg) no-repeat center center;
}

  效果如下:

  

此篇完!!!

关于用css实现文本和图片垂直水平居中的更多相关文章

  1. css图片垂直水平居中及放大(实现水平垂直居中的效果有哪些方法?)

    实现水平垂直居中方法有很多种: 一.万能法: 1.已知高度宽度元素的水平垂直居中,利用绝对定位和负边距实现. <style type="text/css"> .wrap ...

  2. 【css】图片垂直水平居中

    一.已知宽高的图片实现垂直水平居中 1.借助margin-top负边距实现垂直居中 <!DOCTYPE html> <html> <head> <meta c ...

  3. CSS常见的5种垂直水平居中(面试够用)

    方法一 (flex) <div id='box'> <div class='child'></div> </div> #box{ width:200px ...

  4. css怎么让图片垂直左右居中?(外层div是浮动且按照百分比排列)

    一.原始的居中方法是把div换成table <div style="width: 500px; height: 200px; border: solid 1px red; text-a ...

  5. CSS实现文字和图片的水平垂直居中

    关于文字和图片的水平垂直居中,在前端界绝对算是一个老生常谈的问题了,尤其是垂直居中,什么千奇百怪的解法都能想的出来.下面我就总结一些比较常用的方法: 一.文本的水平垂直居中: 1.水平居中: 是不是很 ...

  6. div+css实现未知宽高元素垂直水平居中

    div+css实现未知宽高元素垂直水平居中.很多同学在面试的时候都会遇到这样的问题:怎么用div+css的方法实现一个未知宽高的弹出框(或者图片)垂直水平居中??如果用JS的话就好办了,但是JS的使用 ...

  7. css实现div不定宽高垂直水平居中解决方案

    在项目中我们经常能碰见然图片垂直水平居中,不定宽高的div垂直水平居中,等等~~ 现在我将介绍我所知道的几种用css来解决的几种方案. 1.父元素text-align:center;display:t ...

  8. 【CSS基础】实现 div 里的内容垂直水平居中

    方案一: 所有内容垂直水平居中 兼容性:IE8+. 条件:内容宽度和高度可以未知,可以是多行文字.图片.div. 描述:使用table-cell + vertical-align , html代码见文 ...

  9. css文本垂直水平居中

    一.单行文本居中 .content{ height:100px; line-height:100px; text-align:center; border:1px solid red; } 效果图 二 ...

随机推荐

  1. oracle分区表的建立方法(包含已经存在的表要分区)分享,非常好

    非原创 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中.分区完全对应用透明. Oracle的分区表可 ...

  2. php判断多维数组的技巧

    直接上代码吧: if(count($array) == count($array, 1)){ echo '一维数组'; }else{ echo '多维数组'; } 看了下手册 int count (m ...

  3. 关于 __proto__和prototype的一些理解

    var Person = function(name) {}; Person.prototype.say = function() { console.log("Person say&quo ...

  4. C++ 头文件系列(system_error)

    1.为什么system_error "....report error conditions originating from the operating system or low-lev ...

  5. 7种创建线程方式,你知道几种?线程系列Thread(一)

    前言 最近特别忙,博客就此荒芜,博主秉着哪里不熟悉就开始学习哪里的精神一直在分享着,有着扎实的基础才能写出茁壮的代码,有可能实现的逻辑有多种,但是心中必须有要有底哪个更适合,用着更好,否则则说明我们对 ...

  6. Web层框架对网站中所有异常的统一解决

    一个网站的异常信息作为专业的人士,是不会轻易暴露给用户的,因为那样狠不安全,显得你漏是一回事,只要还是考虑到网站的数据安全问题,下面给大家分享一下一些常见的web层框架是如何处理统一的异常. 之前都是 ...

  7. 2017百度web前端实习生在线笔试题

    代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s ...

  8. 天方夜谈·数据结构·Queue

    "我在想Y的时候不能想X....." 什么叫做Queue(队列)?"队列是项的集合,对于每一项x和y,如果x在y之前离开对头,那么x一定在y之前进入队列--Sesh·Ve ...

  9. [内存管理]linux X86_64处理器的内存布局图

    linux X86 64位内存布局图

  10. 使用Express开发个人网站(一)

    Express,基于Node.js平台,快速.开放.极简的 web 开发框架. Node的出现,让js有了运行在服务器端的可能,基于此的Express,可以快速,简单的搭建起一个服务器与个人网站. 安 ...