https://blog.csdn.net/u014607184/article/details/51820508
https://blog.csdn.net/liuying1802028915/article/details/79408551

表格内文居中

  1. #class td /*设置表格文字左右和上下居中对齐*/
  2. {
  3. vertical-align: middle;
  4. text-align: center;

单行文本垂直居中

对于单行文本,我们只需要将文本行高(line-height)和所在区域高度(height)设为一致即可:

  1. <!--html代码-->
  2. <div id="div1">
  3. 这是单行文本垂直居中
  4. </div>
  5.  
  6. /*css代码*/
  7. #div1{
  8. width: 300px;
  9. height: 100px;
  10. margin: 50px auto;
  11. border: 1px solid red;
  12. line-height: 100px; /*设置line-height与父级元素的height相等*/
  13. text-align: center; /*设置文本水平居中*/
  14. overflow: hidden; /*防止内容超出容器或者产生自动换行*/
  15. }

多行文本垂直居中

多行文本垂直居中分为两种情况,一个是父级元素高度不固定,随着内容变化;另一个是父级元素高度固定。

父级元素高度不固定

父级高度不固定的时,高度只能通过内部文本来撑开。这样,我们可以通过设置内填充(padding)的值来使文本看起来垂直居中,只需设置padding-top和padding-bottom的值相等:

  1. <!--html代码-->
  2. <div id="div1">
  3. 这是多行文本垂直居中,
  4. 这是多行文本垂直居中,
  5. 这是多行文本垂直居中,
  6. 这是多行文本垂直居中。
  7. </div>
  8.  
  9. /*css代码*/
  10. #div1{
  11. width: 300px;
  12. margin: 50px auto;
  13. border: 1px solid red;
  14. text-align: center; /*设置文本水平居中*/
  15. padding: 50px 20px;
  16. }

父级元素高度固定

本文一开始就提到css中的vertical-align属性,但是它只对拥有valign特性的元素才生效,结合display: table;,可以使得div模拟table属性。因此我们可以设置父级div的display属性:display: table;;然后再添加一个div包含文本内容,设置其display:table-cell;vertical-align:middle;。具体代码如下:

  1. <!--html代码-->
  2. <div id="outer">
  3. <div id="middle">
  4. 这是固定高度多行文本垂直居中,
  5. 这是固定高度多行文本垂直居中,
  6. 这是固定高度多行文本垂直居中,
  7. 这是固定高度多行文本垂直居中。
  8. </div>
  9. </div>
  10.  
  11. /*css代码*/
  12. #outer{
  13. width: 400px;
  14. height: 200px;
  15. margin: 50px auto;
  16. border: 1px solid red;
  17. display: table;
  18. }
  19. #middle{
  20. display:table-cell;
  21. vertical-align:middle;
  22. text-align: center; /*设置文本水平居中*/
  23. width:100%;
  24. }

子div垂直居中

1、根据子div具体大小设置偏移

如果子div固定大小,设定水平和垂直偏移父元素的50%,再根据实际长度将子元素向上和向左挪回一半大小

  1. <!--html代码-->
  2. <div id="outer">
  3. <div id="middle">
  4. 子div(固定大小)垂直居中
  5. </div>
  6. </div>
  7.  
  8. /*css代码*/
  9. #outer{
  10. background-color: #13CDF4;
  11. width: 300px;
  12. height: 200px;
  13. position: relative;
  14. }
  15. #middle{
  16. background-color: #E41627;
  17. width: 100px;
  18. height: 100px;
  19. margin: auto;
  20. position: absolute;
  21. left: 50%;
  22. top: 50%;
  23. margin-left: -50px;
  24. margin-top: -50px;

2、利用translate

针对第一种方法中水平和垂直偏移父元素的50%后,不设置margin值,而是利用除css3中的transform属性设置translate的值,css代码部分改成如下:

  1. #middle{
  2. background-color: #E41627;
  3. width: 100px;
  4. height: 100px;
  5. margin: auto;
  6. position: absolute;
  7. left: 50%;
  8. top: 50%;
  9. transform: translateX(-50%) translateY(-50%);
  10. -webkit-transform: translateX(-50%) translateY(-50%);
  11. }

这种方法需要注意transform是css3中的属性,使用时注意浏览器的兼容性,IE9之前的版本不支持。

3、利用绝对布局absolute

  1. <!--html代码-->
  2. <div id="outer">
  3. <div id="middle">
  4. 利用绝对定位实现子div大小不固定垂直居中
  5. </div>
  6. </div>
  7.  
  8. /*css代码*/
  9. #outer{
  10. background-color: #13CDF4;
  11. width: 300px;
  12. height: 200px;
  13. position: relative;
  14. }
  15. #middle{
  16. background-color: #E41627;
  17. width: 100px; //子div大小可随意设置
  18. height: 100px;
  19. margin: auto;
  20. position: absolute;
  21. top: 0;left: 0;right: 0;bottom: 0;
  22. }

4、利用vertical-align

  1. <!--html代码-->
  2. <div id="outer">
  3. <div id="middle">
  4. 利用vertical-align属性实现子div大小不固定垂直居中
  5. </div>
  6. </div>
  7.  
  8. /*css代码*/
  9. #outer{
  10. background-color: #13CDF4;
  11. width: 300px;
  12. height: 200px;
  13. display: table-cell;
  14. vertical-align: middle;
  15. }
  16. #middle{
  17. background-color: #E41627;
  18. width: 100px;
  19. height: 100px;
  20. margin: 0 auto;
  21. }

