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

CSS实现居中的8中方法

让child元素在parent容器中水平和垂直都居中

方法一:Flex弹性布局

现代浏览器支持度很高,即使子元素高度不确定也能完美实现居中

 	<main><div class="parent"><div class="child">我是居中的babycare</div></div></main><style>.parent {display: flex;justify-content: center;align-items: center;height: 200px;border: 1px solid #ccc;}.child {background: red;}</style>

在这里插入图片描述

方法二:Grid网格布局

写法简洁,一行代码就能实现,Grid在旧版浏览器中的支持度略低于Flexbox

	<main><div class="parent"><div class="child">我是居中的babycare</div><div class="child">我是居中的babycare</div></div></main><style>.parent {display: grid;place-items: center;height: 200px;border: 1px solid #ccc;}.child {background: red;}.child:nth-child(2) {background-color: pink;}</style>

在这里插入图片描述

方法三:绝对定位+位移变换

这个地方兼容性很好,支持到IE9以上,最大的优点是不需要知道子元素的宽高

	<main><div class="parent"><div class="child">我是居中的babycare</div></div></main><style>.parent {position: relative;height: 200px;border: 1px solid #ccc;}.child {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);background: red;}</style>

方法四:绝对定位+自动边距(固定宽高适用)

利用margin:auto在绝对定位下的特点,需要明确的设置子元素的宽度和高度,浏览器自动计算实现居中

 	<main><div class="parent"><div class="child">我是居中的babycare</div></div></main><style>.parent {position: relative;height: 200px;border: 1px solid #ccc;}.child {position: absolute;top: 0;left: 0;right: 0;bottom: 0;margin: auto;height: 100px;width: 200px;background: red;}</style>

在这里插入图片描述

方法五:表格单元格方式(传统但有效)

模拟了表格单元格的行为,verticle-align:middle实现垂直居中,父元素需要设置明确的高度,子元素要设置为inline-block

 	<main><div class="parent"><div class="child">我是居中的babycare</div></div></main><style>.parent {display: table-cell;width: 100vw;height: 200px;vertical-align: middle;text-align: center;border: 1px solid #ccc;}.child {display: inline-block;background: red;}</style>

在这里插入图片描述

方法六:内联块+伪元素(特殊场景使用)

创建一个全高的伪元素作为参照物,通过verticle-align实现垂直对齐,不能用在flexbox或grid时候可以考虑

	<main><div class="parent"><div class="child">我是居中的babycare</div></div></main><style>.parent {text-align: center;height: 200px;border: 1px solid #ccc;}.parent::before {content: "";display: inline-block;height: 100%;vertical-align: middle;}.child {display: inline-block;vertical-align: middle;background: red;}</style>

在这里插入图片描述

方法七:视口居中(弹框场景)

需要再浏览器窗口中央显示的弹窗,使用position:fixed相对于视口定位,再结合transform实现居中

	 <main><div class="parent"><div class="child">我是居中的babycare</div></div></main><style>.parent {}.child {position: fixed;top: 50%;left: 50%;transform: translate(-50%,-50%);width: 80%;max-width: 600px;background: red;}</style>

方法八:JavaScript动态计算

动态计算出父元素和子元素的offsetWidth 和 offsetHeight,使用position:absolute,给top left赋值

http://www.dtcms.com/a/564777.html

相关文章:

  • 在阿里云做的网站怎么进后台国际营销信息系统
  • (undone) CFD 学习 (5) 阅读简单求解器理解非结构网格 + 更复杂的 FVM
  • 福州网站建设机构东莞网站推广行者seo08
  • 唐山教育平台网站建设推广的软件有哪些
  • 算法24.0
  • 算法沉淀第十一天(序列异或)
  • 算法微调之代码助手模型实战
  • C++ 分治 归并排序解决问题 力扣 493. 反转对 题解 每日一题
  • 算法:从特殊到一般——拆解两两交换链表节点的递归解法
  • 代码随想录打卡day23:435.无重叠区间
  • 算法 day 42
  • VMware虚拟机安装CentOs系统与网络服务设置
  • 深入理解 Java 反射机制:原理、实践与风险防控​
  • 南充高端网站建设网络服务合同范本免费
  • 从公式看对抗逻辑:揭秘生成对抗网络(GAN)的训练博弈之路
  • kafka 2.X+zookeeper3.X 权限控制
  • Python Pip 常用命令与venv虚拟环境
  • 实验四 综合数据流处理-Storm案例实现
  • 黔西南建设厅网站帮小公司代账一个月费用
  • RAG_查询重构与分发
  • AIOT:用HealthFi重构全球健康金融体系的蓝海样本
  • 感知机之争,杀死神经网络的“人工智能之父”
  • 企业seo服务深圳百度seo培训
  • 清华大学网站建设方案wordpress 获取用户邮箱
  • 解析EasyGBS视频分发与按需直播关键技术,实现海量视频的高效触达
  • 在.NET Core Web Api中使用redis
  • .NET Core Web API开发需引入的三个基本依赖配置说明
  • 怎么在PPT里面插入网页?
  • ETL核对
  • Hangfire 入门与实战:在 .NET Core 中实现可靠后台任务处理