十五、flex弹性元素的样式

news/2024/11/24 9:09:33/

目录:
1. 基本布局
2. 弹性元素的属性:flex-grow
3. 弹性元素的属性:flex-shrink
4. 弹性元素的属性:flex-basis
5. flex 统一设置这3个属性(常用)
6. order

一、基本布局

<style>*{margin: 0;padding: 0;list-style: none;}ul{width: 800px;border:10px red solid;/* 当设置了ul为弹性盒子,li就自动是弹性元素 */display: flex;}li{width: 200px;height: 100px;background-color: #bfa;font-size: 50px;text-align: center;line-height: 100px;}li:nth-child(2){background-color: pink;}li:nth-child(3){background-color: orange;}</style>
<body><ul><li>1</li><li>2</li><li>3</li></ul></body>

二、弹性元素的属性:flex-grow

  • flex-grow:1 表示所有元素平均分配剩下的空白,比如空白300,那么每个
    方框就在弹长100。
    li{width: 200px;height: 100px;background-color: #bfa;font-size: 50px;text-align: center;line-height: 100px;/* 弹性元素的增长系数 */flex-grow: 1;}li:nth-child(2){background-color: pink;}li:nth-child(3){background-color: orange;}
    • 如果每一个都设置了增长系数,假设剩余空白是300, 现在总共系数分配比例:1 + 2 + 3 = 6,300 / 6 = 50, 对应的每个方框,弹长:1* 50 = 50, 2 * 50 = 100, 3 * 50 = 150
    li{width: 200px;height: 100px;background-color: #bfa;font-size: 50px;text-align: center;line-height: 100px;/* 弹性元素的增长系数 */flex-grow: 1;}li:nth-child(2){background-color: pink;/*增长系数是按照比例去分配的, */flex-grow: 2;}li:nth-child(3){background-color: orange;flex-grow: 3;}

三、弹性元素的属性:flex-shrink

  • flex-shrink:弹性元素的缩减系数,默认1

测试:把父类ul 的width设置小点,会发现里面的元素,会自动缩减,以适应父类边框变小的情况。

 <style>*{margin: 0;padding: 0;list-style: none;}ul{width: 400px;border:10px red solid;/* 当设置了ul为弹性盒子,li就自动是弹性元素 */display: flex;}li{width: 200px;height: 100px;background-color: #bfa;font-size: 50px;text-align: center;line-height: 100px;/* 弹性元素的增长系数*/flex-grow: 1;/* 弹性元素的缩减系数- 缩减系数的计算方式比较复杂- 缩减多少是根据 缩减系数和 元素大小 来计算。 基本理论是元素越大,缩减的越多*/flex-shrink: 1;}li:nth-child(2){background-color: pink;flex-grow: 2;}li:nth-child(3){background-color: orange;flex-grow: 3;}</style>
<body><ul><li>1</li><li>2</li><li>3</li></ul>  
</body>

四、弹性元素的属性:flex-basis

   flex-basis 指定的是元素在主轴上的基本长度如果主轴 - 横向 - 则该值指定的就是元素的宽度 - 原来设置li的width无效如果主轴 - 纵向 - 则该值指定的就是元素的高度- 原来设置li的height无效- 默认值是auto,表示参考元素自身的高度或宽度- 如果传递了一个具体的数值,则以该值为准
  • flex-basis: 设置弹性元素的基础长度。一旦这里设定了100px, li里面设定的width:200px,就失效了。
 <style>*{margin: 0;padding: 0;list-style: none;}ul{width: 800px;border:10px red solid;/* 当设置了ul为弹性盒子,li就自动是弹性元素 */display: flex;}li{width: 200px;height: 100px;background-color: #bfa;font-size: 50px;text-align: center;line-height: 100px;/* 弹性元素的增长系数*//* flex-grow: 1; */flex-shrink: 1;/* 弹性元素基础长度:flex-basis ,一旦这里设定了100, li里面		设定的width:200px,就失效了。所有的li,都固定成100px*/flex-basis: 100px;}li:nth-child(2){background-color: pink;}li:nth-child(3){background-color: orange;}</style>

总的可以理解为:flex-basis: 100px; 表示设置了这个弹框的宽度是100, 然后这个弹簧能弹多长,由flex-grow来确定,越大越长。这个弹框能够缩多短,由flex-shrink来决定。 所以这3个属性,就是弹簧的3种状态

五、flex 统一设置这3个属性(常用)

- 通常我们在运用这几个属性的时候,不会一个个这样单独设置,而是直接一起写.
- 假设我们想要的效果是:flex-grow:增长系数1, flex-shrink:缩减系数1, flex-basis:基础值 auto  - flex 可以设置弹性元素所有的3个样式flex 增长 缩减  基础
<style>*{margin: 0;padding: 0;list-style: none;}ul{width: 800px;border:10px red solid;/* 当设置了ul为弹性盒子,li就自动是弹性元素 */display: flex;}li{width: 200px;height: 100px;background-color: #bfa;font-size: 50px;text-align: center;line-height: 100px;/* 通常这样用:flex 可以设置弹性元素所有的3个样式flex 增长 缩减  基础*/flex: 1 1 auto;}li:nth-child(2){background-color: pink;}li:nth-child(3){background-color: orange;}</style><body><ul><li>1</li><li>2</li><li>3</li></ul></body>
  • flex 除了可以自己设置值,还有几个固定的可选值
  •        initial  "flex:0 1 auto"auto    "flex: 1 1 auto"none    "flex:0 0 auto" 设置这个,表示弹性元素没有弹性了
    
 li{width: 200px;height: 100px;background-color: #bfa;font-size: 50px;text-align: center;line-height: 100px;/* flex 可以设置弹性元素所有的3个样式flex 增长 缩减  基础initial  "flex:0 1 auto"auto    "flex: 1 1 auto"none    "flex:0 0 auto" 设置这个,表示弹性元素没有弹性了*/flex: initial;}

六、order

  • 控制元素的排列顺序
  li{width: 200px;height: 100px;background-color: #bfa;font-size: 50px;text-align: center;line-height: 100px;flex: initial;}li:nth-child(1){/* order 决定弹性元素的排列顺序 */order:3;}li:nth-child(2){background-color: pink;  order:2;}li:nth-child(3){background-color: orange;order:1;}

注意:flex 对IE 8,9可能支持不是很好,移动端随意使用。 浮动和flex优先推荐flex


http://www.ppmy.cn/news/825748.html

相关文章

Mysql常见的集群方案

一&#xff0c;MySQL Replication MySQL Replication 是官方提供的主从同步方案&#xff0c;用于将一个 MySQL 的实例同步到另一个实例中。Replication 为保证数据安全做了重要的保证&#xff0c;是目前运用最广的 MySQL 容灾方案。Replication 用两个或以上的实例搭建了 MySQ…

【前端技巧】CSS常用知识碎片(三)

CSS常用知识碎片&#xff08;三&#xff09; 分栏布局 将子元素在内的所有内容拆分为列&#xff0c;主要针对图文排版布局&#xff0c;应用在横向排版场景中&#xff0c;文档流是倒N方向优点&#xff1a;不会改变元素原本的display计算值 <body><ul><li>重…

从软件工程角度看大前端技术栈

从软件工程角度看大前端技术栈 优秀人才不缺工作机会&#xff0c;只缺适合自己的好机会。但是他们往往没有精力从海量机会中找到最适合的那个。 100offer 会对平台上的人才和企业进行严格筛选&#xff0c;让「最好的人才」和「最好的公司」相遇。 扫描下方二维码&#xff0c;注…

视频和语音播放(进行中)

点播&#xff0c;直播&#xff0c;VR&#xff08;录制音频和视频&#xff0c;在线的和本地的&#xff09;,视频播放器和音乐播放器&#xff08;播放音乐和视频&#xff09;&#xff0c;视频和语音 VideoView并不是支持播放所有格式的视频&#xff0c;它仅支持mp4和3gp格式的文件…

HyperLedger Fabric协议规范

协议规范 前言 这份文档是带有权限的区块链的工业界实现的协议规范。它不会详细的解释实现细节&#xff0c;而是描述系统和应用之间的接口和关系。 目标读者 这份规范的目标读者包括&#xff1a; 想实现符合这份规范的区块链的厂商想扩展 fabric 功能的工具开发者想利用区…

cdr mac majave os_苹果最新 macOS Mojave 10.14 正式版 懒人镜像

本帖最后由 kissfox 于 2018-10-15 10:24 编辑 苹果最新 macOS Mojave 10.14 正式版 懒人镜像 近期很多人在找我帮忙找MAC OS Mojave 10.14苹果系统 请大家下载之前一定看清楚帖子&#xff0c; 此系统的安装包是IMG格式&#xff0c;如果不会使用&#xff0c;请勿下载。 特将这个…

mojave时间机器文件服务器,黑苹果懒人版CDR镜像macOS Mojave 10.14.1(18D42)

WWDC 2018发布会已经介绍&#xff0c;带来了不少系统更新的新亮点(遗憾的是没有硬件更新)&#xff0c;macOS 10.14命名macOS Mojave&#xff0c;新版ios应用将能够在 macOS 上运行、新增加黑暗模式&#xff0c;除了黑暗模式&#xff0c;最重要的功能肯定是 iOS 应用“搬家”到 …

在vite创建的vue3项目中使用Cesium加载立体地形信息并调整初始化角度

在vite创建的vue3项目中使用Cesium加载立体地形信息并调整初始化角度 使用vite创建vue3项目 npm create vitelatestcd到创建的项目文件夹中 npm install安装Cesium npm i cesium vite-plugin-cesium vite -D配置 &#xff08;1&#xff09;在项目的vite.config.js文件中添加&am…