元素居中的方法总结

目录

垂直居中

行内元素垂直居中

单行文本垂直居中

1.line-height: 200px;

多行文本垂直居中

1.table+vertical-align:middle

块级元素垂直居中

1.display: flex;align-items: center;

2.使用position + top +margin-top

水平居中

行内元素水平居中

1.text-align:center

​编辑

块级元素水平居中

1.margin: 0 auto;

垂直水平居中

行内元素垂直水平居中

1.文本属性line-height+text-align

块级元素垂直水平居中

1.position+transform

 2.flexbox


垂直居中

行内元素垂直居中

单行文本垂直居中

1.line-height: 200px;

<!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>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
      div{
        width: 200px;
        border: 1px solid red;
        height: 200px;
      }
      span{
        line-height: 200px;
      }
    </style>
  </head>
  <body>
    <div>
      <span> 垂直居中!</span>
    </div>
  </body>
</html>

多行文本垂直居中

1.table+vertical-align:middle

<!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>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
      div{
        width: 200px;
        border: 1px solid red;
        height: 200px;
        display: table;
      }
      span{
        display: table-cell;
        vertical-align: middle;
      }
    </style>
  </head>
  <body>
    <div>
      <span> 多行垂直居中!多行垂直居中!多行垂直居中!多行垂直居中!多行垂直居中!多行垂直居中!多行垂直居中!多行垂直居中!</span>
    </div>
  </body>
</html>

2.flex+align-items

<!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>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
      div{
        width: 200px;
        border: 1px solid red;
        height: 200px;
        display: flex;
        align-items: center;
      }
      
    </style>
  </head>
  <body>
    <div>
      <span> 多行垂直居中!多行垂直居中!多行垂直居中!多行垂直居中!多行垂直居中!多行垂直居中!多行垂直居中!多行垂直居中!</span>
    </div>
  </body>
</html>

块级元素垂直居中

1.display: flex;align-items: center;

不是所有的浏览器都可以兼容

2.使用position + top +margin-top

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			.out{
				width: 500px;
				height: 500px;
				background-color: skyblue;	
				position: relative;			
			}
			.in{
				width: 100px;
				height: 100px;
				background-color: salmon;
				position: absolute;
				top: 50%;
				margin-top: -50px;
			}
		</style>
	</head>
	<body>
		<div class="out">
			<div class="in"></div>
		</div>
	</body>
</html>

兼容性较好

让一个块级元素垂直居中的八种方法_块元素垂直居中__张张张i的博客-CSDN博客

水平居中

行内元素水平居中

1.text-align:center

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
    .parent {
        text-align: center;
    }
</style>
</head>
<body>
	<div class='parent'>
		<span>123</span>
	</div>
</body>
</html>

块级元素水平居中