这种方法是将div转变成table-cell显示,然后通过vertical-align: middle;再设置其子元素垂直居中,这种方法和上面设置父级元素高度固定时多行文本居中的方法一样,所以这种方法也不能兼容IE7、IE6。如果需要兼容IE7、IE6,可以参照上面的代码,上面设置父级元素高度固定时多行文本居中的方法其实就是将最里面的div垂直居中。这里我就不重述了。

5、利用display: flex

  1. <!--html代码-->
  2. <div id="outer">
  3. <div id="middle">
  4. 利用display: flex实现子div大小不固定垂直居中
  5. </div>
  6. </div>
  7.  
  8. /*css代码*/
  9. #outer{
  10. background-color: #13CDF4;
  11. width: 300px;
  12. height: 200px;
  13. display: flex;
  14. justify-content: center;/*实现水平居中*/
  15. align-items:center; /*实现垂直居中*/
  16. }
  17. #middle{
  18. background-color: #E41627;
  19. width: 100px;
  20. height: 100px;
  21. }

这种方法只需要在父级div中加上这三句话就行,但是在IE中兼容性不好,IE9及以下IE浏览器版本都不支持。

 

css 文本和div垂直居中方法汇总的更多相关文章

  1. CSS 文本字体颜色设置方法(CSS color)

    CSS 文本字体颜色设置方法(CSS color) 一.认识CSS 颜色(CSS color) 这里要介绍的是网页设置颜色包含有哪些:网页颜色规定规范. 1.常用颜色地方包含:字体颜色.超链接颜色.网 ...

  2. CSS实现文本,DIV垂直居中

    https://blog.csdn.net/linayangoo/article/details/88528774 1.水平居中 1.行内元素水平居中 text-align:center; 利用tex ...

  3. CSS中设置DIV垂直居中的N种方法 兼容IE浏览器

    在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...

  4. css 垂直居中方法汇总

    查看原文可以有更好的排版效果哦 前言 居中是平时工作中的最常见的一种需求,各种图片居中或者各种弹窗,水平居中还好,特别是垂直居中,很多初学者表示太难写了,现在列举一些常用的方法. 实战 这里只讲述cs ...

  5. IE6/7/8 CSS兼容性问题和解决方法汇总

    断断续续的在开发过程中收集了好多的bug以及其解决的办法,都在这个文章里面记录下来了!希望以后解决类似问题的时候能够快速解决,也希望大家能在留言里面跟进自己发现的ie6 7 8bug和解决办法! 1: ...

  6. CSS中设置div垂直居中

    在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...

  7. CSS中图片水平垂直居中方法小结

    写页面时难免会遇到水平垂直居中的问题,总结一下最近使用的方法. 一.使用垂直居中和水平居中 <div id="div1"> <img src="img/ ...

  8. div 居中方法汇总

    本文是从简书复制的, markdown语法可能有些出入, 想看"正版"和更多内容请关注 简书: 小贤笔记 情况一: 父子容器宽高已知 方法一 html <div class= ...

  9. css布局 - 九宫格布局的方法汇总(更新中...)

    目录: margin负值实现 祖父和亲爹的里应外合 换个思路 - li生了儿子帮大忙. 借助absolute方位值,实现自适应的网格布局 cloumn多栏布局 grid display: table: ...

随机推荐

  1. 使用Dockerfile定制镜像

    Dockerfile是一个文本文件,其中包含额一条一条的指令,每一条指令构建一层,因此每一条指令的作用就是描述这一层应当如何的构建. 以构建nginx镜像为例,使用Dockerfile构建的步骤如下: ...

  2. javascript——后台传值map类型转换成json对象

    前端需要对后端传过来的值进行解析之后再展示,而后端传过来的值可能是各种类型的,一般情况下要么和后端沟通下让他直接传给我们需要的类型,这个,我一般直接自己转,这次后端传回来一个map类型的对象,我转来转 ...

  3. Waiting for possible shutdown message on port 4445

    如果用jmeter通过命令行(无图形界面)执行测试脚本,可参见jmeter最简单使用,并且启动多个jmeter实例,肯定会报地址端口已占用: Waiting for possible shutdown ...

  4. Go语言学习笔记(2)——变量、常量

    1. 变量(变量由字母.数字和下划线组成,且不能以数字开头!)      1.1 第一种 var name type // 未赋值时使用默认值 name = value 1.2 第二种: 根据所赋的值 ...

  5. WebAPI POST GET

    简而言之,在WEBAPI中采用GET方法方法时在接受参数的时候会在参数前申明 [fromuri]标注从uri中获取如: [HttpPost] public IHttpActionResult AddP ...

  6. 关于 PHP 开放 enable_dl 函数利用 图片Disable_functions

    三篇引文地址: 利用PHP扩展模块突破Disable_functions执行命令 如何编写PHP扩展 php dl函数(详细解释)

  7. MySQL数据库25条规范解读

    一.基础规范 (1)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省空间(由于移动设备原因最好使用utf8mb4) (2)禁止使用存储过程.视图.触发器.Event 解读:高并发大数据 ...

  8. Oracle 12c 操作 CDB PDB

    CREATE TRIGGER open_all_pdbs AFTER STARTUP ON DATABASE BEGIN EXECUTE IMMEDIATE 'alter pluggable data ...

  9. spring boot集成阿里云短信发送接收短信回复功能

    1.集成阿里云通信发送短信: 在pom.xml文件里添加依赖 <!--阿里短信服务--> <dependency> <groupId>com.aliyun</ ...

  10. spark集群构建

    一.spark启动有standalong.yarn.cluster,具体的他们之间的区别这里不在赘述,请参考官网.本文采用的是standalong模式进行搭建及将接使用. 1.首先去官网下载需要的sp ...