元素水平垂直居中的方式

元素分为行内元素和块级元素,行内元素有1种方式设置元素垂直居中;块级元素有4种方式设置元素垂直居中。

Posted in HTML / CSS onMarch 31, 2021

行内元素

  1. 通过为父元素设置text-align、line-height属性实现元素垂直居中
.box{
	width:500px;
	height:100px;
	border:1px solid #333;
	line-height:100px;
	text-align:center;
}
<div class="box">
	<span>content</span>
</div>

块级元素

  1. 通过设置子元素的绝对定位和margin属性实现元素垂直居中(减去自身宽度高度的一半)
.box{
    width: 500px;
    height: 500px;
    border: 1px solid #333;
    position: relative;
}
.box div{
    width: 100px;
    height: 100px;
    border: 1px solid #333;
    position: absolute;
    left: 50%;
    top: 50%;
    margin-left: -50px;
    margin-top: -50px;
}
<div class="box">
	<div></div>
</div>
  1. 通过设置父元素flex弹性布局的方式实现元素垂直居中(项目在主轴上的对齐方式为居中,项目在交叉轴上对齐方式为居中)
.box{
    width: 500px;
    height: 500px;
    border: 1px solid #333;
    display: flex;
    justify-content: center;
    align-items: center;
}
.box div{
     width: 100px;
     height: 100px;
     border: 1px solid #333;
}
<div class="box">
        <div></div>
</div>
  1. 通过设置子元素的绝对定位和transform属性实现元素垂直居中(往x轴、y轴分别移动自身宽度和高度的50%)
.box{
    width: 500px;
    height: 500px;
    border: 1px solid #333;
    position: relative;
}
.box div{
    width: 100px;
    height: 100px;
    border: 1px solid #333;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
}
<div class="box">
	<div></div>
</div>
  1. 通过设置子元素的绝对定位和margin属性实现元素垂直居中(不存在兼容性问题,自适应宽高)
    原理
    设置margin:auto分配左右的剩余空间,所以元素可以水平居中;设置绝对定位,此时margin-top、margin-bottom从默认为0变成auto,设置top、right、bottom、left为0将找到父元素的位置(给浏览器重新分配一个边界框),填充其父元素的所有可用空间,margin垂直方向有了可分配的空间,所以此时元素可以垂直居中。
.box{
    width: 500px;
    height: 500px;
    border: 1px solid #333;
    position: relative;
}
.box div{
     width: 100px;
     height: 100px;
     border: 1px solid #333;
     position: absolute;
     top: 0;
     right: 0;
     bottom: 0;
     left: 0;
     margin: auto;
}
<div class="box">
	<div></div>
</div>
HTML / CSS 相关文章推荐
css3隔行变换色实现示例
Feb 19 HTML / CSS
CSS3实现鼠标悬停显示扩展内容
Aug 24 HTML / CSS
浅谈pc和移动端的响应式的使用
Jan 03 HTML / CSS
网易微博Web App用HTML5开发的过程介绍
Jun 13 HTML / CSS
html5使用canvas绘制一张图片
Dec 15 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
Apr 26 HTML / CSS
HTML5本地存储之IndexedDB
Jun 16 HTML / CSS
使用canvas来完成线性渐变和径向渐变的功能的方法示例
Jul 25 HTML / CSS
AmazeUI 输入框组的示例代码
Aug 14 HTML / CSS
Canvas获取视频第一帧缩略图的实现
Nov 11 HTML / CSS
如何利用 CSS Overview 面板重构优化你的网站
Oct 24 HTML / CSS
el-form每行显示两列底部按钮居中效果的实现
Aug 05 HTML / CSS
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
简单实现一个手持弹幕功能+文字抖动特效
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
Mar 31 #HTML / CSS
Web前端:CSS最强总结 附详细代码
血轮眼轮回眼特效 html+css
css3 filter属性的使用简介
Mar 31 #HTML / CSS
使用canvas实现雪花飘动效果的示例代码
You might like
咖啡的种类和口感
2021/03/03 新手入门
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
详解json在php中的应用
2018/09/30 PHP
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
浅谈Vue.js
2017/03/02 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
详解Python中DOM方法的动态性
2015/04/11 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
python3使用GUI统计代码量
2019/09/18 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
Python 远程开关机的方法
2020/11/18 Python
python实现经典排序算法的示例代码
2021/02/07 Python
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
日语专业推荐信
2013/11/12 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
大学毕业通用个人的求职信
2013/12/08 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
房产公证书格式
2015/01/26 职场文书
法人代表证明书范本
2015/06/18 职场文书
中学总务处工作总结
2015/08/12 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
MySQL 分页查询的优化技巧
2021/05/12 MySQL