1.margin: 0 auto;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .child {
            background: skyblue;
            width:200px;
            height:200px;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    <div class='parent'>
        <div class='child'></div>
    </div>
</body>
</html>

垂直水平居中

行内元素垂直水平居中

1.文本属性line-height+text-align

文本属性的话,如果你的行内元素是文本,你可以使用line-heighttext-align来实现水平和垂直居中

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
    .parent {
        width: 500px;
        height: 500px;
        background-color: aqua;
        text-align: center; /* 水平居中 */
        line-height: 500px; /* 垂直居中 */
    }
</style>
</head>
<body>
	<div class='parent'>
		<span>123</span>
	</div>
</body>
</html>

块级元素垂直水平居中

1.position+transform

.container 元素被设置为相对定位,以作为 .content 元素的定位参考。.content 元素被绝对定位到 .container 内,然后使用 top: 50%; left: 50%; 将其移动到容器的中心。最后,transform: translate(-50%, -50%); 用于微调元素的位置,使其完全居中。

<!DOCTYPE html>
<html>
<head>
<style>
  .container {
  position: relative;
  width: 100%;
  height: 100vh; /* 或者其他适当的高度 */
  background-color: aqua;
}

.content {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
</style>
</head>
<body>

<div class="container">
  <div class="content">要居中的内容</div>
</div>

</body>
</html>

使用 transform: translate(-50%, -50%); 是一种在垂直和水平方向上同时将元素居中的常用技巧。这是因为 transformtranslate 函数可以通过百分比单位相对于元素自身的尺寸进行计算。

让我们来解释一下为什么要使用 -50% 的情况:

  1. 水平居中(左右方向)

    • 当你设置 left: 50%; 时,元素的左侧边界会定位在容器的中心点位置。
    • 但元素的中心点不在容器的中心,而是位于元素自身的宽度的一半处。
    • 通过使用 transform: translateX(-50%);,元素会向左移动自身宽度的一半,从而将元素的中心点与容器的中心点对齐,实现水平居中。
  2. 垂直居中(上下方向)

    • 同样,当你设置 top: 50%; 时,元素的顶部边界会定位在容器的中心点位置。
    • 但元素的中心点不在容器的中心,而是位于元素自身的高度的一半处。
    • 通过使用 transform: translateY(-50%);,元素会向上移动自身高度的一半,从而将元素的中心点与容器的中心点对齐,实现垂直居中。

综合起来,transform: translate(-50%, -50%); 是将元素在水平和垂直方向上同时移动,使其中心点与容器的中心点对齐,从而实现元素的完全居中。

 2.flexbox

<!DOCTYPE html>
<html>
<head>
<style>
  .container {
    display: flex;
    justify-content: center; /* 水平居中 */
    align-items: center; /* 垂直居中 */
    height: 100vh; /* 使容器铺满整个视口高度 */
    background-color: lightgray;
  }

  .content {
    display: inline-block; /* 将元素设置为行内块元素 */
    padding: 20px;
    background-color: white;
  }
</style>
</head>
<body>

<div class="container">
  <div class="content">要居中的内容</div>
</div>

</body>
</html>

大多数现代浏览器都支持它。然而,如果你需要考虑更旧的浏览器,特别是IE9及更早版本,Flexbox的支持可能会有限

参考文章来自:

元素居中的N种方法 - 掘金

css 水平居中(8种方法)、垂直居中(8种方法) - 掘金 (juejin.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/101853.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CUDA小白 - NPP(3) 图像处理 Color and Sampling Conversion

cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化&#xff0c;具体的可以参考别的博主的介绍&#xff0c;都比较详细。还有一些cuda中的专有名词的含义&#xff0c;可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus&#xf…

说说TIME_WAIT和CLOSE_WAIT区别

分析&回答 TCP协议规定&#xff0c;对于已经建立的连接&#xff0c;网络双方要进行四次握手才能成功断开连接&#xff0c;如果缺少了其中某个步骤&#xff0c;将会使连接处于假死状态&#xff0c;连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接&#xf…

【ES6】—类与继承

一、 定义类 class People {constructor (name, age) {this.name namethis.age age}showName () {console.log(this.name)} } let p1 new People(xiaoxiao, 30) console.log(p1) // People {name: xiaoxiao, age: 30}小节&#xff1a; 使用class关键字声明类使用construc…

查看GPU占用率

如何监控NVIDIA GPU 的运行状态和使用情况_nvidia 85c_LiBiGo的博客-CSDN博客设备跟踪和管理正成为机器学习工程的中心焦点。这个任务的核心是在模型训练过程中跟踪和报告gpu的使用效率。有效的GPU监控可以帮助我们配置一些非常重要的超参数&#xff0c;例如批大小&#xff0c;…

安防监控/视频存储/视频汇聚平台EasyCVR接入海康Ehome车载设备出现收流超时的原因排查

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。视频汇聚平台既具…

ubuntu22.04搭建verilator仿真环境

概述 操作系统为 Ubuntu(22.04.2 LTS)&#xff0c;本次安装verilator开源verilog仿真工具&#xff0c;进行RTL功能仿真。下面构建版本为5.008的verilator仿真环境。先看一下我系统的版本&#xff1a; 安装流程 安装依赖 sudo apt-get install git perl python3 make autoc…

linux深入理解多进程间通信(未完)

1.进程间通信 1.1 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件…

第一章辩证唯物论,考点七思维导图

逻辑框架 考点七思维导图&#xff1a;

交换机端口安全实验

文章目录 一、实验的背景与目的二、实验拓扑三、实验需求四、实验解法1. PC配置IP地址部分2. 在SW1上开启802.1X身份验证3. 创建一个用户身份验证的用户。用户名为wangdaye&#xff0c;密码为1234564.创建一个端口隔离组&#xff0c;实现三台PC无法互相访问 摘要&#xff1a; 本…

使用gradio库的File模块实现文件上传和生成可下载文件

使用gradio库的File模块实现文件上传和生成可下载文件 文章目录 使用gradio库的File模块实现文件上传和生成可下载文件一、背景二、介绍1、gradio简介2、File模块简介3、tempfile 模块 三、文件上传demo实战1、具体代码2、运行样例 一、背景 在用Gradio设计改写效果审核AI的de…

使用Docker安装和部署kkFileView

&#x1f388;1 参考文档 kkFileView官方文档 &#x1f680;2 安装kkFileView 拉取Redis镜像。 docker pull keking/kkfileview启动docker容器。 docker run -it -d -p 8012:8012 keking/kkfileview --restart always解释&#xff1a; docker run redis # 从kkfileview镜像运行…

【kubernetes】使用KubeSphere devops部署我的微服务系统

KubeSphere Devops 入门使用KubeSphere的Devops功能部署"我的微服务系统" &#xff08;内容学习于尚硅谷云原生课程&#xff09; kubesphere devops官方文档&#xff1a; https://v3-1.docs.kubesphere.io/zh/docs/devops-user-guide/how-to-use/create-a-pipeline-u…

Vue2+Vue3笔记(尚硅谷张天禹老师)day02

声明:只是记录&#xff0c;初心是为了让页面更好看,会有错误,我并不是一个会记录的人&#xff0c;所以有点杂乱无章的感觉&#xff0c;我先花点时间把视频迅速过掉&#xff0c;再来整理这些杂乱无章的内容 组件化编程 按照视频来的话&#xff0c;这里应该有一些概念的东西&…

多线程应用——阻塞队列

阻塞队列 文章目录 阻塞队列1.队列的概念2.阻塞队列3.现实中的例子4.消息队列5.使用队列的优势1.解耦2.削峰填谷3.异步操作 6.实现 1.队列的概念 一种先进先出的数据结构 2.阻塞队列 队列写元素是从队尾插入&#xff0c;从对头取出 当插入元素时&#xff0c;先判断一下队列…

com.squareup.okhttp3:okhttp 组件安全漏洞及健康度分析

组件简介 维护者square组织许可证类型Apache License 2.0首次发布2016 年 1 月 2 日最新发布时间2023 年 4 月 23 日GitHub Star44403GitHub Fork9197依赖包5,582依赖存储库77,217 com.squareup.okhttp3:okhttp 一个开源的 HTTP 客户端库&#xff0c;可以用于 Android 和 Jav…

知识图谱项目实践

目录 步骤 SpaCy Textacy——Text Analysis for Cybersecurity Networkx Dateparser 导入库 写出页面的名称 ​编辑 自然语言处理 词性标注 可能标记的完整列表 依存句法分析&#xff08;Dependency Parsing&#xff0c;DEP&#xff09; 可能的标签完整列表 实例理…

Unity 之 参数类型之值类型参数的用法

文章目录 基本数据类型结构体结构体的进一步补充 总结&#xff1a; 当谈论值类型参数时&#xff0c;我们可以从基本数据类型和结构体两个方面详细解释。值类型参数指的是以值的形式传递给函数或方法的数据&#xff0c;而不是引用。 基本数据类型 基本数据类型的值类型参数&…

【Java 动态数据统计图】动态数据统计思路案例(动态,排序,动态数组(重点推荐))七(129)

需求&#xff1a;前端根据后端的返回数据&#xff1a;画统计图&#xff1b; 说明&#xff1a; 1.X轴为地域&#xff0c;Y轴为地域出现的次数&#xff1b; 2. 动态展示&#xff08;有地域展示&#xff0c;没有不展示&#xff0c;且高低排序&#xff09; Demo案例&#xff1a; …

硬件SPI口扩展

在工控板设计中&#xff0c;经常会遇到扩展IO。具有相同的功能电路板接口相同&#xff0c;所以很容易采用排线方式连接到CPU主控板上&#xff0c;这种排线连接&#xff0c;我称之为总线。 现在的CPU引脚多&#xff0c;不扩展IO&#xff0c;使用模拟SPI&#xff0c;也可以实现&…

获取Linux内核源码

在嵌入式平台上做Linux开发的时候&#xff0c;我们用的kernel都是芯片厂家移植到自家平台上的&#xff0c;但是最初的原生Linux内核的源码是从哪里来的呢&#xff1f;下面我们介绍一下怎么获取原生的Linux源码。 从Linux社区获取内核kernel源码 Linux社区的官方网站是 https:…