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

CSS 中实现 div 居中有以下几种常用方法

在 CSS 中实现 div 居中有以下几种常用方法,具体取决于需要 ​​水平居中​​、​​垂直居中​​ 还是 ​​两者兼具​​。以下是详细解决方案:

目录

一、水平居中(Horizontal Centering)

1. 行内块元素(Inline-Block)

2. 固定宽度 + margin: auto

3. Flexbox 弹性布局

二、垂直居中(Vertical Centering)

1. 绝对定位 + 变换(Transform)

2. Flexbox 弹性布局

3. Grid 网格布局

三、水平 + 垂直双居中(Perfect Center)

1. Flexbox(推荐)

2. Grid 网格布局

3. 绝对定位 + 变换

四、其他场景

1. 行内元素(Text/Inline)居中

2. 多行文本垂直居中

关键点总结



一、水平居中(Horizontal Centering)

1. 行内块元素(Inline-Block)

css

.parent {text-align: center; /* 父容器设置 */
}
.child {display: inline-block; /* 子元素转为行内块 */
}
2. 固定宽度 + margin: auto

css

.child {width: 300px;margin: 0 auto; /* 左右外边距自动分配 */
}
3. Flexbox 弹性布局

css

.parent {display: flex;justify-content: center; /* 水平居中 */
}

二、垂直居中(Vertical Centering)

1. 绝对定位 + 变换(Transform)

css

.parent {position: relative; /* 父容器相对定位 */
}
.child {position: absolute;top: 50%;transform: translateY(-50%); /* 上移自身高度的50% */
}
2. Flexbox 弹性布局

css

.parent {display: flex;align-items: center; /* 垂直居中 */
}
3. Grid 网格布局

css

.parent {display: grid;place-items: center; /* 垂直水平居中 */
}

三、水平 + 垂直双居中(Perfect Center)

1. Flexbox(推荐)

css

.parent {display: flex;justify-content: center; /* 水平 */align-items: center;     /* 垂直 */height: 100vh;           /* 父容器需有高度 */
}
2. Grid 网格布局

css

.parent {display: grid;place-items: center; /* 一步到位 */height: 100vh;
}
3. 绝对定位 + 变换

css

.parent {position: relative;height: 100vh;
}
.child {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%); /* 上移左移自身尺寸的50% */
}

四、其他场景

1. 行内元素(Text/Inline)居中

css

.parent {text-align: center; /* 直接继承 */
}
2. 多行文本垂直居中

css

.parent {display: flex;align-items: center;line-height: 1.5; /* 与容器高度一致 */
}

关键点总结

方法适用场景优点缺点
margin: auto固定宽度元素水平居中简单需明确宽度
Flexbox现代布局,支持动态尺寸灵活,代码简洁兼容性(IE10+)
Grid二维布局,一步到位强大,适合复杂设计兼容性(IE不支持)
绝对定位 + 变换未知尺寸元素居中无需固定尺寸需父容器定位

​推荐优先使用 Flexbox 或 Grid​​,它们更符合现代 Web 开发需求,且代码简洁易维护。

相关文章:

CSS 中实现 div 居中有以下几种常用方法

