怎么计算 flex-shrink 的缩放尺寸

news2025/1/11 11:07:53

计算公式: 子元素的宽度 - (子元素的宽度的总和 - 父盒子的宽度) * (某个元素的flex-shrink / flex-shrink总和)

面试问题是这样的下面 left 和 right 的宽度分别是多少

 * {
      padding: 0;
      margin: 0;
    }
    .container {
      width: 500px;
      height: 300px;
      display: flex;
    }

    .left {
      width: 500px;
      flex-shrink: 3;
      background: red;
    }

    .right {
      width: 400px;
      flex-shrink: 1;
      background: blue;
    }
<div class="container">
    <div class="left"></div>
    <div class="right"></div>
</div>

问题扔过来首先就想到了 chatgpt, 在如今ai横行的时代, 不让chatgpt出场都是对他的不尊重, 无奈她辜负了我的期望, 给了我一个天坑的结果(left: 500, right: 400), 女朋友让我回家跪搓衣板;

image.png

既然犯了错咱就得去解决, 我开始自食其力;

flex-shrink 是收缩的意思, 如果值越大肯定收缩的越狠;
首先我们应该算一下每个div的收缩量是多少, 然后我们用设置的宽度减去收缩的宽度就是剩余的宽度了, flex-shrink 的收缩总和是 3 + 1 = 4

  1. 我们应该收缩的空间总量: (W1 的初始宽度 + W2 的初始宽度) - 父级容器宽度 = (500 + 400) - 500 = 400

  2. 确定每个项目的收缩比率: left 的收缩比率 = 3 / 4; right 的收缩比率 = 1 / 4

  3. 计算每个div的收缩量: left = 400 * 3/4 = 300; right = 400 * 1/4 = 100

  4. 计算宽度 left = 500 - 300 = 200; right = 400 -100 = 300

所以 left 是 200 right 是 200

第五题

假设我们有如下结构:

<ul> <li></li> <li></li> <li></li> //... 很多个 i <li></li> <li></li> </ul> 

通过 CSS 选择器,实现当 li 的序号为 3 的倍数时,li 输出 Hello,5 的倍数就说 World如果即是 3 的倍数又是 5 的倍数就输出 HelloWorld。当然,如果不满足上述 3 个条件需要输出当前的序号。

 <style>
    ul {
      counter-reset: my-counter;
    }
  
    li{
      counter-increment: my-counter;
    }
  
    li:nth-child(3n)::after {
      content: "Hello";
    }
  
    li:nth-child(5n)::after {
      content: "World";
    }
  
    li:nth-child(15n)::after {
      content: "HelloWorld";
    }

    li:not(:nth-child(3n), :nth-child(5n))::after {
      content: counter(my-counter);
    }
  </style>

我对这里的展示序号比较陌生,平常编码的时候确实很少用到这个选择器,在不满足3的倍数和5的倍数里面,就要用到:not()选择器,可以把它理解为反选选择器,括号里面可以是多个选择器,li:not(:nth-child(3n), :nth-child(5n)) 这个选择器意思就是选中3的倍数和5的倍数之外的li标签,这里用到了 css 函数 counter(),大家对 calc()一定很熟悉(题外话),这个函数需要使用counter-reset 设置一个初始值 counter-reset: my-counter; counter-increment 可以给你定义的初始值增加给定值,默认为1,li标签每出现一次就会增加1

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

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

相关文章

MySQL8.0安装过程中starting the server报错的解决方案(史上最详细)

MySQL8.0安装过程中starting the server报错的解决方案&#xff08;史上最详细&#xff09; 目录 MySQL8.0安装过程中starting the server报错的解决方案&#xff08;史上最详细&#xff09;报错情况&#xff1a;starting the server报错解决办法 报错情况&#xff1a;starting…

盘点开源ChatGPT建立的私有知识库

ChatGPT 可以落地的一个行业就是建立私有知识库&#xff0c;将ChatGPT落地TO B行业&#xff0c;可基于ChatGPT和私有数据构建智能知识库和个性化AI。 这个应该是ChatGPT 最热的一个创业方向。 可能出现的产品&#xff0c;有智能AI客服、企业内部/外部知识库、个人知识库&…

C++(9):顺序容器

顺序容器概述 所有顺序容器都提供了快速顺序访问元素的能力。 vector//可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢 deque//双端队列。支持快速随机访问。在头尾位置插入/删除速度很快 list//双向链表。只支持双向顺序访问。在list中任何位置进…

oVirt 4.4.10三节点超融合集群安装配置及集群扩容(二)

在上节安装完成3节点集群后&#xff0c;在此基础上扩容到6节点<oVirt每次扩容后的容量必须是3的倍数> 操作步骤 在原始第一台服务器访问https://192.168.5.100:9090/,在"Virtualiztion"->“Hosted Engin"下点击"Manage Gluster” 点击"Ex…

「已解决」已有Umi Antd 环境下安装 formily v2 依赖报错问题

背景 在一个项目中想引入 formily v2 试一下这个针对复杂表单的解决方案&#xff0c;结果发现安装后报错&#xff0c;目前已有的第三方库大致为 “ant-design/icons”: “^5.0.1”, “ant-design/pro-components”: “^2.4.4”, “umijs/max”: “^4.0.68”, “ahooks”: “^3…

