flex垂直居中

第一种:使用flex布局,让居中元素的父元素为flex属性,让它在交叉轴上center就可以达到居中效果了:

 html代码:
<div class="father"><p>我要垂直居中</p>   </div>css代码:
.father {display:flex;align-items: center;background:grey;height:100vh;
}

flex水平垂直居中:

 html代码:
<div class="father"><p>我要垂直居中</p>   </div>css代码:
.father {display:flex;align-items: center;   //交叉轴justify-content:center;  //主线background:grey;height:100vh;
}

第二种:使用position + transform,实现垂直居中

.father {background:grey;height:100vh;position: relative;
}p{position: absolute;top:50%;   //50%并不是居中的,因为它是以元素的上border为标准移动50%的transform:translateY(-50%)  //所以我们需要像上移动元素自身高度一半儿的距离
}

使用position + transform,实现水平垂直居中

.father {background:grey;height:100vh;position: relative;
}p{position: absolute;left:50%;top:50%;transform:translate(-50%,-50%)
}

第三种:让文字垂直居中

p{background-color:red;height:30px;line-height:30px;
}

设置的高度和行高一样即可达到水平居中;

p{background-color:red;padding:30px 0;
}

不要设置高度(一定不要),使用内边距改变元素的宽度同时让文字达到居中效果

第4种:使用position + calc,实现垂直居中和水平垂直居中:

.father {background:grey;height:100vh;  position: relative;
}p{background-color:red;position: absolute;width:100px;height:50px;top:calc(50% - 25px)
}

和上面position + transform类似,只不过css3提供了calc这个属性可以直接计算距离

但是一定要给元素定上宽高,这样我们在计算时就比较好计算,下面是水平垂直居中:

.father {background:grey;height:100vh;  position: relative;
}p{background-color:red;position: absolute;width:100px;height:50px;top:calc(50% - 25px);left:calc(50% - 50px)
}

第5种:使用绝对定位 + margin来实现垂直居中:

.father {background:grey;height:100vh; position: relative;
}p{width:100px;height:100px;background-color:red;position: absolute;top:0;bottom:0;margin:auto;
}

一定要定宽高;这样这样我们在margin:auto时宽高才不会被因为脱离文档流而导致拉伸到和父元素一样大;

同样我们使用这样的方法达到垂直水平居中;

.father {background:grey;height:100vh; position: relative;
}p{width:100px;height:100px;background-color:red;position: absolute;top:0;bottom:0;left:0right:0;margin:auto;
}

绝对定位后同时让元素4面都为0;然后使用margin:auto;即可达到水平垂直剧中的效果;

第六种,display: table-cell 实现多行文字垂直居中

<div class="father"><div class="son">我是多行文字,我要垂直居中我是多行文字,我要垂直居中我是多行文字,我要垂直居中我是多行文字,我要垂直居中我是多行文字,我要垂直居中我是多行文字,我要垂直居中我是多行文字,我要垂直居中</div></div>//CSS代码
.father {display: table-cell;vertical-align: middle;height: 100vh;background: grey;}.son {width: 200px;
}

在我们CSS布局的过程中经常遇到多行文字需要居中的问题;这时我们就可以使用,单元格的形式,让文字居中,注意, vertical-align: middle;要写在设置了单元格的元素上才行;

第7种,使用vertical-align,实现垂直居中以及元素的对齐

vertical-align这个属性要求元素必须是inline或者inline-block元素才行;经常会遇到使用该属性没有效果,一般因为元素的性质发生了变化;例如元素为block,浮动,绝对定位等原因导致的。

  <div class="father"><div class="son">我是多行文字,我要垂直居中我是多行文字,我要垂直居中我是多行文字,我要垂直居中我是多行文字,</div><img src="https://cdn2.ettoday.net/images/4031/d4031158.jpg" width=200></div>.father {background: grey;
}.son {width: 200px;display: inline-block;border: red 1px solid;
}img {border: green 1px solid;
}

首先我们可以看到容器里有两个inline-block元素,但是可以看到文字并没有和图片顶部对齐,而且可以看到,图片的下方是有一块留白的;这是为啥呢? 因为所有的inline 和 inline-block元素都自带了vertical-align属性,默认是base-line对齐,而且是以文字流的 base-line对齐,因为文字的基线比图片低,所以图片为了强行对齐导致了下面的空白,这里解决办法有两种,第一个改变对齐方式,第二个,因为行高和vertical-align是一对好基友,行高设置为0也是可以解决该问题,前提是有自身高度,不然文字缩成一行

.father {background: grey;
}.son {width: 200px;display: inline-block;border: red 1px solid; vertical-align: middle;
}img {border: green 1px solid;vertical-align: middle;
}

这样可以让文字近似垂直居中,因为是近似,一般不建议直接middle, 使用vertical-align: top;加margin-top的形式会让我们不出现bug

