css垂直水平居中(父元素宽高有无情况)+ flex用法

垂直水平居中----6种方法

知道父元素具体宽高时:

  1. 父元素设置display:flex, 子元素设置 margin:auto.
  2. 父元素相对定位,子元素绝对定位 4个属性都设置0,再设置margin:auto.
  3. 父元素相对定位,子元素绝对定位,left:50%,top:50%,transform:translate(-50%,-50%)
  4. flex布局,父元素 display:flex,justify-content:center,align-items:center
  5. 网格布局:父元素 display:grid,justify-content:center,align-items:center
  6. 父元素display:table-cell,vertical-align:middle(垂直居中),子元素margin:auto(水平居中)
/*第一种*/.parent{width: 600px;height: 600px;display: flex;border: 1px solid royalblue;}.child{width: 100px;height: 100px;background: red;margin: auto;}
/*第二种*/.parent{width: 600px;height: 600px;border: 1px solid green;position: relative;}.child{width: 100px;height: 100px;background: red;position: absolute;top: 0;left: 0;right: 0;bottom: 0;margin:auto;}
/*第三种*/.parent{width: 600px;height: 600px;border: 1px solid green;position: relative;}.child{width: 100px;height: 100px;background: red;position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);}
/*第四种*/.parent{width: 600px;height: 600px;border: 1px solid green;display: flex;justify-content: center;align-items: center;}.child{width: 100px;height: 100px;background: red;}/*第五种*/.parent{width: 600px;height: 600px;border: 1px solid green;display: grid;justify-content: center;align-items: center;}.child{width: 100px;height: 100px;background: red;}/*第六种*/.parent{width: 600px;height: 600px;border: 1px solid green;display: table-cell;vertical-align: middle;}.child{width: 100px;height: 100px;background: red;margin: auto;}

