当前位置: 首页 > news >正文

元素的水平居中和垂直几种方案

总结一下各种元素的水平居中和垂直居中方案。

水平居中:

1.行内元素水平居中 text-align: center

定义行内内容(例如文字)如何相对它的块父元素对齐;不仅可以让文字水平居中,还可以让行内元素水平居中

注意:给行内元素的父元素设置

  • left:左对齐
  • right:右对齐
  • center:正中间显示
  •  justify:两端对齐

2.块级元素的水平居中  margin: 0 auto;

 设置当前块级元素(宽度): margin: 0 auto;

原理:一个块级元素默认独占一行,默认宽度是容器的宽度,margin-left,margin-right默认为0,若设置父元素的宽度为100px,本身的宽度是50px,则会自动设置该元素的margin-right为50px,即该元素的整体宽度仍然等于父元素的宽度。

当设置margin-left:auto,margin-right:auto,为了使该元素的宽度等于父容器的宽度,浏览器会使左右两侧的margin会平分剩余的宽度,所以会使该块级元素水平居中。

 3.绝对定位

    元素有宽度情况下, left0/right0/margin: 0 auto;

4.flex    justify-content: center

display:flex;
justify-content:center;

垂直居中:

  • 1.绝对定位

        * 元素有高度情况下, top0/bottom0/margin: auto 0;

<style>.container {position: relative;height: 300px;}.box1 {position: absolute;width: 100px;height: 100px;top: 0;bottom: 0;margin: auto 0;}
</style>
<div class="container"><div class="box1">我居中了</div>
</div>

 父元素height:300px,子元素height:100px,margin-top和margin-button会均分垂直方向剩余的距离。

 弊端:

     1>绝对定位会使元素脱离标准流,可能影响其他元素的布局

     2>必须给元素设置高度

  • 2. flex布局(直接使用flex)

<style>.container {display: flex;align-item:center;height: 300px;}.box1 {width: 100px;}
</style>
<div class="container"><div class="box1">我居中了</div>
</div>

    弊端:

      1> flex-container中的flex-item都会垂直居中

      2> 相对来说, 兼容性差一点点(基本可以忽略)

  • 3.相对定位+translate

  • 父元素设置高度,子元素可以不设置高度

  • 先向下移动父元素高度的一半

  • 在向上移动自身高度的一半

top:50%;transform: translate(0,-50%);

<style>.box1 {position: relative;top:50%;transform: translate(0,-50%);}
</style>
<div class="container"><div class="box1">我居中了</div>
</div>

思考:向下移动父元素高度的一半的时候为什么不适用margin-top:50% ?

margin的百分比是相对于包含块(父元素)的宽度。

4.文本垂直居中

line-height:两行文本base-line之间的距离,该距离正好等于一行的高度

当行高大于字体高度时,剩余的行距会上下均分,所以文字始终位于行高的中间,当设置行高等于容器的高度时,文字正好可以在容器中垂直居中。

注意:该方法只能用于文本,因为文本具有在行高中居中显示的特性

相关文章:

  • 新技术前沿-2023-应用GPT提问模板写技术文章
  • 什么是Web 3.0?
  • 无声的世界,精神科用药并结合临床的一些分析及笔记(十)
  • 虹科示波器 | 汽车免拆检修 | 2010款江铃陆风X8车发动机怠速抖动、加速无力
  • S32K324 UDS Bootloader开发-下位机篇-Bootload软件(1)
  • 【Spark】What is the difference between Input and Shuffle Read
  • 07 点积
  • Technology strategy Pattern 学习笔记1-Context: Architecture and Strategy
  • Flutter Set存储自定义对象时 如何保证唯一
  • 【学习笔记】CF1895G Two Characters, Two Colors
  • Mac 禁用一些高占用cup的进程
  • ✔ ★【备战实习(面经+项目+算法)】 11.5学习
  • AWS SAP-C02教程0--课程概述
  • 【唠唠嵌入式】__嵌入式只是一个技术领域,不是一个行业!
  • 基于Jenkins实现接口自动化持续集成,学完涨薪5k
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 2019年如何成为全栈工程师?
  • Angular 响应式表单之下拉框
  • centos安装java运行环境jdk+tomcat
  • golang 发送GET和POST示例
  • HashMap ConcurrentHashMap
  • Mysql优化
  • Python - 闭包Closure
  • spring cloud gateway 源码解析(4)跨域问题处理
  • SpringBoot 实战 (三) | 配置文件详解
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 转载:[译] 内容加速黑科技趣谈
  • Java性能优化之JVM GC(垃圾回收机制)
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​Spring Boot 分片上传文件
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #include
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (9)STL算法之逆转旋转
  • (Java数据结构)ArrayList
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)Dubbo快速入门、介绍、使用
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)德国人的记事本
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core控制台应用程序初识
  • .NET Standard 的管理策略
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .Net各种迷惑命名解释
  • .sys文件乱码_python vscode输出乱码
  • @Autowired 与@Resource的区别