十一、弹性盒flex - 介绍

news2024/11/25 7:08:24

目录
1.flex介绍
2.详解

一、flex介绍

flex(弹性盒,伸缩盒)

  • css中的又一种布局手段,它主要用来代替浮动来完成页面的布局。
  • flex可以使元素具有弹性,让元素可以跟随页面的大小的改变而改变。

我们知道float:left 会导致高度塌陷,flex不会。

  • 弹性容器
    • 要使用弹性盒,必须先将一个元素设置为弹性容器
    • 我们通过display 来设置弹性容器
      display:flex 设置为块级弹性容器
      display:inline-flex 设置为行内的弹性容器
  • 弹性元素
    • 弹性容器的子元素是弹性元素(弹性项)
    • 弹性元素可以同时是弹性容器和弹性元素

二、详解

1. 基础界面

<style>

    *{
      padding: 0;
      margin: 0;
      list-style: none;
    }

    ul{
      width: 500px;
      border: 10px solid red;

    }

    li{
      width: 200px;
      height: 100px;
      background-color: #bfa;
    }

    li:nth-child(1){
      background-color: orange;

    }

    li:nth-child(2){
      background-color: blue;
    }

    li:nth-child(3){
      background-color: green;
    }

  </style>
<body>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>

</body>

当前父类ul,没有设置高度,这里是元素自适应高度。

2. 现在我们让3个方块水平排列,同样在不设置父类ul的高度的情况下,同时把ul的width设置宽一点。

  • 通过 display: flex,来设置ul为弹性容器,效果是高度没有塌陷,且水平排列

  • 优化代码如下:

    ul{
      width: 800px;
      border:10px solid red;
      /* 将ul设置为弹性容器 */
      /* display: inline-flex; */
      display: flex;
      /* 
      flex-direction 
      指定容器中弹性元素的排列方式
      可选值:
      row 默认值, 水平,从左往右
          - 主轴  自左向右
      row-reverse 弹性元素在容器中反向水平排列,从右向左
          - 主轴  从右向左
      column 纵向,从上向下
      column-reverse 纵向,从下向往上

      只要给这个容器设置了方向,里面的元素,自动变化方向排列
      主轴: 弹性元素的排列方向称为主轴
      侧轴: 与主轴垂直方向的称为侧轴,如果你主轴是垂直的,侧轴就是水平的,依次类推

      */
      flex-direction: row;
    }
  • 整体代码

<style>

    *{
      padding: 0;
      margin: 0;
      list-style: none;
    }

    ul{
      width: 800px;
      border: 10px solid red;
      display: flex;
      flex-direction: row;
    }

    li{
      width: 100px;
      height: 100px;
      background-color: #bfa;
      font-size: 50px;
      text-align: center;
      line-height: 100px;
    }

    li:nth-child(1){
      background-color: orange;

    }

    li:nth-child(2){
      background-color: blue;
    }

    li:nth-child(3){
      background-color: green;
    }

  </style>

3.弹性元素(在这里是li)

  • 当前我们把li的width,height 都写死了,也看到右侧有很多空白,没有体现这个弹性元素的伸缩特性,去填满空白。

解决方法:让我们的li元素都具有伸缩特性 - flex-grow:1;

代码:

 li{
      width: 100px;
      height: 100px;
      background-color: #bfa;
      font-size: 50px;
      text-align: center;
      line-height: 100px;

       /*
        flex-grow:指定弹性元素的伸展的系数,默认是0,没有弹性
        1:弹满
        flex-grow:当父元素由多余空间时,子元素如何伸展
        */
      flex-grow:1;
    }
  • 上面这种写法是统一所有的li元素都进行伸缩相同的系数1,均匀大小,如果我想每个小方块都伸缩不同的比例,就把li里面设置的的flex-grow:1;去掉, 单独来写每个小方块。
li{
      width: 100px;
      height: 100px;
      background-color: #bfa;
      font-size: 50px;
      text-align: center;
      line-height: 100px;

    }

    li:nth-child(1){
      background-color: orange;
      flex-grow:1;
    }

    li:nth-child(2){
      background-color: blue;
      flex-grow:2;
    }

    li:nth-child(3){
      background-color: green;
      flex-grow:3;
    }

  • 父元素的剩余空间,会按照比例进行分配,值越大,弹的越多。
    比如父元素的剩余空间是600,分成(1+2+3)份, 按照比例,方块一会在原来的基础上增长100, 方块二200,方块三300。 如果方块1设置 flex-grow:0; 那他就不增长。

4. 收缩系数:flex-shrink

