CSS:水平垂直居中

news2024/11/19 9:32:40

水平垂直居中效果如下:
在这里插入图片描述
HTML:

<div class="parent">
  <div class="child"></div>
</div>

公共的 CSS:

.parent {
  width: 300px;
  height: 300px;
  background-color:#d0e4fe;
}

.child {
  width: 100px;
  height: 100px;
  background-color:orange;
}

一. 行内元素

方法一:text-align + vertical-align

.parent {
  line-height: 300px;
  text-align: center;	/* 水平居中*/
}

.child {
  display: inline-block;	/* 子元素设置为行内块元素*/
  vertical-align: middle;	/* 垂直居中*/
}

二. position 定位

情况一:居中元素定宽定高

方法二:absolute + calc()
.parent {
  positon: relative;	/*使子元素相对父元素绝对定位*/
}

.child {
  position: absolute;
  top: calc(50% - 50px);	/*垂直居中*/
  left: calc(50% - 50px);	/*水平居中*/
}

注意:在 calc() 函数中,运算符前后必须要有空格,否则会导致计算错误。

方法三:absolute + 负 margin
.parent {
  positon: relative;	/*使子元素相对父元素绝对定位*/
}

.child {
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -50px;
  margin-left: -50px;
}

margin 负值:当 margin-left 或 margin-top 属性值为负值时,元素会根据负值的大小向左或向上偏移。当 margin-right 或 margin-bottom 属性值为负值时,元素的位置不会改变,但会影响其身后的元素。这种情况相当于元素宽度或高度缩小,后续的元素会向该元素偏移。

方法四:absolute + margin auto
.parent {
  positon: relative;	/*使子元素相对父元素绝对定位*/
}

.child {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
}

margin 设置为 auto 表示自动填充剩余空间。

由于块级元素默认宽度为父元素的宽度,默认高度为内容的高度。因此,在水平方向上,margin: auto 使得左右平分剩余空间达到水平居中的效果。但在垂直方向上,由于没有剩余空间,所以 margin:auto 不能实现垂直居中。

要想通过 margin: auto 实现垂直居中,需要将子元素设置为 position: absolute,同时需要设置 left: 0; right: 0; top: 0; bottom: 0; 来使子元素在水平和垂直方向上都填满父元素,这样再设置 margin: auto 就可以实现水平和垂直方向上都平分剩余空间,达到居中效果。

情况二:不需要子元素固定宽高

方法五:absolute + transform
.parent {
  positon: relative;	
}

.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

实现原理:top 和 left 表示向下和向右偏移父元素宽度或高度的 50%,translate(-50%, -50%) 表示向上和向左偏移自身宽度或高度的 50%,从而实现上下左右居中。

三. flex 布局

方法六:flex

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

.parent {
  display: flex;
}

.child {
  margin: auto;
}

四. grid 布局

方法七:grid

.parent {
  display: grid;
  justify-items: center;
  align-items: center;	/*简写为 place-items: center; */
}

.parent {
  display: grid;
  justify-content: center;
  align-content: center;	/*简写为 place-content: center; */
}

.parent {
  display: grid;  
}

.child {
  justify-self: center;
  align-self: center;	/*简写为 place-self: center; */
}

.parent {
  display: grid;  
}