【软考程序员学习笔记】——操作系统

目录 &#x1f34a;一、操作系统的五大功能 &#x1f34a;二、操作系统的分类 &#x1f34a;三、进程三态模型 &#x1f34a;四、信号量机制 &#x1f34a;五、PV机制、互斥和同步 &#x1f34a;六、虚拟存储器 &#x1f34a;七、设备管理 直接程序控制 &#x1f34a;八…

PyQt5桌面应用开发(21):界面设计结果自动测试(二)

本文目录 PyQt5桌面应用系列TDDUI为什么&#xff1f; 开发任务任务设计小码的工作unittest函数一览表 UI单元测试代码控件代码测试报告 总结 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQt5桌面应用开发&#xff08;2&#xff09;&a…

Python基础(2)——Python解释器

Python基础&#xff08;2&#xff09;——Python解释器 文章目录 Python基础&#xff08;2&#xff09;——Python解释器目标一. 解释器的作用二. 下载Python解释器三. 安装Python解释器总结 目标 解释器的作用下载Python解释器安装Python解释器 一. 解释器的作用 Python解释…

Golang每日一练(leetDay0099) 单词规律I\II Word Pattern

目录 290. 单词规律 Word Pattern &#x1f31f;  291. 单词规律 II Word Pattern ii &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 …

ubuntu 20.04 arm 平台交叉编译 glib 库

glib 是什么&#xff1f; glib 是一个比较强大的 软件库&#xff0c;类似于 libc 库 交叉编译 当前需要移植到 arm&#xff08;ARM 32位&#xff09;平台上&#xff0c;需要使用 arm 交叉编译工具链编译 glib 环境准备 ubuntu 20.04 安装较新版本的 meson &#xff1a; &g…

手写-js节流(定时器+时间差两种方式)

官方解释&#xff1a;当持续触发事件时&#xff0c;保证一定时间段内只调用一次事件处理函数。 节流实现思路: 实现节流函数, 我们使用定时器是不方便管理的, 实现节流函数我们采用另一个思路 我们获取一个当前时间nowTime, 我们使用new Date().gettime()方法获取, 在设定一个…

[RPC]:Feign远程调用

文章目录 1 RPC框架-Feign1.1 什么是Feign1.2 Feign解决的问题1.2.1 使用RestTemplate发送远程调用代码1.2.2 存在的问题 1.3 Feign如何使用1.3.1 引入依赖 1 RPC框架-Feign 1.1 什么是Feign Feign是一个简化HTTP客户端编写的框架&#xff0c;通过声明式方式将远程服务调用封装…

基于html+css的图展示131

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Three.js教程:平行光与环境光

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 其他系列工具&#xff1a; NSDT简石数字孪生 平行光与环境光 本节课通过平行光DirectionalLight (opens new window)和环境光AmbientLight (opens new window)进一步了解光照对应模型Mesh表面的影响。 点光源辅助观察Poin…

管理类联考——英语——技巧篇——新题型——经典方法论

新题型可以说是考研英语独有的考查形式&#xff0c;自2005年起&#xff0c;阅读理解部分便新增了PartB&#xff0c;即新题型。之所以叫作新题型&#xff0c;原因很简单&#xff0c;是因为它在考研英语的各个题型中&#xff0c;年龄是最小的&#xff0c;也就是最新的题型。新题型…

【MySQL表的增删改查】

MySQL表的增删改查 1. CRUD2. 新增&#xff08;Create&#xff09;2.1 单行数据 全列插入2.2 多行数据 指定列插入 3. 查询&#xff08;Retrieve&#xff09;3.1 全列查询3.2 指定列查询3.3 查询字段为表达式3.4 别名3.5 去重&#xff1a;DISTINCT3.6 排序&#xff1a;ORDER …

Hibernate框架【一】——HIbernate框架介绍

系列文章目录 Hibernate框架【三】——基本映射——一对一映射 Hibernate框架【四】——基本映射——多对一和一对多映射 Hibernate框架【五】——基本映射——多对多映射 Hibernate框架介绍 系列文章目录前言一、什么是HIbernate框架Hibernate架构图Hibernate提供的核心功能和…

php-xhprof 学习历程

听说 php-xhprof 可以分析网站的性能。今天闲来无事&#xff0c;就学习了一下。 1、安装&#xff08;万事都得从安装开始&#xff09; #首先&#xff0c;他是需要 graphviz 支持的。所以&#xff0c;我们得先安装这个依赖 yum install graphviz #就只需要这一行命令即可#下载地…

【C++】函数重载及引用

目录 一、函数重载 1、函数重载的概念 2、名字修饰 二、引用 1、引用概念 2、引用特性 3、常引用 4、引用的使用场景 4.1 做参数 4.2 做返回值 5、传值、传引用效率比较 6、引用和指针的区别 一、函数重载 1、函数重载的概念 函数重载&#xff1a;是函数的一种特殊情况&#…

leetcode415. 字符串相加

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【LeetCode】 &#x1f353;希望我们一起努力、成长&#xff0c;共同进步。 题目链接 给定两个字符串形式的非负整数 num1 和num2 &#…