flex-shrink 指定弹性元素的收缩系数
  - 当父元素中的空间不足以容纳所有的子元素是,对子元素进行收缩
  - 0:不收缩,1 收缩(默认)
  - 值越大,缩的越多

现在我们把li 的width:200px, ul 父元素width: 300px;,从这里可以看出3个li的width加起来是超过300的,但是效果是没有元素超出父元素,他们自动伸缩了,就是收缩系数控制的。

style>

    *{
      padding: 0;
      margin: 0;
      list-style: none;
    }

    ul{
      width: 300px;
      border: 10px solid red;
      display: flex;
      flex-direction: row;
    }

    li{
      width: 200px;
      height: 100px;
      background-color: #bfa;
      font-size: 50px;
      text-align: center;
      line-height: 100px;

    }

    li:nth-child(1){
      background-color: orange;
  
    }

    li:nth-child(2){
      background-color: blue;
   
    }

    li:nth-child(3){
      background-color: green;
     
    }

  </style>


</head>


<body>

  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>

</body>
  • 如果你不想让这些方框随着父元素收缩。
 li{
      width: 200px;
      height: 100px;
      background-color: #bfa;
      font-size: 50px;
      text-align: center;
      line-height: 100px;
	  flex-shrink: 0; 
    }
  • 如果你想控制每个方框的收缩比例,值越大,收缩就比较大。
 	li:nth-child(1){
      background-color: orange;
      flex-shrink: 1;
    }

    li:nth-child(2){
      background-color: blue;
      flex-shrink: 2;
    }

    li:nth-child(3){
      background-color: green;
      flex-shrink: 3;
    }

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

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

相关文章

【linux kernel】一文总结linux内核通知链

文章目录 1、通知链简介2、通知链的类型3、原理分析和API&#xff08;1&#xff09;注销通知器&#xff08;2&#xff09;注销通知器&#xff08;3&#xff09;通知链的通知 4、实例代码&#xff08;1&#xff09;定义一个通知链&#xff08;2&#xff09;实现观察者模块&#…

从源码全面解析 Java SPI 的来龙去脉

一、引言 对于 Java 开发者而言&#xff0c;关于 dubbo &#xff0c;我们一般当做黑盒来进行使用&#xff0c;不需要去打开这个黑盒。 但随着目前程序员行业的发展&#xff0c;我们有必要打开这个黑盒&#xff0c;去探索其中的奥妙。 虽然现在是互联网寒冬&#xff0c;但乾坤…

数字化转型应该从哪里开始?

数字化转型可能是一个复杂的过程&#xff0c;涉及将数字技术和战略集成到组织的各个方面。虽然具体的起点可能会根据组织的规模、行业和目标而有所不同&#xff0c;但数字化转型计划通常从以下几个共同领域开始&#xff1a; 愿景和战略&#xff1a;转型之旅应从与组织目标一致的…

百万数据SQL优化技巧,看这一篇就够了(实操+详细总结)

前言&#xff1a;这次准备了100W的数据进行SQL性能测试&#xff0c;数据库采用的是MySQL&#xff0c;总共介绍了常见的15种SQL优化方式&#xff0c;每一种优化方式都进行了实打实的测试&#xff0c;逐行讲解&#xff0c;通俗易懂&#xff01; 目录 一、准备数据 1、创建表结构…

Windows环境下安装和配置python环境

Windows环境下安装和配置python环境 1.官网下载&#xff1a;https://www.python.org/downloads/release 2.安装&#xff1a;自定义路径即可无脑下一步 3.cmd打开控制台&#xff0c;输入python&#xff0c;如果页面切换成以下样子就说明安装成功了 4.运行python脚本【步骤3切入…

555、Vue 3 学习笔记 -【常用Composition API(四)】 2023.07.06

目录 一、setup的两个注意点1. setup执行的时机2. setup的参数 二、 计算属性与监视1. computed函数2. watch函数3. watchEffect函数 三、参考链接 一、setup的两个注意点 1. setup执行的时机 在beforeCreate之前执行一次&#xff0c;this是undefined 2. setup的参数 props…

GitLab名词介绍

GitLab名词介绍 分支&#xff1a;active、stale、default、protected IDEA中git面板&#xff1a;本地、远程、HEAD 合并时的选项&#xff1a;Delete、squash 查看Git常用操作 分支&#xff1a;active、stale、default、protected 在分支页面下&#xff0c;有active、stale…

k8s中kubectl陈述式/声明式资源管理

k8s陈述资源管理方法的说明 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具&#xff0c;用于与 apiserver 进行通信&#xff0c;将用户在命令行输入的命令&#xff0c;组织并转化为 apiserver 能识别的信息&…