未知父元素宽高时:

  1. 可以设置html,body{display:flex,justify-content:center,align-items:center},宽高100%
  2. 可以设置html,body{width:100%,height:100%},子元素相对定位 position: relative;top: 50%;left:50%;transform: translate(-50%,-50%);
  3. 可以设置html,body宽高百分比,子元素相对定位position: relative;margin:0 auto;top:50%;transform:translateY(-50%)
  4. 可以设置html,body宽高百分百,body{display:flex},子元素margin:auto
 /*4*/html,body{width: 100%;height: 100%;padding: 0; margin: 0;}body{display: flex}.box{width: 400px;height: 400px;background-color: aquamarine;margin: auto; //居中}

注意点

为什么设置css-margin:auto 只能实现水平居中,不能实现垂直居中?
因为auto的作用是:自动填充剩余空间。
块级元素在水平方向上自动填充一整行,而在垂直方向上不会自动填充。所以块级元素在水平方向上,左右的margin会平分剩余空间,在垂直方向上,没有剩余空间可平分,即只呈现水平居中的效果。

flex用法

弹性布局
具有6个属性:

flex-direction | flex-wrap | flex-flow | justify-content | align-items | align-content

flex-direction:属性决定主轴的方向 flex-direction:row | row-reverse | column | column-reverse
row(默认):主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右侧。
column:主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。

flex-wrap : 默认项目都排在一条线上,如果一条线上排不下,如何换行,flex-wrap:nowrap | wrap | wrap-reverse
nowrap:不换行。
wrap:换行,第一行在上方。
wrap-reverse:换行,第一行在下方。

flex-flow属性是 flex-direction和 flex-wrap 简写形式。默认值为 row nowrap
flex-flow: flex-direction flex-wrap

justify-content :属性定义了项目在主轴上的对齐方式 justify-content:flex-start | flex-end | center | space-between | space - around | space-evenly
flex-start:从头开始对齐。
flex-end:从尾开始对齐。
center :居中。
space-butween:两端对齐,项目之间间隔都相等。
space-around:只有内部项目彼此之间的间距相等,第一项和最后一项对边缘的距离将分配中间一半的间距。
space-evenly:项目分布使得任何两个项目之间的间距(以及边缘的空间)相等。

align-items :属性定义项目在交叉轴上如何对齐 align-items:flex-start | flex-end | center | baseline | stretch
flex-start:交叉轴的起点对齐。
flex-end:交叉轴上终点对齐。
center :交叉轴上中点对齐。
baseline :项目的第一行文字的基线对齐。
stretch(默认):如果项目未设置高度或设置auto,将占满整个容器的高度。

align-content属性定义了多根轴线的对齐方式,如果项目只有一根轴线,不起作用 align-content: flex-start | flex-end | center | space-between | space-around | stretch;
同上。
stretch(默认值):轴线占满整个交叉轴。

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

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

相关文章

sql管理工具archery简介

在平时的工作过程中,我们肯定会遇到使用sql平台的场景,业内也有很多工具,类似阿里云的dms,但是这个是和云厂商绑定的,我们可能一般没有用到阿里云组件就比较困难了,那还有什么选项了,经过调研&a…

leetcode常见错误

2024年1月26日 Line 1037: Char 34: runtime error: addition of unsigned offset to 0x503000000070 overflowed to 0x50300000006c (stl_vector.h) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c…

redis主从复制薪火相传

一.主从复制 1、是什么 主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 2、能干嘛 读写分离,性能扩展(主 写 从 读) 容…

yolov5转onnx到ncnn

测试代码6.2 检测这一套都没啥说的主要在onnx转ncnn这步 python export.py --data data/xuehua.yaml --weights runs/train/exp4/weights/best.pt --trainpython -m onnxsim runs/train/exp4/weights/best.onnx runs\train\exp4\weights\best-sim.onnx(这步重要),如…

字符串学习笔记

一、字符串的概念 字符串是一种在编程中常用的数据类型,用于表示文本数据。在 Python 中,字符串是不可变的序列,可以包含字母、数字、符号等字符。Python 允许使用单引号 () 或双引号 (") 来创建字符串。 strOne string strTwo &quo…

Python学习从0到1 day9 Python函数

苦难是花开的伏笔 ——24.1.25 函数 1.定义 函数:是组织好的,可重复使用的,用来实现特定功能的代码段 2.案例 在pycharm中完成一个案例需求:不使用内置函数len(),完成字符串长度的计算 #统计字…

实习记录——第四天

今天还是学了一天: 我的日报: 1.25日总结: 一、完成三道CTF题目: 信息收集题目,目录扫描,但是我的工具没扫出来,往工具字典里加入了字段;sql注入题目,考察布尔盲注&…

网站无法通过域名访问有哪些原因?

如果网站无法通过域名访问,可能涉及多个方面的问题。以下是一些可能导致这种情况的原因和解决方法: 域名解析问题: DNS配置错误: 检查域名的DNS配置是否正确,确保域名解析到正确的IP地址。 DNS缓存问题: 如…

[go] 中介者模式

设计模式 中介者模式是一种行为设计模式, 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行合作。 模型说明 组件(Component)是各种包含业务逻辑的类。每个组件都有一个…

伊恩·斯图尔特《改变世界的17个方程》薛定谔方程笔记

想法是等这学期学到薛定谔方程后再把整份完善下。 它告诉我们什么? 这个方程不是把物质作为粒子,而是作为波,并描述这样的波如何传播。 为什么重要? 薛定谔方程是量子力学的基础,它与广义相对论一起构成了当今最有效的…

NGINX如何实现rtmp推流服务

最近直播大火,直播推流软件遍地开花,那么用NGINX如何进行推流呢?下面我们就简单的介绍一下用NGINX的rtmp模块如何实现视频推流,我们主要从一下几点介绍: 推流拉流推流认证拉流认证 package mainimport ("fmt&qu…

Vue 3.0中Treeshaking特性(详细解析)

文章目录 一、是什么二、如何做Vue2 项目Vue3 项目 三、作用参考文献 一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术,专业术语叫 Dead code elimination 简单来讲,就是在保持代码运行结果不变的前提下,去除…

ctfshow-命令执行

大佬文章 L i n u x \rm Linux Linux 下空格绕过 无参数 r c e \rm rce rce 无字符 r c e \rm rce rce web29 通配符: *:匹配任意多个字符 ?:匹配任意一个字符 []:匹配某个范围的字符( [ a d ] [ad] [ad] 表示 …

day05-盒子模型

01-选择器 结构伪类选择器 基本使用 作用:根据元素的结构关系查找元素。 li:first-child {background-color: green; } :nth-child(公式) 提示:公式中的n取值从 0 开始。 伪元素选择器 作用:创建虚拟元素(伪元素)…

基于单片机的感应自动门控制器的设计

摘要 现如今自动化、信息化程度越来越高, 单片机的应用领域也越来越广, 成为人们生活不可或缺的一部分。随省社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便千生活的自动控制系统开始进入了人们的生活,以单片机为核…

vue项目中如何使用SVG图标

IconFont使用的不足:图标添加、修改、删除以后在线链接需要更新离线资源需要重新下载项目代码需要同步更新。 在项目不断更新和迭代的过程中,图标的增减变化还没有稳定的情况下,开发人员的工作效率会明显下降。 那么有没有一个图标应用方式…

【C++】list讲解及模拟

目录 list的基本介绍 list模拟实现 一.创建节点 二.迭代器 1.模版参数 2.迭代器的实现: a. ! b. c. -- d. *指针 e.&引用 整体iterator (与const复用): 三.功能实现 1.模版参数 2.具体功能实现: 2.1 构造函数 2.2 begi…

【操作系统】实验九 写一个设备驱动程序

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

QT基础篇(17)QML编程基础

1.QML概述 QML(Qt Meta-Object Language)是一种声明性语言,它被用于描述Qt框架中用户界面的结构和行为。QML提供了一种简洁、灵活的方式来创建动态和交互式的界面。 QML基于JavaScript语法,通过使用QML类型和属性来定义界面的元…

6.【SpringBoot3】登录优化-redis

1. SpringBoot 集成 redis 示例 在之前实现的登录接口中,用户登录成功后会生成一个令牌响应给浏览器,之后浏览器访问其他接口时,都要携带该令牌,接受拦截器的检验,如果令牌有效就放行,允许访问后续接口&am…