css实现元素水平垂直居中——6种方式
实现元素水平垂直居中的方式:
- 利用定位+margin:auto
- 利用定位+margin:负值
- 利用定位+transform
- table布局
- flex布局
- grid布局
- 利用定位+margin:auto:父级设置为相对定位,子级绝对定位 ,并且四个定位属性的值都设置了0,那么这时候如果子级没有设置宽高,则会被拉开到和父级一样宽高。这里子元素设置了宽高,所以宽高会按照我们的设置来显示,但是实际上子级的虚拟占位已经撑满了整个父级,这时候再给它一个margin:auto它就可以上下左右都居中了
<style>.father{width:500px;height:300px;border:1px solid #0a3b98;position: relative; // 父级相对定位}.son{width:100px;height:40px;background: #f0a238;position: absolute; // 子级绝对定位top:0; // 以下四个定位属性设为0left:0;right:0;bottom:0;margin:auto; // 外边距自动}
</style><div class="father"><div class="son"></div>
</div>
- 利用定位+margin:负值:绝大多数情况下,设置父元素为相对定位, 子元素移动自身50%实现水平垂直居中
<style>.father {position: relative;width: 200px;height: 200px;background: skyblue;}.son {position: absolute;top: 50%;left: 50%;margin-left:-50px;margin-top:-50px;width: 100px;height: 100px;background: red;}
</style>
<div class="father"><div class="son"></div>
</div>
整个实现思路如下图所示:
- 初始位置为方块1的位置
- 当设置left、top为50%的时候,内部子元素为方块2的位置
- 设置margin为负数时,使内部子元素到方块3的位置,即中间位置
这种方案不要求父元素的高度,也就是即使父元素的高度变化了,仍然可以保持在父元素的垂直居中位置,水平方向上是一样的操作
但是该方案需要知道子元素自身的宽高,但是我们可以通过下面transform
属性进行移动
- 利用定位+transform
实现代码如下:
<style>.father {position: relative;width: 200px;height: 200px;background: skyblue;}.son {position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);width: 100px;height: 100px;background: red;}
</style>
<div class="father"><div class="son"></div>
</div>
translate(-50%, -50%)
将会将元素位移自己宽度和高度的-50%
这种方法其实和最上面被否定掉的margin负值用法一样,可以说是margin
负值的替代方案,并不需要知道自身元素的宽高
- table布局
设置父元素为display:table-cell
,子元素设置 display: inline-block
。利用vertical
和text-align
可以让所有的行内块级元素水平垂直居中
<style>.father {display: table-cell;width: 200px;height: 200px;background: skyblue;vertical-align: middle; //垂直对齐方式text-align: center; //文本/水平对齐方式}.son {display: inline-block;width: 100px;height: 100px;background: red;}
</style>
<div class="father"><div class="son"></div>
</div>
- flex布局
<style>.father {display: flex;justify-content: center;align-items: center;width: 200px;height: 200px;background: skyblue;}.son {width: 100px;height: 100px;background: red;}
</style><div class="father"><div class="son"></div>
</div>
css3中的flex布局,可以非常简单实现垂直水平居中
这里可以简单看看flex布局的关键属性作用:
- display: flex时,表示该容器内部的元素将按照flex进行布局
- align-items: center表示这些元素将相对于本容器水平居中
- justify-content: center也是同样的道理垂直居中
- grid布局(CSS新出的网格布局,代码量少,但兼容性不太好)
<style>.father {display: grid;align-items:center;justify-content: center;width: 200px;height: 200px;background: skyblue;}.son {width: 10px;height: 10px;border: 1px solid red}
</style>
<div class="father"><div class="son"></div>
</div>
这里看到,gird
网格布局和flex
弹性布局都简单粗暴
css实现元素水平垂直居中——6种方式相关推荐
- CSS块元素水平垂直居中的实现技巧
针对之前遇到过的一些特殊样式的实现,我今天做个总结,目的有二:一是将这些方法记录下来,以便将来需要用到时查找使用.二为将这些大神们智慧的结晶发扬光大,让广大前端程序猿们能够少走弯路.此贴为更新帖,以后 ...
- CSS实现元素水平垂直居中的各种方法
关于 CSS 如何将元素进行水平垂直居中的几种常用方法 前言 在设计网页页面的过程中,总会有将元素或者文字进行水平或者垂直居中的要求,各种CSS样式调整,搞的头都大了.这里将会介绍 CSS 中几种常用 ...
- 元素水平垂直居中的六种方式
文章目录 前言 代码预设 一.绝对定位 + transform 二.绝对定位 + margin 1.不用子盒子的宽高 2.需要子盒子的宽高 三.table-cell 属性 四.flex 布局 五.ca ...
- css实现元素水平垂直居中 1
css的居中,可以分为水平居中和垂直居中,实现居中的方式有以下几种: 1.text-align:center 块状元素,水平居中(只适用于块级元素,块级元素内的行内元素可以居中或者将此行内元素设置为块 ...
- css实现元素水平垂直居中
记录两个思路,当然还有其他方法,如果用到再补充: <div class="parent" style="background:red;width:200px;hei ...
- 利用css实现元素水平垂直居中的方法(分情况讨论)
首先需要说明,根据标准盒模型(这里暂且不关注低版本IE的盒模型),我们在css中设置的width指的是content-width,padding,margin,top,left这些属性为百分数时,计算 ...
- js、css分别实现元素水平垂直居中
js实现元素水平垂直居中.css实现元素水平垂直居中 css实现元素水平垂直居中[4行代码] js实现元素水平垂直居中[弄巧成拙] css实现元素水平垂直居中[4行代码] #div{top:50%;l ...
- 元素水平垂直居中的几种常用方法
<!DOCTYPE html> <html><head><meta charset="UTF-8"><title>元素水 ...
- css水平垂直居中四种常用方式
css水平垂直居中 第一种:flex布局水平垂直居中 思路: 给父盒子display属性设置flex值,然后使用justify-content与align-item属性进行居中. 参考:阮一峰的fle ...
最新文章
- 教程-Win7极速优化20项
- C语言基本数据结构之五(折半插入,堆排序,冒泡排序,快速排序,并归排序)
- day33-1 线程队列
- java安卓开发——1.新项目搭建
- 【正点原子Linux连载】第六十九章 Linux 网络驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
- idc机房运维巡检_24小时保姆式机房巡检设备设计-机房巡检机器人设计
- Unity粒子特效工具需求文档
- 企业级代码静态测试工具Helix QAC——支持编码规范
- 串口485接法图_RS-485 2线和4线的接法
- 终极玩转Power BI中Drill-down Choropleth 地图
- 计算机辅助故障树分析法,故障树分析法.doc
- 购物计算小程序,遍历所有情况。
- 成功之路散文连载之名师出高徒
- Python编程——实现屏幕广告语的滚动
- elasticsearch+logstash+kibana+filebeat+kafka
- 新增轮播图跳转web页面、轮播、推荐歌单数据存储( 简易音乐 七)
- linux硬件信息在哪个目录下,Linux 查看系统硬件信息
- 赵小楼《天道》《遥远的救世主》深度解析(41)芮小丹的恋爱观背后的文化属性
- 至联云讲解《IPFS凭什么能让全世界投资者疯狂》
- Unity游戏开发客户端面经——数学(初级)
热门文章
- 分析称勒索攻击在非洲、中东与中国增长最快
- 港科夜闻|香港科大与中国联通成立联合实验室,推动智慧社会研究发展
- 系统分析与设计 Homework3
- 《游戏设计艺术(第二版)》第十一章个人学习
- C++ 简易弹球游戏(分块解释、源码、注释)
- Nvidia显卡主机安装Ubuntu系统踩坑小结(Z1-Entry-Tower-G6主机安装Ubuntu-18.04)
- 如何在Ubuntu16.04下配置移远RM500工业模组(5G工业模组)
- 神经网络损失函数分布可视化神器
- ASP.NET MVC在线考试系统
- OSChina 周一乱弹 ——假期过了 2/3了,好想再回到过去