元素的垂直水平居中在网页开发中极为常见,其实现方法也多种多样,接下来将介绍4种实现元素垂直水平居中的方法。实现效果如图:

<body><div class="father"><div class="son"></div></div>
</body>

一、 使用弹性盒模型flex实现

  1. 设置父元素的布局方式为flex, display: flex;
  2. 设置父元素在水平方向上的对齐方式为居中对齐,justify-content: center;
  3. 设置父元素在垂直方向上的对齐方式为居中对齐, 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

  1. 设置父元素相对定位, position: relative;
  2. 设置子元素绝对定位,position: absolute; top:50%; left:50%;
  3. 利用外边距将子元素向上和向左分别移动其自身宽度和高度的一半 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

  1. 设置父元素相对定位
  2. 设置子元素绝对定位
  3. 设置子元素的left、top、right、bottom均为0
  4. 设置子元素的外边距为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种方法相关推荐

  1. html flex上下居中,css3 flex实现div内容水平垂直居中的几种方法

    一.flex-direction: (元素排列方向) ※ flex-direction:row (横向从左到右排列==左对齐) ※ flex-direction:row-reverse (与row 相 ...

  2. CSS图片水平垂直居中的三种方法

    CSS图片水平垂直居中的三种方法 设置行高 使用定位和translate 使用弹性盒子 设置行高 我们知道img元素为行内快元素,所以首先设置图片元素的父元素里文字水平居中,行高与整体高度一致. 其次 ...

  3. div水平垂直居中的七种方法

    学习笔记(一) div水平垂直居中的七种方法 文章目录 学习笔记(一) 前言 一.绝对定位法 1.方法一 2.方法二 3.方法三 4.方法四 二.flex布局法 1.方法五 三.将小div转成行内块 ...

  4. CSS水平垂直居中的几种方法

    我们都知道,固定宽高的 div 在网页中水平垂直居中很简单,相信大家也很容易的写出来,但是不固定宽高的 div 如何水平垂直居中呢?我们在网页布局,特别是手机等 web 端网页经常是不固定宽高的 di ...

  5. 元素水平垂直居中的几种常用方法

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>元素水 ...

  6. CSS常用水平垂直居中的几种方法

    CSS水平垂直居中 一.利用margin:auto 二.利用position: absolute 三.弹性盒子 四.利用水平对齐和行高 五.grid 为方便理解,欢迎查看线上效果,在线试一试 一.利用 ...

  7. 前端:水平垂直居中的10种方法

    第一种: 通过绝对定位的方式 absolute + 负margin ​ 首先知道子元素的宽高,给子元素设置top:50%:left:50%, 但绝对定位是基于子元素的左上角,我们所希望的效果是子元素的 ...

  8. CSS实现水平垂直居中的五种方法

    前言 今天来看看一个之前困扰我很久的问题,在CSS中,水平垂直居中,能有几种写法. 方法一:margin:auto 子绝父相,当元素绝对定位的时候,会根据最近父元素进行定位,利用这个特性,我们有了这种 ...

  9. CSS中让元素水平垂直居中的6种写法

    水平垂直居中 水平居中 水平垂直居中--flex布局 margin + position:absolute布局 transform + absolute absolute + margin负值 abs ...

  10. 图片水平垂直居中的几种方法总结

    1.固定图片大小水平垂直居中,图片300*200 如下: html代码 <div class="con"><img src="images/fengch ...

最新文章

  1. ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines 2.1~2.4》解读
  2. 多个项目共享一个app.config 的解决办法 (转)
  3. Top 10 Things I Know for Sure-深信不疑的十大哲理
  4. jQuery验证用户名是否可用
  5. String Modification CodeForces - 1316B(规律)
  6. Cheatsheet: 2010 04.26 ~ 04.30
  7. Python学习练习:批量移动文件
  8. java se 1335,1335.逼退法王
  9. Microsoft SignalR Map Controller具有页面可见性API和事件模糊功能,可映射文档管理系统(DMS)中的用户交互
  10. 3个最典型的图表错误使用方式,赶紧看看自己是否中招
  11. php微信支付回调验证
  12. python-学生管理系统--4修改学生信息
  13. 第四季-专题2-U-Boot新手入门
  14. mac vscode 背景半透明_武装Mac|常用MacBook软件分类汇总
  15. oracle数据库的增删改查
  16. Win:从 Microsoft官方网站下载官方正版ISO镜像文件(以Windows10为例,图文教程)
  17. 【BZOJ 1050】旅行comf
  18. Build Setting 之 Code Signing 详解
  19. 网易云计算机专业课程,网易云课堂推出在线中国大学MOOC课程
  20. 支付宝即时到账之给二维码设置超时失效时间

热门文章

  1. 理解风险偏好risk appetite vs. 风险容忍度risk tolerance
  2. 电脑运行速度(卡不卡)的决定因素
  3. html+css实现静态小米商城界面的学习感受与收获
  4. lic库的学习与使用流程(一般的库的使用流程)编译运行含有外包库程序的操作export和-L -I
  5. 技术领导力 程序员如何才能带团队 文摘 (三)
  6. Android通过wifi输出声音,SoundWire – 将手机变成电脑的音箱,通过 WiFi播放电脑内的声音...
  7. 互联网时代没有囊括进来的流量,在产业互联网时代全部都被囊括进来
  8. 小程序下拉刷新没有响应
  9. codeforce Zebras(思维 + 模拟)
  10. Linux 怎么防止 ssh 被暴力破解