css 水平垂直居中实现方式

css中有好多实现居中的方式,在项目中经常不知道使用哪种方式会比较好,所以记录下来。

水平垂直居中包括行内元素居中,以及块级元素居中

行内元素html结构

 <div class="outer"><span class="inner"></span></div>

块级元素结构

 <div class="outer"><div class="inner"></div></div>

基础样式

<style>
.outer {width: 400px;height: 400px;border: 1px solid red;
}
.outer .inner {width: 50px;height: 50px;border: 1px solid blue;
}
</style>

水平居中

1-行内元素(最简单 text-align: center)

.outer {text-align: center;
}

1-块级元素(margin: auto)

当使用这种方式时,内部元素必须定义宽度,不然margin属性会无效

.outer .inner {margin: auto;
}

2-块级元素(margin: auto + display: table)

前面这种方式需要为内部元素定义宽度,如果不想定义宽度,可以设置内部元素的display 为 table,它的宽度会由内部元素来撑开。

.outer .inner {margin: auto;display: table;
}

3-块级元素(display: inline)

为内部元素设置display 为inline,将它转换为行内元素,再对父元素使用text-align: center 可以实现水平居中,缺点就是内部元素无法设置宽度。

.outer {text-align: center;
}
.outer .inner {display: inline;
}

4-块级元素(display: inline-block)

方案三无法为内部元素设置宽度,但是采用inline-block,则可以为内部元素设置宽度。

.outer {text-align: center;
}
.outer .inner {display: inline-block;
}

5-块级元素(float: left + transform)

这种方式不需要知道内部元素宽度。

.outer .inner {position: relative;left: 50%;transform: translateX(-50%);
}

6-块级元素(负边距+绝对定位)

.outer {position: relative;
}
.outer .inner {position: absolute;left: 50%;margin-left: -25px;
}

7-块级元素(flexbox)

用的最多的方式,但低版本浏览器会有兼容问题
.outer {display: flex;justify-content: center;  // 主轴上居中
}

垂直居中

1-行内元素(line-height)

外部元素设置line-height

.outer {line-height: 400px;
}

1-块级元素(absolute + top + margin-top)

使用绝对定位将内部元素的顶部定位在中间,再通过margin-top 负值拉回高度,需要提前知道内部元素的高度

.outer {position: relative;
}
.outer .inner {position: absolute;top: 50%;margin-top: -25px;
}

2-块级元素(absolute + margin:auto)

这种方式不需要知道内部元素的高度,兼容性也很好

.outer {position: relative;
}
.outer .inner {position: absolute;top: 0;bottom: 0;left: 0;right: 0;margin: auto;
}

3-块级元素(relative + transform)

前面水平居中的时候也出现过这种方式,也可以使用position: absolute方式,但要对应地将外部元素设置成position: relative

.outer .inner {position: relative;top: 50%;transform: translateY(-50%);
}

4-块级元素(vertical-align + table-cell)

.outer {display: table-cell;vertical-align: middle;
}

5-块级元素(vertical-align + inline-block)

原理是新建一个inner的兄弟元素,高度撑开整个容器,再对inner使用vertical-align: middle 使元素居中,不需要知道内部元素的高度

html结构

 <div class="outer"><div class="inner"></div><div class="sibling"></div></div>
.outer .inner {vertical-align: middle;display: inline-block;
}
.outer .slibing {height: 400px;display: inline-block;vertical-align: middle;
}

5-块级元素(伪元素)

原理和上面的方式一样,只是通过伪元素去撑开高度

.inner {display: inline-block;vertical-align: middle;
}
.outer::before {content: '';height: 100%;display: inline-block;vertical-align: middle;
}

6-块级元素(flexbox)

.outer {display: flex;align=items: center;
}

欢迎继续补充~

如果喜欢请关注我的Blog,给个Star吧,会定期分享一些JS中的知识,^_^