在 CSS 中实现 div 居中有以下几种常用方法,具体取决于需要 ​​水平居中​​、​​垂直居中​​ 还是 ​​两者兼具​​。以下是详细解决方案: 目录 一、水平居中(Horizontal Centering) 1. 行内块元素(Inline-Blo…...

win11修改文件后缀名

一、问题描述 win11系统中,直接添加.py后缀后仍然是txt文本文件 二、处理方式: 点击上方三个小点点击“选项”按钮 点击“查看”取消“隐藏已知文件类型的扩展名”选项点击“应用” 此时,“.txt”文件后缀显示出来了。将txt删去&#xff0c…...

【数据结构和算法】3. 排序算法

本文根据 数据结构和算法入门 视频记录 文章目录 1. 排序算法2. 插入排序 Insertion Sort2.1 概念2.2 具体步骤2.3 Java 实现2.4 复杂度分析 3. 快排 QuickSort3.1 概念3.2 具体步骤3.3 Java实现3.4 复杂度分析 4. 归并排序 MergeSort4.1 概念4.2 递归具体步骤4.3 Java实现4.4…...

k8s之 kube-prometheus监控

Kubernetes 中的 kube-prometheus 是一个基于 Prometheus Operator 的完整监控解决方案,它集成了 Prometheus、Alertmanager、Grafana 以及一系列预定义的监控规则和仪表盘,专为 Kubernetes 集群设计。 一、核心组件介绍 Prometheus Operator &#xf…...

Docker Compose 和 Kubernetes(k8s)区别

前言:Docker Compose 和 Kubernetes(k8s)是容器化技术中两个常用的工具,但它们的定位、功能和适用场景有显著区别。以下是两者的核心对比: ​​1. 定位与目标​​ ​​特性​​ ​​Docker Compose​​ ​​Kubernet…...

【SpringBoot】HttpServletRequest获取使用及失效问题(包含@Async异步执行方案)

目录 1. 在 Controller 方法中作为参数注入 2.使用 RequestContextHolder (1)失效问题 (2)解决方案一: (3)解决方案二: 3、使用AutoWrite自动注入HttpServletRequest 跨线程调…...

【Easylive】为什么需要手动转换 feign.Response 到 HttpServletResponse

【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 为什么需要手动转换 feign.Response 到 HttpServletResponse? feign.Response 是 Feign 客户端调用远程服务后返回的原始 HTTP 响应对象,而 HttpServletResponse 是…...

C语言交换函数:为什么必须用指针传递参数?

写一个简单交换两个变量值的函数,我们要理解C语言中参数传递的机制. C语言中的函数参数默认是按值传递,也就是说,如果我写一个函数,如 void swap(int a,int b) {int tmp a;a b;b tmp; }然后在函数内部交换a,b的值,这不会影响到函数外部的变量,因为传递的是值的副本. 就像…...

C#+Visual Studio 2022为AutoCAD 2022开发插件并显示在Ribbon选项卡

1.插件功能开发 (1)建立C#类库项目,添加必要引用,都是autocad二次开发相关的,要注意对引用的库修改其“复制文件”属性为false (2)项目调试使用“属性”打开“启用外部程序”,指定为机器上autocad2022的a…...

全景VR是什么?全景VR有什么热门用途?

全景VR的概念与技术特点 全景VR,即虚拟现实全景,是新型的视觉展示技术。通过拍摄和构建三维模拟环境,使浏览者能够通过网络获得三维立体的空间感觉,仿佛身临其境。全景VR技术的核心在于360全景图像的捕捉和展示,它允许…...

美创科技20周年庆典顺利举行

2025年4月19日 美创科技成立20周年 “稳健前行二十载,创新共赢新未来” 美创科技周年庆典在杭州总部顺利举行 美创科技20周年庆典精彩视频回顾 (点击查看美创科技20周年庆典精彩视频回顾) CEO致辞 20周年再出发,开启新增长周期…...

学习笔记二十二—— 并发五大常见陷阱

⚠️ 并发五大常见陷阱 目录 数据竞争 (Data Race)死锁 (Deadlock)竞态条件 & 饿死现象 (Race Condition & Starvation)悬挂指针 (Dangling Pointer)重复释放 (Double Free)开发自查清单 1. 数据竞争 (Data Race) 专业定义 两个及以上线程在缺乏同步的情况下同时访问同…...

精益数据分析(10/126):深度剖析数据指标,驱动创业决策

精益数据分析(10/126):深度剖析数据指标,驱动创业决策 在创业的旅程中,数据指标是我们把握方向的关键工具。今天,我想和大家一起深入学习《精益数据分析》中关于数据指标的知识,共同探索如何利…...

冒泡排序详解

void bubbleSort(std::vector& arr) { int n arr.size(); for (int i 0; i < n-1 ; i) { // 需要 n-1 轮 原理是 3个元素 两轮比交即可 10个元素9轮比较即可 bool swapped false; // 用于优化&#xff0c;检测是否发生交换 for (int j 0; j < n - i -1 ; j) { //…...

小刚说C语言刷题——1039 求三个数的最大数

1.题目描述 已知有三个不等的数&#xff0c;将其中的最大数找出来。 输入 输入只有一行&#xff0c;包括3个整数。之间用一个空格分开。 输出 输出只有一行&#xff08;这意味着末尾有一个回车符号&#xff09;&#xff0c;包括1个整数。 样例 输入 1 5 8 输出 8 2.…...

【日志体系】ELK Stack与云原生日志服务

IaaS日志体系&#xff1a;ELK Stack与云原生日志服务 一、技术演进的双重脉络二、架构设计的范式差异三、关键技术突破解析四、前沿发展与行业实践 当某国际电商平台在"黑色星期五"遭遇每秒百万级日志洪峰时&#xff0c;其运维团队通过混合日志架构实现全链路追踪&am…...

spark和hadoop区别联系

区别 设计理念 Hadoop&#xff1a;主要解决大规模数据的存储和处理问题&#xff0c;其核心是 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;和 MapReduce 计算模型。HDFS 用于存储大规模数据&#xff0c;MapReduce 用于处理数据&#xff0c;它将数据处理过程分为 Map 和…...

240422 leetcode exercises

240422 leetcode exercises jarringslee 文章目录 240422 leetcode exercises[237. 删除链表中的节点](https://leetcode.cn/problems/delete-node-in-a-linked-list/)&#x1f501;节点覆盖法 [392. 判断子序列](https://leetcode.cn/problems/is-subsequence/)&#x1f501;…...

【上位机——MFC】菜单类与工具栏

菜单类 CMenu&#xff0c;封装了关于菜单的各种操作成员函数&#xff0c;另外还封装了一个非常重要的成员变量m_hMenu(菜单句柄) 菜单使用 添加菜单资源加载菜单 工具栏相关类 CToolBarCtrl-》父类是CWnd&#xff0c;封装了关于工具栏控件的各种操作。 CToolBar-》父类是CC…...

Spark-SQL连接Hive总结及实验

一、核心模式与配置要点 1. 内嵌Hive 无需额外配置&#xff0c;直接使用&#xff0c;但生产环境中几乎不使用。 2. 外部Hive&#xff08;spark-shell连接&#xff09; 配置文件&#xff1a;将hive-site.xml&#xff08;修改数据库连接为node01&#xff09;、core-site.xml、…...

20.3 使用技巧9

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的 20.3.13 DataGridView使用日期选择控件 有时为了输入方便或者固定日期格式&#xff0c;可以考虑点击DataGridView中某个单元格时出现…...

逻辑回归(Logistic Regression)

逻辑回归&#xff08;Logistic Regression&#xff09; 原理 通过 Sigmoid函数&#xff08; σ ( z ) 1 1 e − z σ(z) \frac{1}{1e^{-z}} σ(z)1e−z1​&#xff09;将线性回归输出 z w T x b z w^Tx b zwTxb 映射到 [0,1] 区间输出值表示样本属于正类的概率&#…...

weblogic12 部署war包 项目运行报错

问题表现 weblogic12 部署war包项目成功&#xff0c;运行启动成功。但是在使用此项目的时候&#xff0c;点击任何功能都会报错&#xff0c;部分报错如下&#xff1a; at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.…...

重新定义户外防护!基于DeepSeek的智能展开伞棚系统技术深度解析

从“手动操作”到“感知决策”&#xff0c;AI重构城市空间弹性 全球极端天气事件频发&#xff0c;传统伞棚依赖人工展开/收纳&#xff0c;存在响应滞后&#xff08;暴雨突袭时展开需3-5分钟&#xff09;、抗风能力弱&#xff08;8级风损毁率超60%&#xff09;、空间利用率低等痛…...

Android15沉浸式界面顶部有问题

Android15沉浸式界面顶部有问题 往往开发人员的手机没这么高级&#xff0c;客户或者老板的手机是Android15的。 我明明就设了状态栏透明&#xff0c;我的手机也没问题。但Android15是有问题的。 先看下有问题的界面&#xff1a; 解决方案&#xff1a; 处理1&#xff1a; if (…...

git比较不同分支的不同提交文件差异

背景&#xff1a;只想比较某2个分支的某2次提交的差异&#xff0c;不需要带上父提交。 以commitA为基准&#xff0c;用commitB去比较差异 直接上代码&#xff1a; #!/bin/bashcommitAd347dad9f25fb17db89eadcec7ea0f1bacbf7d29 commitBa6cc0c1a863b5c56d5f48bff396e4cd6966e…...

ADB -> pull指令推送电脑文件到手机上

ADB Push命令 在Android开发中&#xff0c;ADB的push命令用于将文件从电脑传输到Android设备上&#xff0c;是开发和测试过程中的重要工具 基本语法 adb push <本地文件路径> <设备目标路径><本地文件路径>&#xff1a;必需参数&#xff0c;指定要推送的本…...

compat-openssl10和libnsl下载安装

在麒麟系统&#xff08;如银河麒麟&#xff09;中&#xff0c;compat-openssl10 和 libnsl 是一些软件&#xff08;如 MySQL、Oracle 等&#xff09;的依赖包&#xff0c;用于提供兼容性支持。以下是它们的下载方法&#xff1a; 1. 下载 compat-openssl10 compat-openssl10 是…...

‌射频功率放大器的核心工作机制与组件设计

以下是关于射频功率放大器工作原理的详细说明&#xff1a; 射频功率放大器&#xff08;RF PA&#xff09;是无线通信系统的核心组件&#xff0c;其功能基于能量转换与信号放大技术。它通过精确的能量控制与信号处理&#xff0c;将低功率射频信号转化为高功率输出&#xff0c;支…...

制作一款打飞机游戏12:初稿原型

当前进展 ‌任务回顾‌&#xff1a;在之前&#xff0c;我们做了大量的规划和原型设计。我们创建了关卡&#xff0c;添加了侧向滚动和BOSS模式背景重复&#xff0c;还制作了一个紧凑的瓦片集。‌原型完成‌&#xff1a;我们完成了五个原型&#xff0c;基本实现了飞机飞行、滚动…...

C语言高频面试题——指针数组和数组指针

指针数组和数组指针是 C/C 中容易混淆的两个概念&#xff0c;以下是详细对比&#xff1a; 1. 指针数组&#xff08;Array of Pointers&#xff09; 定义&#xff1a;一个数组&#xff0c;其元素是 指针类型。语法&#xff1a;type* arr[元素个数]; 例如&#xff1a;int* ptr_a…...

爱普生TG-5006CG成为提升5G RedCap时钟同步精度的理想选择

在 5G 通信技术持续演进的进程中,5G RedCap&#xff08;Reduced Capability,即降低能力&#xff09;是5G技术中针对物联网场景优化的一种轻量化标准。它通过降低终端带宽、简化天线配置和调制方式等手段&#xff0c;大幅降低了终端设备的成本和功耗&#xff0c;同时继承了5G NR…...

用Mac M4构建多架构Docker镜像指南

使用Mac M4构建多架构Docker镜像指南 解决问题&#xff1a;WARNING: The requested image‘s platform (linux/amd64) does not match the detected host platform &#x1f4cc; 重点&#xff1a;为什么需要双栈架构镜像&#xff1f; 双栈架构镜像&#xff08;同时支持ARM64和…...

PCB原理图解析(炸鸡派为例)

晶振 这是外部晶振的原理图。 32.768kHz 的晶振&#xff0c;常用于实时时钟&#xff08;RTC&#xff09;电路&#xff0c;因为它的频率恰好是一天的分数&#xff08;32768 秒&#xff09;&#xff0c;便于实现秒计数。 C25 和 C24&#xff1a;两个 12pF 的电容&#xff0c;用于…...

GPU高效利用率实战揭秘:蓝耘元生代VS传统云平台的降维打击

文章目录 一、前言&#xff1a;AI算力革命与蓝耘元生代的崛起二、蓝耘元生代智算云核心架构解析2.1 技术基石&#xff1a;Kubernetes原生云与蜂巢式资源网络关键创新点&#xff1a; 2.2 核心功能模块 三、蓝耘元生代快速入门指南3.1 注册与资源申请3.2 实战案例&#xff1a;部署…...

EXCEL学习

一、基本计算 求和 SUM(区域)&#xff1a;计算区域内数值总和。示例&#xff1a;SUM(A1:A10) 计算A1到A10的和。 平均值 AVERAGE(区域)&#xff1a;计算区域内数值的平均值。示例&#xff1a;AVERAGE(B1:B10) 计算B1到B10的平均值。 计数 COUNT(区域)&#xff1a;统计区域内非…...

PyTorch 线性回归详解:模型定义、保存、加载与网络结构

目录 前言一、pytorch框架线性回归1.1 pytorch模型的定义1.2 nn.Sequential()1.2.1 nn.Linear1.2.2 nn.Sequential 1.3 nn.ModuleList()1.4 nn.ModuleDict()1.5 nn.Module二、pytorch模型的保存2.1 保存模型的权重和其他参数2.1.1 torch.save()保存字典总结 前言 书接上文 自…...

基础服务系列-Jupyter Notebook 支持JavaScript

IJavascript is a Javascript kernel for the Jupyter notebook. npm install npm i -g ijavascript 报以上错误&#xff0c;执行以下命令。 npm i -g ijavascript --unsafe-perm 说明&#xff1a;npm会有生命周期&#xff0c;某个包会有生命周期来执行一些东西&#xff0c;…...

LabVIEW数据采集与传感系统

开发了一个基于LabVIEW的智能数据采集系统&#xff0c;该系统主要通过单片机与LabVIEW软件协同工作&#xff0c;实现对多通道低频传感器信号的有效采集、处理与显示。系统的设计旨在提高数据采集的准确性和效率&#xff0c;适用于各种需要高精度和低成本解决方案的工业场合。 项…...

如何编写单元测试

一.如何编写单元测试 下面我们以 fetchEnv 方法作为案例&#xff0c;编写一套完整的单元测试用例供读者参考 编写 fetchEnv 方法 ./src/utils/fetchEnv.ts 文件 /*** 环境参数枚举*/enum IEnvEnum {DEV dev, // 开发TEST test, // 测试PRE pre, // 预发PROD prod, // 生…...

【网络编程】从零开始彻底了解网络编程(三)

本篇博客给大家带来的是网络编程的知识点. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快乐顺便进步 TCP流…...

华为OD机试真题——数据分类(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析&#xff1b; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式&#xff01; 本文收录于专栏&#xff1a;《2025华为OD真题目录全流程解析/备考攻略/经验…...

3步拆解Linux内核源码的思维模型

3步拆解Linux内核源码的思维模型 ——从“不敢碰”到“庖丁解牛” 一、第一步&#xff1a;资料收集与框架搭建——像拼图一样找到“地图” 初看Linux内核源码的人&#xff0c;往往会被其千万行代码淹没。但正如登山前需要地形图&#xff0c;阅读内核前必须构建认知框架。 1…...

图像预处理-图像轮廓特征查找

其实就是外接轮廓&#xff0c;有了轮廓点就可以找到最上、最下、最左、最右的四个坐标&#xff08;因为有xmin,xmax,ymin,ymax&#xff09;。就可以绘制出矩形。 一.外接矩形 cv.boundingRect(轮廓点) - 返回x,y,w,h&#xff0c;传入一个轮廓的轮廓点&#xff0c;若有多个轮廓需…...

布尔差分法解析:从逻辑导数到电路优化

#布尔差分法解析&#xff1a;从逻辑导数到电路优化 一、背景数学知识&#xff1a;布尔代数基础 布尔变量与函数 在布尔代数中&#xff0c;变量的取值只有 0&#xff08;表示假&#xff09;和 1&#xff08;表示真&#xff09;。例如&#xff0c;一个布尔变量 x 可以取 0 或 1。…...

【NVIDIA】Isaac Sim 4.5.0 加载 Franka 机械臂

目录 一、NVIDIA Isaac Sim 4.5.0二、Isaac Sim 4.5.0 核心特性解析1. 基于 Omniverse 的跨平台仿真框架2. 模块化机器人开发架构3. 面向AI的强化学习支持 三、Isaac Sim 4.5.0 仿真环境搭建四、加载 Franka 机械臂1. Python源码2. 代码解析&#xff08;按执行流程&#xff09;…...

边缘计算场景下的GPU虚拟化实践(基于vGPU的QoS保障与算力隔离方案)

在智慧交通、工业质检等边缘计算场景中&#xff0c;GPU虚拟化技术面临严苛的实时性与资源隔离挑战。本文基于NVIDIA vGPU与国产算力池化方案&#xff0c;深入探讨多租户环境下算力隔离的工程实践&#xff0c;并给出可复用的优化策略。 一、边缘GPU虚拟化的核心痛点 ‌动态负载…...

使用go-git同步文件到gitee

go-git是golang上纯go实现的git客户端&#xff0c;可用来同步文件到git仓库。 为什么不用gitee官方openapi&#xff0c;因为我需要强制推送覆盖&#xff0c;官方api不支持。 下面是一个通过xml.gz文件到gitee的代码示例 package clientimport ("fmt""gin-epg…...

HTTP 和 HTTPS 有什么区别?

文章目录 安全性端口号连接方式证书性能搜索引擎优化&#xff08;SEO&#xff09; HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;和 HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff0c;超文本传输安全协议&#xff09;都…...

【C++软件实战问题排查经验分享】UI界面卡顿 | CPU占用高 | GDI对象泄漏 | 线程堵塞 系列问题排查总结

目录 1、UI界面卡顿问题排查 2、软件CPU占用高问题排查 3、UI界面显示异常&#xff08;GDI对象泄漏导致窗口绘制异常&#xff09;问题排查 4、软件线程堵塞&#xff08;包含线程死锁&#xff09;问题排查 5、最后 C软件异常排查从入门到精通系列教程&#xff08;核心精品专…...