前端知识——css之flex布局

news2025/2/24 17:20:59

1.基本概念

flex布局是一种布局模型,经常被称之为flexbox,使用flex布局之后,他会给子元素提供强大空间分配和对齐能力。
            
在没有使用flex布局之前,常用布局有:流式布局,浮动布局,定位布局等等。缺陷是子元素需要自己控制自己在父元素中的位置,还要注意父元素高度坍塌。
            
flex的优点就是避免不灵活的布局形式,创建更多种布局模式供你选择,解决了子元素的对齐和分布与 响应式等问题。缺点是只能依靠自身的布局模式,稍有变化则无法改变。 

2.flex的指定

 (1)display属性
            
给任意元素声明display:flex或者声明display:inline-flex(保持内联特性,用的很少)都会创建弹性布局。 

  • 如果你使用flex,那么你先要知道布局结构
  • 给外层元素定义flex,把外层元素当“容器”元素,来控制其内部的子项元素“项目”的排列方式

                
(2)注意事项
            

  • 依靠容器元素的属性,控制的是项目的排列方式,也就是说控制的不是自身,而是子元素            
  • 设置为flex布局以后,子元素的float,clear都失效了,换言之子元素不用浮动了,父元素也不用清除浮动了         
  • 设置了flex的元素,子元素会“块状化”。换言之,父元素使用了display:flex其子元素都会变成块级元素。 

3.主轴的排列方向 

(1)行模式和列模式
                

  • 行模式就是子元素(项目)在容器中以行(x轴)方向排列的模式 
  • 列模式就是子元素(项目)在容器中以列(y轴)方向 

 

 4.主轴排序

主轴方向可以取四个值,注意这四个值都要在容器中写的

flex-direction: row;  /* 默认行模式下从左(开始)至右(结束) */
flex-direction: row-reverse;  /* 行模式下从右(结束)至左(开始) */
flex-direction: column;  /* 列模式下从上(开始)至下(结束) */
flex-direction: column-reverse;  /* 列模式下从下(结束)至上(开始) */

 5.换行模式

flex-wrap 属性来控制flex子项(项目)单行显示换行和不换行,默认情况不换行,即使容器无法承受所有项目,他们会按照等比例压缩,强制在主轴方向显示。

/* 默认不换行 */
flex-wrap: nowrap;
/* 换行 */
flex-wrap: wrap;

 6.主轴上的对齐方向

justify-content  定义了项目在主轴方向上的对齐方式,需要注意的是,要区别行模式和列模式,当然主要可以以行模式为例。

/*主轴对齐方式*/
/*默认起点对齐*/
justify-content: flex-start;
/*结束点对齐*/
justify-content: flex-end;
/*居中对齐*/
justify-content: center;
/*两端对齐*/
justify-content: space-between;
/*周围分布相同空间*/
justify-content: space-around;
/*均匀分布*/
justify-content: space-evenly;

 

7.交叉轴对齐方式

 align-items指的是交叉轴的对齐方式,如果没有指定交叉轴对齐方式默认是 normal 项目无高度,默认撑满容器高度。

/*交叉轴对齐*/
/*起点对齐*/
align-items: flex-start;
/*终点对齐*/
align-items: flex-end;
/*居中对齐*/
align-items: center;

 

8.多轴线对齐 

align-content属性设置浏览器如何沿着弹性布局的横纵项,多轴线分布的空间方式。

/* 多轴线对齐 */
/* 多轴线,交叉轴起点 */
 align-content: flex-start; 
/*多轴线,交叉轴结束 */
 align-content: flex-end; 
/* 多轴线,居中 */
 align-content: center; 
/* 多轴线,两端对齐 */
align-content: space-between;
/* 多轴线,周围分布 */
align-content: space-around;
/*多轴线,均分*/
align-content: space-around;

9.多轴线对齐 

(1)项目的排序顺序
order项目在布局时的顺序,数值越小,,排列越靠前,默认值为0,可以是负数,数值没有单位。
(2)项目的增长规则:flex-grow规定了项目在flex容器中分配剩余空间的比例。负值无效,默认值0,数值不需要单位。

  • flex给某项目,前提容器中主轴方向是有剩余空间的
  • 项目本身是有自己的尺寸的,不放大时使用自身的长度尺寸。如:宽度设置了增长规则之后,原本尺寸失效了,使用增长规则的系数
  • 剩余空间的比重分配,是所有项目的flex-grow系数相加,之后再按比例分配