TongWeb8关于内存泄露提示: To prevent a memory leak

原因&#xff1a; 该问题与 https://blog.csdn.net/realwangpu/article/details/109510297 相同&#xff0c;TongWeb7, TongWeb8在卸载应用时&#xff0c;会尝试回收可能存在的内存泄露&#xff0c; 本质应该从应用方面解决。 解决办法&#xff1a; 若无法修改应用&#xff0c…

深度学习神经网络学习笔记-论文研读-transformer

摘要 优势序列转导模型基于复杂的循环或包括一个编码器和一个解码器的卷积神经网络。最好的表现良好的模型还通过attention 连接编码器和解码器机制。我们提出了一种新的简单的网络架构&#xff0c;Transformer&#xff0c; 完全基于注意力机制&#xff0c;省去了递归和卷积完…

【成都理工826】22年真题及解析

哈喽大家好&#xff0c;鉴于真题系列反馈很不错&#xff0c;我决定重启真题系列&#xff01;之前更新的22真题合集点击这里&#xff1a; 成都理工826信号与系统难度不是特别大&#xff0c;但是对计算的要求比较高。掌握好基础&#xff0c;计算细心是可以拿高分的。本套试题内容…

【我们一起60天准备考研算法面试(大全)-第四天 4/60(二叉搜索树与表达式树)】【每天40分钟,我们一起用60天准备 考研408-数据结构(笔试)】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

github搜索技巧笔记

一、了解 GitHub Watch按钮 Watch可以理解为关注的意思&#xff0c;默认情况下是Not watching&#xff0c;当选择Watch后&#xff0c;你会收到这个GitHub项目的所有动态。比如&#xff1a;有人发起pull request或者issue等。接收动态方式包括个人通知中心或者邮箱。 如果某个…

TypeScript - 函数(中)

目录 1、编写良好泛型函数的准则 1.1 向下推送类型参数 1.2 使用较少的类型参数 1.3 类型参数应出现两次 2、可选参数 3、回调中的可选参数 4、函数重载 5、重载签名和实现签名 6、写好重载 1、编写良好泛型函数的准则 编写泛型函数很有趣&#xff0c;并且很容易被类…

Kibana对索引库的操作(3)

这里我们主要是对索引库进行各种查询的操作,所以要提前准备一些数据 POST /leq/goods/3 {"title": "小米手机","images": "3.jpg","price": 4299,"stock": 200,"saleable": true,"subTitle":…

读发布!设计与部署稳定的分布式系统(第2版)笔记20_实例层之代码

1. 术语的定义 1.1. 服务 1.1.1. 指共同协作、以单元的形式对外提供功能的跨机器进程集合 1.1.2. 一个服务可以由多种可执行文件组成 1.1.3. 一个服务可能包含来自多个可执行文件的多个进程 1.1.4. 可能对外呈现单个IP地址&#xff0c;并在后台进行负载均衡 1.1.5. 可能有…

潇洒郎: bat文件与vbs文件, 执行命令行命令以及执行时无console, reg文件注册表

截图.bat start snippingtool 锁屏.bat rundll32.exe user32.dll,LockWorkStation redis.bat cd %~dp0 redis-server.exe redis.windows.conf vbs Set ws CreateObject("Wscript.Shell") ws.run "cmd /c C:/Python27/Scripts/ride.bat",vbhide 在上…

记录好项目D23

记录好项目 你好呀&#xff0c;这里是我专门记录一下从某些地方收集起来的项目&#xff0c;对项目修改&#xff0c;进行添砖加瓦&#xff0c;变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是个基于Springboot教务管理系统 一、系统介绍 这个项目是一个简单的教…

Slowhttptest----DoS攻击工具

Slowhttptest----DoS攻击工具 文章目录 slowhttptestcentos下安装slowhttptestUbuntu 20.04 LTS下安装slowhttptest使用 slowhttptest SlowHTTPTest 是依赖 HTTP 协议的慢速攻击 DoS 攻击工具。 工具的设计基本原理是服务器在请求完全接收后才会进行处理。 如果客户端的 HTT…

香港银行开个人账户应该选择哪个银行,附详细指南

香港现在陆续通关&#xff0c;开户是越来越方便&#xff0c;目前已经很多有账户需求的都过去开户了&#xff0c;那现在个人在香港银行开户的话可以开哪些银行呢&#xff1f;我列举了几个&#xff0c;可以参考下 汇丰个人户&#xff0c;当场开好拿卡使用 恒生个人户&#xff0…