实现元素水平垂直居中的4种方法
引
元素的垂直水平居中在网页开发中极为常见,其实现方法也多种多样,接下来将介绍4种实现元素垂直水平居中的方法。实现效果如图:
<body><div class="father"><div class="son"></div></div>
</body>
一、 使用弹性盒模型flex实现
- 设置父元素的布局方式为flex, display: flex;
- 设置父元素在水平方向上的对齐方式为居中对齐,justify-content: center;
- 设置父元素在垂直方向上的对齐方式为居中对齐, align-items: center;
<style>//标签默认会有内外边距,为了防止影响效果,一般先清除所有元素的默认边距* {padding: 0;margin: 0;box-sizing: border-box;}.father {display: flex;width: 400px;height: 400px;justify-content: center;align-items: center;background-color: skyblue;margin: 200px auto;}.son {width: 200px;height: 200px;background-color: wheat;}</style>
二、 使用定位position
- 设置父元素相对定位, position: relative;
- 设置子元素绝对定位,position: absolute; top:50%; left:50%;
- 利用外边距将子元素向上和向左分别移动其自身宽度和高度的一半 margin-left: -100px; margin-top: -100px;
<style>* {padding: 0;margin: 0;box-sizing: border-box;}.father {position: relative;width: 400px;height: 400px;background-color: skyblue;margin: 100px auto;}.son {position: absolute;top: 50%;left: 50%;width: 200px;height: 200px;margin-left: -100px;margin-top: -100px;background-color: wheat;} </style>
三、 使用position+transform
使用第二种方法会发现存在一个问题,就是必须在知道子元素的宽和高的情况下,才能计算出其margin-left和margin-top的值,且当子元素的宽和高发生改变时,margin-left和margin-top的值也需要重新计算,这种方法显然不太理想。接下来将使用position结合CSS3提供的transform属性中的translate进行完善。
<style>* {padding: 0;margin: 0;box-sizing: border-box;}.father {position: relative;width: 400px;height: 400px;background-color: skyblue;margin: 100px auto;}.son {position: absolute;top: 50%;left: 50%;width: 200px;height: 200px;transform: translate(-50%,-50%);background-color: wheat;} </style>
其中 **transform: translate(-50%,-50%)**表示子元素向左、向上分别移动其自身宽度和高度的一半。这样无论元素自身宽高变成多少,都能保持移动的距离为其宽高的一半。
四、 使用position + margin:auto
- 设置父元素相对定位
- 设置子元素绝对定位
- 设置子元素的left、top、right、bottom均为0
- 设置子元素的外边距为auto margin: auto;
<style>* {padding: 0;margin: 0;box-sizing: border-box;}.father {position: relative;width: 400px;height: 400px;background-color: skyblue;margin: 100px auto;}.son {position: absolute;top: 0;left: 0;right: 0;bottom: 0;width: 200px;height: 200px;background-color: wheat;margin: auto;} </style>
五、总结
使用以上4中方式实现元素垂直水平居中时,使用flex方式主要是给其父元素设置样式。其他三种的重点则在于给元素本身设置样式。
实现元素水平垂直居中的4种方法相关推荐
- html flex上下居中,css3 flex实现div内容水平垂直居中的几种方法
一.flex-direction: (元素排列方向) ※ flex-direction:row (横向从左到右排列==左对齐) ※ flex-direction:row-reverse (与row 相 ...
- CSS图片水平垂直居中的三种方法
CSS图片水平垂直居中的三种方法 设置行高 使用定位和translate 使用弹性盒子 设置行高 我们知道img元素为行内快元素,所以首先设置图片元素的父元素里文字水平居中,行高与整体高度一致. 其次 ...
- div水平垂直居中的七种方法
学习笔记(一) div水平垂直居中的七种方法 文章目录 学习笔记(一) 前言 一.绝对定位法 1.方法一 2.方法二 3.方法三 4.方法四 二.flex布局法 1.方法五 三.将小div转成行内块 ...
- CSS水平垂直居中的几种方法
我们都知道,固定宽高的 div 在网页中水平垂直居中很简单,相信大家也很容易的写出来,但是不固定宽高的 div 如何水平垂直居中呢?我们在网页布局,特别是手机等 web 端网页经常是不固定宽高的 di ...
- 元素水平垂直居中的几种常用方法
<!DOCTYPE html> <html><head><meta charset="UTF-8"><title>元素水 ...
- CSS常用水平垂直居中的几种方法
CSS水平垂直居中 一.利用margin:auto 二.利用position: absolute 三.弹性盒子 四.利用水平对齐和行高 五.grid 为方便理解,欢迎查看线上效果,在线试一试 一.利用 ...
- 前端:水平垂直居中的10种方法
第一种: 通过绝对定位的方式 absolute + 负margin 首先知道子元素的宽高,给子元素设置top:50%:left:50%, 但绝对定位是基于子元素的左上角,我们所希望的效果是子元素的 ...
- CSS实现水平垂直居中的五种方法
前言 今天来看看一个之前困扰我很久的问题,在CSS中,水平垂直居中,能有几种写法. 方法一:margin:auto 子绝父相,当元素绝对定位的时候,会根据最近父元素进行定位,利用这个特性,我们有了这种 ...
- CSS中让元素水平垂直居中的6种写法
水平垂直居中 水平居中 水平垂直居中--flex布局 margin + position:absolute布局 transform + absolute absolute + margin负值 abs ...
- 图片水平垂直居中的几种方法总结
1.固定图片大小水平垂直居中,图片300*200 如下: html代码 <div class="con"><img src="images/fengch ...
最新文章
- ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines 2.1~2.4》解读
- 多个项目共享一个app.config 的解决办法 (转)
- Top 10 Things I Know for Sure-深信不疑的十大哲理
- jQuery验证用户名是否可用
- String Modification CodeForces - 1316B(规律)
- Cheatsheet: 2010 04.26 ~ 04.30
- Python学习练习:批量移动文件
- java se 1335,1335.逼退法王
- Microsoft SignalR Map Controller具有页面可见性API和事件模糊功能,可映射文档管理系统(DMS)中的用户交互
- 3个最典型的图表错误使用方式,赶紧看看自己是否中招
- php微信支付回调验证
- python-学生管理系统--4修改学生信息
- 第四季-专题2-U-Boot新手入门
- mac vscode 背景半透明_武装Mac|常用MacBook软件分类汇总
- oracle数据库的增删改查
- Win:从 Microsoft官方网站下载官方正版ISO镜像文件(以Windows10为例,图文教程)
- 【BZOJ 1050】旅行comf
- Build Setting 之 Code Signing 详解
- 网易云计算机专业课程,网易云课堂推出在线中国大学MOOC课程
- 支付宝即时到账之给二维码设置超时失效时间
热门文章
- 理解风险偏好risk appetite vs. 风险容忍度risk tolerance
- 电脑运行速度(卡不卡)的决定因素
- html+css实现静态小米商城界面的学习感受与收获
- lic库的学习与使用流程(一般的库的使用流程)编译运行含有外包库程序的操作export和-L -I
- 技术领导力 程序员如何才能带团队 文摘 (三)
- Android通过wifi输出声音,SoundWire – 将手机变成电脑的音箱,通过 WiFi播放电脑内的声音...
- 互联网时代没有囊括进来的流量,在产业互联网时代全部都被囊括进来
- 小程序下拉刷新没有响应
- codeforce Zebras(思维 + 模拟)
- Linux 怎么防止 ssh 被暴力破解