flex-gorw:1;
分配比例
.item:nth-child(2){
  /*放大规则,默认值0*/
  flex-grow: 1;  /*1/6*/
}
.item:nth-child(3){
  /*放大规则,默认值0*/
  flex-grow: 5;  /*5/6*/
}

 

(3)项目的收缩规则

 flex-shrink指定了flex项目的收缩规则,默认值1,不允许负值,没有任何单位
收缩前提,容器中无剩余空间,项目才会被压缩            

  • 设置了收缩比例后,元迟勋会在压缩时失效,而使用收缩系数                  
  • 收缩数值越大,压缩比例就越大             
  • 压缩的分配比重,缩小的尺寸是所有项目缩小系数之和,再按比例分配   
  • 强制不缩小,flex-shrink:0;
flex-shrink: 1; /*默认值1*/
flex-shrink: 2;/*缩小系数*/
flex-shrink: 0;/*坚决不缩小*/

(4)项目的初始化规则
flex-basis指定了flex项目元素在主轴方向上的初始化大小(尺寸),不允许负值,默认auto,如果指定该属性,则原本尺寸,将失效。

flex-basis:200px;

(5)项目的flex简写❤

 flex属性指的是,增长规则,缩小规则,初始化尺寸的集合写法。           

  • 默认flex:0 1 auto;                  
  • flex:1; 指增长规则系数                      
  • flex:0 0 200px; 指新项目在容器中不放大,也不缩小,初始化尺寸200px

【总结】         

  1. 用于容器的属性

  • display:flex 指定flex布局                       

  • flex-direction 主轴的排序(主轴方向),默认值row                        

  • flex-warp:nowarp 项目在容器中是否换行显示,常用之warp                        

  • justify-content 主轴的对齐方式                        

  • align-items交叉轴的对齐方式(一般用于单轴线)                        

  • align-content多轴线对齐方式

  1. 用于项目的属性

  • order:0项目的排序                       

  • flex-grow:0放大规则,默认0,不放大                      

  • flex-shrink:1 收缩规则,默认1,缩小;0,不缩小。                        

  • flex-basis:200px 指定主轴长度尺寸,不允许负值,默认值auto,优先级比主轴的尺寸高    

  • flex集合写法,放大,缩小,初始尺寸,默认0  1  auto。flex:1指放大,flex:0  0不放大不缩小    

 

 

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

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

相关文章

Vite代理解决跨域问题

Vite代理解决跨域问题 我们在编写前端项目的时候,经常会遇到跨域的问题,当我们访问后端 API 的 URL 路径时,只要域名、端口或访问协议(如 HTTP 和 HTTPS)有一项不同,就会被浏览器认定为跨域。另外我们也会…

小程序真机调试提示系统错误

Error: 系统错误,错误码:80051,source size 7935KB exceed max limit 2MB [20220929 16:18:58][wxfc8aa5984cac7f72] [1.06.2208010][win32-x64]// 说明你源文件大小为7985kb 超过了2M 所以编译失败解决方法 1. 压缩项目中的图或转为base64格式 …

【Spring+SpringMVC+Mybatis】Spring+SpringMVC+Mybatis实现前端到后台完整项目

文章目录🏴‍☠️SpringMVC简介SpringMVC是什么SpringMVC的基础架构SpringMVC的优点🏳️‍🌈SpringMVC接管Web说明三层框架SpringMVC的简单开发🚩Spring搭建🚩Mybatis搭建🏁 Spring整合Mybatis✅结语&#…

(element-ui)取消el-table的hover状态,取消高亮显示

文章目录前言方法一 ------覆盖css样式方法二------卸载掉背景颜色(类似于方法一)方法三------使用函数方法方法四------禁用鼠标悬浮怎么办?究极解决------将错就错前言 在使用element-ui的el-table表格的过程中,会发现&#xf…

VsCode配置JavaWeb(最新)

我个人是很喜欢VsCode的,开源免费、功能全面。所以为了方便,我把我几乎所有的运行都集成到了VsCode上来,JavaWeb也不例外。 前言 之前也在CSDN上看到有些博主写了配置方法,但是很不幸的是,插件Tomcat for java已经不可…

Web过滤器:Filter

Filter 概述工作原理生命周期web.xml配置的常用节点FilterConfig类过滤器链FilterChainHttpFilter的简化设计自动登录功能的改进验证登入页面的改进浏览器的缓存功能概述 Filter过滤器,是Servlet技术中最实用的技术,能够管理Web服务器的所有Web资源,实现信息拦截、权限访问控…

vue动态路由添加,vue-router的addRoute方法实现权限控制,添加根路由和子路由

