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

CSS实现元素水平垂直居中的几种方式

让不定宽元素垂直水平居中的几种方法

  • grid
  • flex
  • position
  • translate

演示环境

  • 代码
  • 用两个div作为父元素,实现子元素div的水平垂直居中
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #box1,#box2 {
            width: 300px;
            height: 300px;
            border: 1px solid black;
            float: left;
            margin: 20px;
        }
        .box1-1 {
            background: lightblue;
            width: 100px;
            height: 100px;
        }
        .box2-1 {
            background: lightpink;
            width: 150px;
            height: 200px;
        }
    </style>
</head>
<body>
    <div id="box1">
        <div class="box1-1"></div>
    </div>
    <div id="box2">
        <div class="box2-1"></div>
    </div>
</body>
</html>
  • 如图所示,未实现效果:
    在这里插入图片描述
  • 如图所示,实现效果:
    在这里插入图片描述

方式一:grid

在子元素上添加 margin: auto;我们可以发现子元素实现了水平居中,但在垂直方向还是无变化。
因此我们可以为父元素添加 Grid 网格布局,使得margin支持上下左右的居中。

#box1,#box2 {
	display: grid;
}
.box1-1,.box2-1 {
	margin: auto;
}

方式二:flex

使用弹性盒模型 flex,使得margin支持上下左右的居中。

#box1,#box2 {
	display: flex;
}
.box1-1,.box2-1 {
	margin: auto;
}

方式三:position

使用绝对定位,使得子元素脱离文档流。
通过设置左右,上下都为0,利用 margin: auto 居中两边等价的原理,实现最终的效果。

#box1,#box2 {
	position: relative;
}
.box1-1,.box2-1 {
    position: absolute;
  	left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    margin: auto;
}

方式四:translate

使用父相子绝的定位方式,让子元素距左,距顶偏移一半,此时子元素的左上角在父元素的中心点。
我们可以利用 CSS3的 transform属性将子元素向左上方,X轴,Y轴拉取50%。

#box1,#box2 {
	position: relative;
}
.box1-1,.box2-1 {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

相关文章:

  • 年末购机推荐,首选OPPO这两款中端旗舰王者
  • js中深浅拷贝的实现方式(含图解原理)
  • Java刷题知识点之File对象常用功能:获取文件名称、获取文件路径、获取文件大小、获取文件修改时间、创建与删除、判断、重命名、查看系统根目录、容量获取、获取某个目录下内容、过滤器...
  • 查看httpd状态
  • js中如何判断引用值为数组(几种不同方式的详解)
  • 项目代码重用
  • js中数组去重的几种实现方式(区别)
  • java创建文件和目录
  • JS For循环中嵌套setTimeout()方法的理解
  • ubuntu下zabbix服务器监控工具部署
  • 前端性能优化-图片
  • MapString, String循环遍历的方法
  • 快速掌握js中闭包的理解与应用(面试中如何回答闭包)
  • inkspace 0.92 安装 总结
  • js中原型,原型链的理解
  • 《深入 React 技术栈》
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • bootstrap创建登录注册页面
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Go 语言编译器的 //go: 详解
  • happypack两次报错的问题
  • idea + plantuml 画流程图
  • java8 Stream Pipelines 浅析
  • log4j2输出到kafka
  • mysql中InnoDB引擎中页的概念
  • Node 版本管理
  • Python 基础起步 (十) 什么叫函数?
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 模型微调
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • ionic异常记录
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​linux启动进程的方式
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (175)FPGA门控时钟技术
  • (C语言)逆序输出字符串
  • (libusb) usb口自动刷新
  • (WSI分类)WSI分类文献小综述 2024
  • (差分)胡桃爱原石
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .htaccess配置常用技巧
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • ?.的用法