.child {
  margin: auto;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二篇:MySQL安装与配置(基于小皮面板(phpstudy))

在第一篇中介绍了数据库的相关概念&#xff0c;了解到SQL是用来操作数据库管理系统的语言&#xff0c;因此要学习数据库技术&#xff0c;数据库管理系统的配备是必不可少的&#xff01; 并且出于流行性与实惠性的双考量而选择MySQL这款数据库管理系统软件 一&#xff0c;工具推…

centos安装inpanel

前置条件 安装python yum -y install python 安装 cd /usr/local git clone https://gitee.com/WangZhe168_admin/inpanel.git cd inpanel python install.py 安装过程需要设置账户 密码 端口号 我设置的是admin:admin 10050 使用 打开浏览器,输入 http://192.168.168.…

mysql 多数据源

依赖 <dependencies><!--mysql连接--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--多数据源--><dependency><g…

Node.js+Express+Mysql服务添加环境变量

1、使用dotenv插件 1&#xff09;安装插件&#xff1a;npm install dotenv-cli --save-dev 2&#xff09;在项目根目录下添加对应的 .env 配置文件&#xff1b; // .env配置文件内容 MODEdevelopment, BASE_URLhttp://127.0.0.1:80813) 在启动命令中设置对应的加载文件&#…

从小白到入门webrtc音视频通话

0. 写在前面 先会骑车&#xff0c;再研究为什么这么骑&#xff0c;才是我认为学习技术的思路&#xff0c;底部付了demo例子&#xff0c;根据例子上面的介绍即可运行。 1. 音视频通话要用到的技术简介 websocket 介绍&#xff1a;1. 服务器可以向浏览器推送信息&#xff1b;2…

多线程 --- [ 线程概念,线程控制 ]

目录 1. 补充知识 1.1. 什么叫做进程呢&#xff1f; 1.2. 堆区的知识补充 1.3. 虚拟地址到物理地址的转化过程 2. 线程概念 3. 见见代码 3.1. pthread_create 4. Linux进程 && 线程 4.1. 线程如何看待进程内部的资源 4.2. 进程 vs 线程 4.3. 线程的优点 4.…

vue+vite项目,无法使用绝对地址动态导入

博主的桌面工具软件已经正式开发&#xff0c;获取方式&#xff1a; 可以关注我的小程序【中二少年工具箱】获取。&#xff08;若小程序更新有延迟&#xff0c;可先收藏小程序&#xff09; 通过下载链接 百度网盘: 链接&#xff1a;https://pan.baidu.com/s/15zDnSoEzJGSZLjpD…

JVM 性能调优 - Java 虚拟机内存体系(1)

Java 虚拟机我们简称为 JVM&#xff08;Java Virtual Machine&#xff09;。 Java 虚拟机在执行 Java 程序的过程中&#xff0c;会管理几个不同的数据区域。如下图所示&#xff1a; 下面我会介绍这几个数据区的特点。 堆 堆区的几个特点&#xff1a; 线程共享。启动时创建堆…

初识网络基础

一、网络的发展 1.独立模式: 计算机之间相互独立; 在早期计算机是孤立的单机系统&#xff0c;无法互相通信或共享资源。 由于缺乏互联性&#xff0c;早期的计算机系统无法实现有效的资源共享。只能依靠光驱和网盘经行将数据拷贝&#xff0c;线下将数据经行传输&#xff0c;每台…

LeetCode:1696. 跳跃游戏 VI(DP, Java)

目录 1696. 跳跃游戏 VI 题目描述&#xff1a; 实现代码与解析&#xff1a; 一眼dp&#xff08;超时&#xff0c;后面给出优化思路和代码&#xff09; 原理思路&#xff1a; 优化后代码&#xff1a; 1696. 跳跃游戏 VI 题目描述&#xff1a; 给你一个下标从 0 开始的整数…

VPP学习-VPP初始化流程

概念 VPP作为一个开源的、高性能的用户态网络协议栈&#xff0c;以进程的形式运行于Linux或&#xff08;类unix&#xff09;系统下&#xff0c;即VPP实际是一个用户进程&#xff0c;VPP启动后可通过"ps -ef | grep vpp"命令查看。 VPP启动 用户态进程启动都有一个ma…

第7节、双电机直线运动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;前面章节主要介绍单个电机控制&#xff0c;本节内容介绍两个电机完成Bresenham直线运动 一、Bresenham直线算法介绍 Bresenham直线算法由Jack Elton Bresenham于1962年在IBM开发&#xff0c;最初用于计…

Akamai 如何揪出微软 RPC 服务中的漏洞

近日&#xff0c;Akamai研究人员在微软Windows RPC服务中发现了两个重要漏洞&#xff1a;严重程度分值为4.3的CVE-2022-38034&#xff0c;以及分值为8.8的CVE-2022-38045。这些漏洞可以利用设计上的瑕疵&#xff0c;通过缓存机制绕过MS-RPC安全回调。我们已经确认&#xff0c;所…

Transformer实战-系列教程7:SwinTransformer 算法原理 1

&#x1f6a9;&#x1f6a9;&#x1f6a9;Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 1、SwinTransformer SwinTransformer 可以看作为一个backbone用来做分类、检测、分割都是非常好…

紫光展锐M6780丨一语即达,“声”临其境

在前面四期&#xff0c;紫光展锐针对M6780的显示技术进行了系列揭秘。虽名为“智能显示芯片”&#xff0c;但M6780的魅力远不止于超高清智能显示&#xff0c;更有智能语音交互功能&#xff0c;助力打造数字世界的交互新体验。 智能语音技术是一种基于人工智能和语音识别技术的创…

【CSS】margin塌陷和margin合并及其解决方案

【CSS】margin塌陷和margin合并及其解决方案 一、解决margin塌陷的问题二、避免外边距margin重叠&#xff08;margin合并&#xff09; 一、解决margin塌陷的问题 问题&#xff1a;当父元素包裹着一个子元素的时候&#xff0c;当给子元素设置margin-top:100px&#xff0c;此时不…

(已解决)vueQQ邮箱注册发送验证码前端设计,如何发送验证码设计倒计时

我们之前已经通过前端测试成功完成qq邮箱动态验证码发送&#xff08;未使用redis&#xff0c;我准备自己了解完后&#xff0c;后期有时间补上&#xff09; 衔接文章&#xff1a; 1&#xff1a; spingboot 后端发送QQ邮箱验证码 2&#xff1a; 这段代码建设图形化界面 <di…

分享springboot框架的一个开源的本地开发部署教程(若依开源项目开发部署过程分享持续更新二开宝藏项目MySQL数据库版)

1首先介绍下若依项目&#xff1a; 若依是一个基于Spring Boot和Spring Cloud技术栈开发的多租户权限管理系统。该开源项目提供了一套完整的权限管理解决方案&#xff0c;包括用户管理、角色管理、菜单管理、部门管理、岗位管理等功能。 若依项目采用前后端分离的架构&#xf…

Nacos1.X源码解读(待完善)

下载源码 1. 克隆git地址到本地 # 下载nacos源码 git clone https://github.com/alibaba/nacos.git 2. 切换分支到1.4.7, maven编译(3.5.1) 3. 找到启动类com.alibaba.nacos.Nacos 4. 启动VM参数设置单机模式, RUN 启动类 -Dnacos.standalonetrue 5. 启动本地服务注册到本…

Spark SQL调优实战

1、新添参数说明 // Driver和Executor内存和CPU资源相关配置 --是否开启executor动态分配&#xff0c;开启时spark.executor.instances不生效 spark.dynamicAllocation.enabledfalse --配置Driver内存 spark.dirver.memory5g --driver最大结果大小&#xff0c;设置为0代…