css 水平垂直居中实现方式相关推荐

  1. css水平垂直居中对齐方式

    css水平垂直居中总共有四种方法 ① 使用绝对定位 注意:使用绝对定位居中需要固定宽高 position:absolute; top:0; left:0; bottom:0; right:0; wid ...

  2. CSS 水平垂直居中的方式

    目录 在不知道子元素宽高的情况下,水平垂直居中的六种方式: 1.弹性盒子布局方式来实现(flex). 2.绝对定位 + transform 3.table标签 4.display:table-cell ...

  3. CSS水平垂直居中: flex方式

    .title{/*flex 布局*/display: flex;/*实现垂直居中*/align-items: center;/*实现水平居中*/justify-content: center;text ...

  4. css居中怎么移动,移动端css水平垂直居中

    水平垂直居中 1.margin 负值调整偏移实现 兼容性: 当前流行的使用方法. .box{ width: 100%; height: 100%; } .content{ position: abso ...

  5. html 水平垂直居中,css水平垂直居中有几种实现方式?

    项目中经常碰到需要实现水平垂直居中的样式.下面就总结几种常用的方法 css水平垂直居中有几种实现方式? 1.水平对齐+行高 [思路一]text-align + line-height实现单行文本水平垂 ...

  6. css 垂直居中_CSS 水平+垂直居中的方式

    关于CSS 水平+垂直居中的问题,开发代码的过程中,会经常遇到. 那么,在这里,我会介绍几种方式,来实现CSS的水平+垂直居中. 首先,我们先将body,html的高度和宽度设置为100%,其次清除默 ...

  7. CSS实现水平垂直居中的方式有哪些?

    目录 CSS实现水平垂直居中的方式有哪些? 1.利用flex布局 2.利用flex+margin 3.利用定位,子绝父相 3.1.利用margin: auto(偏移量都为0) 3.2.利用平移tran ...

  8. CSS水平垂直居中的五种方式

    CSS水平垂直居中的几种方式 absolute and -margin 需要设置盒子的宽度和高度 .father{border:1px solid red;width: 80vh;height: 90 ...

  9. css水平垂直居中四种常用方式

    css水平垂直居中 第一种:flex布局水平垂直居中 思路: 给父盒子display属性设置flex值,然后使用justify-content与align-item属性进行居中. 参考:阮一峰的fle ...

最新文章

  1. c/c++头文件函数一览表
  2. “你的板子短路了,正在冒烟!”
  3. lambda表达式语法_使用类似Lambda的语法作为Java中的表达式进行切换
  4. mysql 学习笔记03 常用数据类型
  5. 实时计算的最佳实践:基于表格存储和Blink的大数据实时计算
  6. java中json转map
  7. gdi win7奔溃_win7 64位操作系统,新安装的软件一打开就崩溃,故障模块“StackHash_0a9e”,有大神知道是什么问题吗...
  8. springbootspringboot杏林中医诊所管理系统133742
  9. YouTube视频推荐系统
  10. 华为 RS RSTP原理与配置复习笔记
  11. Postman发送请求失败报错“Error: getaddrinfo ENOTFOUND xxx.xxx.xxx.xxx“
  12. 揭秘“菲住布渴”中运用的黑科技:除了check in、坐电梯、开门...全部刷脸之外,还有什么?
  13. python背景怎么自定义铃声_iPhone —— 如何自制铃声(图文)
  14. 电子不停车收费系统(ETC)专题(1)——系统概述
  15. 【Linux】wget命令的使用
  16. 使用anaconda配置python3.6环境安装pyltp超详细教程,使用pycharm调用
  17. 如何挑选视频会议摄像头?
  18. 西安的IT要怎么才能发展?
  19. Win10 连接不上局域网共享文件解决方案
  20. TOJ3216 我要4444

热门文章

  1. [unreal4入门系列之十二] 在UE4中创建非玩家角色(NPC)
  2. 计算科学如何帮助中国制造业成为全球领导者?李开复余承东胡郁等14位产学研大佬这样说|2021 CCF CTO高峰论坛...
  3. AI大牛周明打造的轻量“孟子模型”开源!靠10亿参数冲上CLUE榜第三,可用于新闻分类、文案生成...
  4. 可以装在手机里的3D姿态估计,模型尺寸仅同类1/7,平均关节位置误差却只有5厘米 | CPVR 2021...
  5. 99.99%准确率!AI数据训练工具No.1来自中国
  6. UC伯克利最新深度强化学习课程上线,视频已上传到B站
  7. 免费机器学习课程爆红:从概率与统计到全栈深度学习,英伟达工程师小姐姐整理...
  8. springboot静态资源访问
  9. Css实现checkbox及radio样式自定义
  10. cacti中监控squid的方法