前端页面布局之【Flex布局】详解

目录

  • 🌟前言
  • 🌟浏览器支持
  • 🌟Flex简介
  • 🌟Flex基本概念
  • 🌟容器属性
    • 🌟项目排列方向
    • 🌟项目包裹方式
    • 🌟项目水平对齐方式
    • 🌟项目的垂直对齐方式
    • 🌟多行对齐方式
  • 🌟项目的属性
    • 🌟项目的顺序
    • 🌟项目占比(放大)
    • 🌟项目占比(缩小)
    • 🌟项目所占空间大小
    • 🌟项目自己的对齐方式
  • 🌟案例
  • 🌟推荐
  • 🌟写在最后

在这里插入图片描述

🌟前言

布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。2009年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

🌟浏览器支持

在这里插入图片描述

🌟Flex简介

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。

.box{display: flex; //(新版)display:-webkit-box; (旧版)}

注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。

🌟Flex基本概念

  • 采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。
  • 它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”
  • 主轴:容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end; 交叉轴的开始位置叫做cross start,结束位置叫做cross end。
  • 交叉轴:项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

在这里插入图片描述

🌟容器属性

🌟项目排列方向

flex-direction 属性决定主轴的方向

属性表现表现图示
row(默认值)从左到右在这里插入图片描述
row-reverse从右到左在这里插入图片描述
column从上到下在这里插入图片描述
column–reverse从下到上在这里插入图片描述
flex-direction: row | row-reverse | column | column-reverse

兼容写法

-webkit-box-orient:horizontal | vertical
-webkit-box-direction:normal |reverse
属性表现
horizontal水平方向
vertical垂直方向
normal顺序正常
reverse反向

🌟项目包裹方式

flex-wrap 默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

属性表现表现图示
nowrap(默认)不换行在这里插入图片描述
wrap换行在这里插入图片描述
wrap-reverse:换行,第一行在下方在这里插入图片描述
flex-wrap:nowrap | wrap | wrap-reverse

🌟项目水平对齐方式

justify-content属性定义了项目在主轴上的对齐方式。它可能取5个值,具体对齐方式与轴的方向有关。下面假设主轴为从左到右。

属性表现表现图示
flex-start(默认值)左对齐在这里插入图片描述
flex-end右对齐在这里插入图片描述
center居中在这里插入图片描述
space-between两端对齐,项目之间的间隔都相等。在这里插入图片描述
space-around每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。在这里插入图片描述
justify-content:flex-start | flex-end | center | space-between | space-around

兼容写法

-webkit-box-pack: start | end |center |justify
属性表现
start左对齐
end右对齐
center居中
justiry两端对齐

🌟项目的垂直对齐方式

align-items属性定义项目在交叉轴上如何对齐。它可能取5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。

align-items:flex-start | flex-end | center | baseline | stretch
属性表现表现图示
stretch(默认值)如果项目未设置高度或设为auto,将占满整个容器的高度。在这里插入图片描述
flex-start交叉轴的起点对齐在这里插入图片描述
flex-end交叉轴的终点对齐在这里插入图片描述
center交叉轴的中点对齐。在这里插入图片描述
baseline项目的第一行文字的基线对齐。在这里插入图片描述

兼容写法

属性描述
start顶对齐
end底对齐
center居中对齐
-webkit-box-align:start | end |center

🌟多行对齐方式

align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

属性表现表现图示
flex-start交叉轴的起点对齐在这里插入图片描述
flex-end交叉轴的终点对齐在这里插入图片描述
center交叉轴的中点对齐。在这里插入图片描述
space-between与交叉轴两端对齐,轴线之间的间隔平均分布。在这里插入图片描述
space-around每根轴线两侧的间隔都相等。轴线之间的间隔比轴线与边框的间隔大一倍在这里插入图片描述
stretch(默认值)轴线占满整个交叉轴。在这里插入图片描述
align-content:  flex-start | flex-end | center | space-between | space-around | stretch

🌟项目的属性

🌟项目的顺序

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

order:<int>

在这里插入图片描述

兼容写法

-webkit-box-ordinal-group:<int>

🌟项目占比(放大)

  • flex-grow

flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍

flex-grow:<int>

在这里插入图片描述

在这里插入图片描述

  • 兼容写法
-webkit-box-flex : <int>

🌟项目占比(缩小)

  • flex-shrink

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。负值对该属性无效

 flex--shrink:<int>

在这里插入图片描述

🌟项目所占空间大小

  • flex-basis

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main
size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。

  flex-basis:<size> | auto

🌟项目自己的对齐方式

优先级高于容器的 align-items

  • align-self

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。该属性可能取6个值,除了auto,其他都与align-items属性完全一致。

  align-self: auto | flex-start | flex-end | center | baseline | stretch;

在这里插入图片描述

🌟案例

<!--防止移动端兼容问题我们布局是采用两行-->
<div class="rows"><div><a href="javascript:;">天猫</a></div><div><a href="javascript:;">聚划算</a></div><div><a href="javascript:;">天猫国际</a></div><div><a href="javascript:;">外卖</a></div><div><a href="javascript:;">天猫超市</a></div>
</div>
<div class="rows"><div><a href="javascript:;">天猫</a></div><div><a href="javascript:;">聚划算</a></div><div><a href="javascript:;">天猫国际</a></div><div><a href="javascript:;">外卖</a></div><div><a href="javascript:;">天猫超市</a></div>
</div>
/* 去掉默认样式*/
body,body *{-webkit-text-size-adjust: 100%;
}
body,h1{margin: 0;
}
a,input,button{/*-webkit-tap-highlight-color:none;*/-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
a{text-decoration: none;
}
button{-webkit-appearance: none;
}/*正式布局*/
.rows{display: -webkit-box;display: flex;
}
.rows div{/* 所有的盒子就一样大 */width: 0px;-webkit-box-flex: 1;flex-grow: 1;
}
.rows div a{font-size: 0.44rem;color: #666;text-align: center;line-height: 1.04rem;display: block;
}
.rows div a:before{content: '';display: block;margin: 0 auto;width: 1.72rem;height: 1.7rem;background: red;background-size: 1.72rem 1.7rem;
}
.rows:nth-of-type(1) div:nth-of-type(1) a:before{background-image: url(img/1.webp);
}
.rows:nth-of-type(1) div:nth-of-type(2) a:before{background-image: url(img/2.webp);
}
.rows:nth-of-type(1) div:nth-of-type(3) a:before{background-image: url(img/3.webp);
}
.rows:nth-of-type(1) div:nth-of-type(4) a:before{background-image: url(img/4.webp);
}
.rows:nth-of-type(1) div:nth-of-type(5) a:before{background-image: url(img/5.webp);
}
.rows:nth-of-type(2) div:nth-of-type(1) a:before{background-image: url(img/6.webp);
}
.rows:nth-of-type(2) div:nth-of-type(2) a:before{background-image: url(img/7.webp);
}
.rows:nth-of-type(2) div:nth-of-type(3) a:before{background-image: url(img/8.webp);
}
.rows:nth-of-type(2) div:nth-of-type(4) a:before{background-image: url(img/9.webp);
}
.rows:nth-of-type(2) div:nth-of-type(5) a:before{background-image: url(img/10.webp);
}

🌟推荐

最后推荐大家看看阮一峰老师的Flex实例教程

点击跳转

🌟写在最后

更多前端知识请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

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

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

相关文章

FP-Growth算法全解析:理论基础与实战指导

目录 一、简介什么是频繁项集&#xff1f;什么是关联规则挖掘&#xff1f;FP-Growth算法与传统方法的对比Apriori算法Eclat算法 FP树&#xff1a;心脏部分 二、算法原理FP树的结构构建FP树第一步&#xff1a;扫描数据库并排序第二步&#xff1a;构建树 挖掘频繁项集优化&#x…

14:00面试,14:06就出来了,这面试问的过于变态了。。。

前言 刚从小厂出来&#xff0c;没想到在另一家公司我又寄了。 在这家公司上班&#xff0c;每天都要加班&#xff0c;但看在钱给的比较多的份上&#xff0c;也就不太计较了。但万万没想到十月一纸通知&#xff0c;所有人不准加班了&#xff0c;不仅加班费没有了&#xff0c;薪资…

NPDP和PMP,产品经理应该考哪个?

PMP教的是如何做一个项目&#xff0c;NPDP教的是如何做一个产品。 而在一个产品开发过程中&#xff0c;PMP知识体系讲述的是如何给出一个“产品”&#xff0c;NPDP知识体系讲述的是产品开始到结束的过程。虽然产品的生命周期比项目的生命周期长&#xff0c;但从知识体系看&…

k8s-9 ingress-nginx 特性

TLS加密 创建证书 测试 auth认证 创建认证文件 rewrite重定向 进入域名 会自动重定向hostname.html 示例二&#xff1a; 测试 后面必须跟westos 这个关键字 canary金丝雀发布 基于header灰度 场景&#xff1a;版本的升级迭代&#xff0c;比如一个service 升级到另…

VUE3照本宣科——eslint与prettier

VUE3照本宣科——eslint与prettier VUE3照本宣科系列导航 前言一、eslint1.配置文件2.配置规则3.忽略错误 二、prettier三、总结 VUE3照本宣科系列导航 1.VUE3照本宣科——认识VUE3 2.VUE3照本宣科——应用实例API与setup 3.VUE3照本宣科——响应式与生命周期钩子 4.VUE3照本宣…

vue脚手架项目创建及整理

环境准备 首先安装node,如果项目需要指定node版本 可以按装nvm控制版本 创建vue vue create 项目名选择对应版本 这边我是选的自定义&#xff0c;就是第三个选项&#xff0c;可以提前给我下好 router vuex什么的&#xff08;空格&#xff09; 选项如图标注 等待下载所需的…

课题学习(五)----阅读论文《抗差自适应滤波的导向钻具动态姿态测量方法》

一、简介 抗差自适应滤波&#xff1a;利用等价权函数和自适应因子合理的分配信息&#xff0c;有效地滤除钻具振动对动态姿态测量的影响。、   针对导向钻井工具动态测量受钻具振动的影响而导致测量不准确的问题&#xff0c;提出一种抗差自适应滤波的动态空间姿态测量方法。通…

深入了解归并排序:原理、性能分析与 Java 实现

归并排序&#xff08;Merge Sort&#xff09;是一种高效且稳定的排序算法&#xff0c;其优雅的分治策略使它成为排序领域的一颗明珠。它的核心思想是将一个未排序的数组分割成两个子数组&#xff0c;然后递归地对子数组进行排序&#xff0c;最后将这些排好序的子数组合并起来。…

解决Mysql8.0不存在mysql.proc表

摘自MySQL8.0官方文档&#xff1a; The parameters and routines data dictionary tables together supersede the proc table from before MySQL 8.0. 大概意思说&#xff0c;在mysql database中parameters表和routines数据字典表一起取代了MySQL 8.0之前的proc表。 MySQL 8.0…

selenium查找网页如何处理网站资源一直加载非常卡或者失败的情况

selenium查找网页如何处理网站资源一直加载失败的情况 selenium获取一个网页&#xff0c;某个网页的资源卡了很久还没有加载成功&#xff0c;如何放弃这个卡的数据&#xff0c;继续往下走 有2钟方式。通常可以采用下面的方式一来处理这种情况 方式一、WebDriverWait 这种方式…

SpringBoot 如何使用 JWT 实现身份认证和授权

Spring Boot 使用 JWT 实现身份认证和授权 JSON Web Token&#xff08;JWT&#xff09;是一种用于在网络应用之间安全传递信息的开放标准。它使用了一种紧凑且独立于语言的方式在各方之间传递信息&#xff0c;通常用于在客户端和服务器之间验证用户身份和授权访问资源。本文将…

细粒度特征提取和定位用于目标检测:PPCNN

1、简介 近年来&#xff0c;深度卷积神经网络在计算机视觉上取得了优异的性能。深度卷积神经网络以精确地分类目标信息而闻名&#xff0c;并采用了简单的卷积体系结构来降低图层的复杂性。基于深度卷积神经网络概念设计的VGG网络。VGGNet在对大规模图像进行分类方面取得了巨大…

MES生产执行解决方案提供商,可定制工厂MES精益制造管理系统-亿发

亿发智能制造MES系统&#xff1a;驱动制造业创新&#xff0c;实现数字化生产和管理 MES管理系统以实时协同思想为核心&#xff0c;着重于精益生产计划的实施和车间实时调度。对生产现场和业务经营的数据进行全面的系统化管理&#xff0c;以数据分析的结果为基础&#xff0c;协助…

攻防世界-fakebook

打开题目链接 尝试弱口令登录 失败 随便注册 点击admin后跳转到下面这个页面 显示的是注册用户信息&#xff0c;观察url发现no1&#xff0c;猜测存在注入 用单引号测试一下&#xff0c;报错&#xff0c;确实存在SQL注入 使用order by 判断字段数 ?no1 order by 5 5的时候…

KylinOSv10系统k8s集群启动mysql5.7占用内存高的问题

问题现象 麒麟系统搭建k8s集群 mysql的pod启动失败 describe查看ommkill&#xff0c;放大limit资源限制到30G依旧启动失败 系统 报错信息 原因 内存占用太高 open_files_limit初始化太高 解决&#xff1a; 1、更换镜像 链接: https://pan.baidu.com/s/1b9uJLcc5Os0uDqD1e…

深度学习——深度学习计算一

深度学习——深度学习计算一 文章目录 前言一、层和块1.1. 自定义块1.2. 顺序块1.3. 在前向传播函数中执行代码1.4. 小结 二、参数管理2.1. 参数访问2.1.1. 目标参数2.1.2. 一次性访问所有参数2.1.3. 从嵌套块收集参数 2.2. 参数初始化2.2.1. 内置初始化2.2.2. 自定义初始化 2.…

路径总和 III

题目链接 路径总和 III 题目描述 注意点 二叉树的节点个数的范围是 [0,1000]求该二叉树里节点值之和等于 targetSum 的 路径 的数目 解答思路 可根据前缀和的思路解决本题&#xff0c;前缀和表示从根节点开始&#xff0c;往左或往右组成的路径和&#xff0c;统计从根节点开…

Pikachu靶场——跨站请求伪造(CSRF)

文章目录 1. 跨站请求伪造&#xff08;CSRF&#xff09;1.1 CSRF(get)1.2 CSRF(post)1.3 CSRF Token1.4 CSRF漏洞防御 1. 跨站请求伪造&#xff08;CSRF&#xff09; 还可以参考我的另一篇文章&#xff1a;跨站请求伪造(CSRF) 全称Cross-site request forgery&#xff0c;翻译…

爬虫破解:解决CSRF-Token反爬问题 - 上海市发展和改革委员会

标题:爬虫破解:解决CSRF-Token反爬问题 - 上海市发展和改革委员会 网址:https://fgw.sh.gov.cn/fgw-interaction-front/biz/projectApproval/home MD5加密:ca7f5c978b1809d15a4b228198814253 需求文档 采集数据如下所示: 解决反爬思路 这里只提供解决思路,解决反爬,…