元素水平垂直居中的方式

元素分为行内元素和块级元素,行内元素有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 3D位移translate效果实例介绍
May 03 HTML / CSS
纯CSS3实现3D旋转书本效果
Mar 21 HTML / CSS
css3中新增的样式使用示例附效果图
Aug 19 HTML / CSS
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
Aug 19 HTML / CSS
一款纯css3实现的漂亮的404页面的实例教程
Nov 27 HTML / CSS
HTML+CSS3+JS 实现的下拉菜单
Nov 25 HTML / CSS
HTML5 Canvas渐进填充与透明实现图像的Mask效果
Jul 11 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
Sep 21 HTML / CSS
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
Aug 24 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
Mar 09 HTML / CSS
CSS3实现的文字弹出特效
Apr 16 HTML / CSS
浅谈由position属性引申的css进阶讨论
May 25 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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
Yii框架登录流程分析
2014/12/03 PHP
JQuery的一些小应用收集
2010/03/27 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python常见字典内建函数用法示例
2018/05/14 Python
python读取和保存图片5种方法对比
2018/09/12 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
python——全排列数的生成方式
2020/02/26 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
应用心理学个人的求职信
2013/12/08 职场文书
求职简历的自我评价
2014/01/31 职场文书
乡下人家教学反思
2014/02/01 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
公司借条范本
2015/05/25 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
Python中的tkinter库简单案例详解
2022/01/22 Python
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python