.father {background: grey;
}.son {width: 200px;display: inline-block;border: red 1px solid; vertical-align: top;margin-top: 25px;
}img {border: green 1px solid;vertical-align: top;
}

当然还有很多办法可以达到居中效果,但都大同小异,这里就不一一列举了,这里最推荐的还是使用flex布局达到的居中效果,兼容性最好,如果能学会flex布局,基本上大部分布局问题都可以解决了。

h5文字垂直居中_CSS中垂直居中和水平垂直居中的方法相关推荐

  1. 文字居中、CSS中实现盒子水平垂直居中的方法

    1. 文字居中: 第一种方式: 当用text-align:center时,达到的是水平居中的效果,那再用vertical-align:middle:其实是实现不了垂直居中的,此时就需要用到displa ...

  2. html页面 消除横向滚动条,框架网页中去掉横向(水平)滚动条的方法

    有的时候,我们可能需要在网页页面中嵌入框架页面,嵌入之后可能会由于框架页面中的页面过宽而会出现横向(水平)滚动条的现象,这样非常不便于浏览者的习惯,我们往往习惯于垂直滚动条,所以在这里向大家介绍一种框 ...

  3. CSS中让元素水平垂直居中的6种写法

    水平垂直居中 水平居中 水平垂直居中--flex布局 margin + position:absolute布局 transform + absolute absolute + margin负值 abs ...

  4. div中的内容水平垂直居中

    1. div高度自适应的情况 div在不设置高度的时候,会被里面的内容撑开,内容自动填充在div中,无论是一行内容还是多行内容,此时不需要设置垂直居中,内容自动在中间的, 想要看的更直观些,只需要加上 ...

  5. 实现div中的div水平垂直居中

    方法一 利用transform实现div居中,要先设置定位 css .outer {width: 500px;height: 200px;background-color: green;positio ...

  6. bootstrap 页面垂直居中_前端布局之——水平垂直居中

    其他平台文章地址 github: 前端布局之--水平垂直居中 · Issue #3 · yaodebian/blog​github.com csdn: https://blog.csdn.net/Ya ...

  7. html语言div图片垂直居中,图文详解图片水平垂直居中的五种方法

    1.text-align:center实现图片水平居中 text-align一般用于文本的水平居中,也可以用于图片,代码如下: CSS部分: div{ text-align:center; width ...

  8. div水平垂直居中 div相对于父元素水平垂直居中 div相对于网页水平垂直居中

    div相对于父元素水平垂直居中(相对网页水平垂直居中在下面) 弹性布局 父元素作为容器设置宽高.弹性布局.水平轴和交叉轴居中 display:flex; justify-content:center; ...

  9. css水平垂直居中_css 如何实现水平居中、垂直居中(超全面)

    前言:元素一般分为 块级元素 和 行内元素 块级元素可以设置高度,宽度,行内元素则不能,如果非要给行内元素设置宽高,只需要将 display 属性设置为  inline-block 即可 一.水平对齐 ...

最新文章

  1. Spring Boot 全局异常处理
  2. POJ2299 Ultra-QuickSort
  3. Makefile文件和shell脚本
  4. JS去除字符串左右两端的空格
  5. CentOS 5.4下的Memcache安装步骤(Linux+Nginx+PHP+Memcached)
  6. Windows Socket 最大连接数
  7. boot jpa mysql postman spring_springboot使用spring-data-jpa操作MySQL数据库
  8. python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...
  9. [bzoj3930] [CQOI2015]选数
  10. Basic Calculator 基本计算器-Leetcode
  11. [转]把复杂事物简明化
  12. java连接mysql数据库方法_java连接mysql数据库的方法详解
  13. 【原创百篇纪念】2048蒙特卡洛法与强化学习测试+B站视频爬取与Cookie攻击测试
  14. 管理欲望:领导者的自我觉察与突破
  15. 关于transition过渡的详解
  16. Bayesian information criterion和 Akaike information criterion中的模型参数个数(自由度)计算 | 以高斯混合分布为例
  17. 蓝桥杯 回文日期(Java)
  18. 小米路由器AC2100写入OpenWrt
  19. 无人驾驶数据库汇总(不断更新)
  20. sql如何取前几行_sql 取前几行记录语句

热门文章

  1. java 返回两个集合_使用 java stream 获取两个集合之间的交集.差集
  2. Linux16.04和Windows 10双系统下,解决时间不一致问题
  3. Spring异步调用原理及SpringAop拦截器链原理
  4. [2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 论文简析及关键代码简析
  5. c语言比较大小 谁大选谁,C语言比较优先级
  6. 的优先级大小_如何评估需求的优先级?
  7. mysql增加实例,MySQL的简单使用笔记:增加实例以及启动
  8. MIP 组件库升级公告
  9. WebP 在减少图片体积和流量上的效果如何?MIP技术实践分享
  10. WPF Image Source 设置相对路径图片