addRoute路由分为静态路由和动态路由静态路由和动态路由的优缺点动态路由实现思路:动态路由遇到的问题与解决方式动态添加子路由路由分为静态路由和动态路由 静态路由和动态路由的优缺点 1、中大型项目,采用的都是动态路由方式,因为后台导航目录运营人…

Vue3如何封装组件?

🔥🔥🔥欢迎关注csdn前端领域博主: 前端小王hs 🔥🔥🔥email: 337674757qq.com 🔥🔥🔥前端交流群: 598778642 在开发Vue3项目的过程中,我们经常会使…

H5页面跳转微信小程序时:wx.miniProgram.navigateTo 报错 ‘wx‘ is not defined no-undef

有一个功能,需要从H5页面跳转到微信小程序,查了微信官方文档:只需要引入js文件,然后直接使用即可: 1:引用: 当然也可以下载下来直接引用项目具体位置的js文件 2: 使用: 然后一直报错…

vue3 hooks使用

vue3 hooks使用 今天我们稍微说一下 vue3 项目中的 hooks 的使用,其实这个 hooks 呢是和 vue2 当中的 mixin 是类似的,学习过 vue2 的小伙伴一定对 mixin 一定比较熟悉,就算没用过也一定了解过,也就是混入,通过 mixin …

useDark的使用方法以及Element-Plus深色主题切换案例(vue3)

useDark 顾名思义,是否使用深色模式,useDark它是通过读取localStorage/sessionStorage的存储值(key 是可自定义的)。从而设置html的class。VueUse的官方案例使用了Tailwind CSS 偏好的暗模式。因为我们不一定都用得到Tailwind CSS…

vue实现本地预览word(docx)、excel(xlsx)、pdf文件

vue实现本地预览word(docx)、excel(xlsx)、pdf文件 实现效果: 通过点击预览,浏览器打开新标签页展示文件内容 word效果: pdf效果: excel效果: 前期准备: word插件: npm install --save …

【TFS-CLUB社区 第5期赠书活动】〖Python OpenCV从入门到精通〗等你来拿,参与评论,即可有机获得

文章目录❤️‍🔥 赠书活动 - 《Python OpenCV从入门到精通》❤️‍🔥 编辑推荐❤️‍🔥 内容提要❤️‍🔥 赠书活动 → 获奖名单❤️‍🔥 赠书活动 - 《Python OpenCV从入门到精通》 内容简介: 《Python O…

【uniapp】页面下拉刷新

目录 一、全局 二、局部 1、一个页面一个下拉刷新 2、一个页面多个下拉刷新(切换时滚动条回到顶部) 3、一个页面多个下拉刷新(切换时恢复滚动条位置) 一、全局 修改pages.json的"enablePullDownRefresh": true, …

【Node.js实战】一文带你开发博客项目之登录(前置知识)

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端 📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀未…

微信小程序自定义组件(超详细)

💌写在开头: 哈喽呀,亲爱的宝子们。 今天要介绍的是关于小程序自定义组件的相关内容。 主要分以下几个部分:组件的创建,组件的结构,组件的引用,组件样式,组件的生命周期等。 文章目录…

【蓝桥杯真题】当蓝桥杯开设Web组之后,对几题能拿省一?

目录 🏆难度分析 🏆一、水果拼盘 🏆二、展开你的扇子 🏆三、和手机相处的时光 🏆四、灯的颜色变化 🏆五、冬奥大抽奖 🏆六、蓝桥知识网 🏆七、布局切换 🏆八、购…

vue3,使用watch监听props中的数据

情况一:监听 props 中基本数据类型 父组件中对传入数据的处理 const handleClick () > {testStr.value P }子组件中监听传入的数据 watch(() > props.testStr,(newVal, oldVal) > {console.log(监听基本类型数据testStr)console.log(new, newVal)cons…

Vue 和 React 有什么不同?

大家好,我是前端西瓜哥。今天的文章简单探讨一下 Vue 和 React 的不同。 本人 Vue2 和 React 都用过,但不熟悉 Vue3,没用它做过项目。 其实我对这两大框架也没有认真钻研过它们的细节,也就是工作上用它们写一些简单业务&#xf…

解决npm ERR! Cannot read properties of null (reading ‘pickAlgorithm‘)报错问题

在vue项目中,使用npm i 命令安装node modules时,出现报错。 第一句: npm ERR! Cannot read properties of null (reading pickAlgorithm) 搜索的话也是有很多答案的,比如: 在终端中运行命令:npm cache cle…