关于伸缩盒子 flexbox 的flex-shrink属性

注:今天在用swiper.js做商品轮播图的时候,遇到了在使用flexbox的前提下,子元素设置flex:1;所有子元素被挤在一期的现象(未执行到swipe);

原因竟然是因为没有设置:flex-shrink属性。

flex-shrink<number>

默认值:1

适用于:flex子项

继承性:无

动画性:是

计算值:指定值

取值:

<number>:用数值来定义收缩比率。不允许负

说明:

设置或检索弹性盒的收缩比率。

  • 根据弹性盒子元素所设置的收缩因子作为比率来收缩空间。

    <ul class="flex">
        <li>a</li>
        <li>b</li>
        <li>c</li>
    </ul>
    
    .flex{display:flex;width:400px;margin:0;padding:0;list-style:none;}
    .flex li{width:200px;}
    .flex li:nth-child(3){flex-shrink:3;}
    flex-shrink的默认值为1,如果没有显示定义该属性,将会自动按照默认值1在所有因子相加之后计算比率来进行空间收缩。
    
    本例中c显式的定义了flex-shrink,a,b没有显式定义,但将根据默认值1来计算,可以看到总共将剩余空间分成了5份,其中a占1份,b占1份,c占3分,即1:1:3
    
    我们可以看到父容器定义为400px,子项被定义为200px,相加之后即为600px,超出父容器200px。那么这么超出的200px需要被a,b,c消化
    
    通过收缩因子,所以加权综合可得200*1+200*1+200*3=1000px;
    于是我们可以计算a,b,c将被移除的溢出量是多少:
    a被移除溢出量:(200*1/1000)*200,即约等于40px
    b被移除溢出量:(200*1/1000)*200,即约等于40px
    c被移除溢出量:(200*3/1000)*200,即约等于120px
    最后a,b,c的实际宽度分别为:200-40=160px, 200-40=160px, 200-120=80px
    • 对应的脚本特性为flexGrow
时间: 2024-08-27 21:16:03

关于伸缩盒子 flexbox 的flex-shrink属性的相关文章

CSS3中flex伸缩盒子的使用

flex伸缩盒子: 在父盒子中设置display: flex:子盒子中分别设置flex: 1,按比例设置flex属性值. 其他属性如下: 1.flex-grow:<number>  // 用数值来定义扩展比率.不允许负值 2.flex-shrink:<number>  // 用数值来定义收缩比率.不允许负值 3.flex-basis:<length> | <percentage>  // 设置或检索弹性盒伸缩基准值. 4.flex-flow:<' fl

伸缩容器-display:flex设置flex属性的理解

1.flex属性 1.1 flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto. flex-grow: 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大. flex-shrink:定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小. flex-basis:定义了在分配多余空间之前,项目占据的主轴空间(main size).浏览器根据这个属性,计算主轴是否有多余空间.它的默认值为auto,即项目的本来大小. 1.2

CSS弹性盒子Flexbox布局详解

布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 2009年,W3C提出了一种新的方案--Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. 以下内容主要参考了:Flex 布局教程:语法篇 一.Flex布局是什么? Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提

css3总结(三)立方体、动画、web字体、字体图标、弹性布局、多列布局、伸缩盒子

目录: 1.立方体2.动画3.设置动画的一些属性4.案例:无缝滚动5.web字体6.弹性布局7.多列布局8.弹性布局9.案例:伸缩盒子的flex属性的应用案例(菜单个数不限)10.伸缩盒子的align-items属性     设置侧轴对齐方式11.案例:伸缩盒子,宽高自适应 1.立方体    *transform-style: preserve-3d;/*子元素保留其3d样式*/ <!DOCTYPE html> <html> <head> <title>立方

CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解

新css属性为我们提供了更加便捷的网页布局方式.来自微软的thomas lewis将带你认识去Grid Alignment,Flexibox Box以及Multi-column Layout这三大领域. 这篇文章最早出现在the April 2012 issue (226)这期的.net杂志上-这杂志是面向网页设计者以及开发者,全球销量最高的杂志. 按照以往来说,用CSS来布局看起来总是一样非常繁杂的工作.然而,随着一个个新标准的推出,网页设计者已经能够实现非常轻松地进行布局工作了. 主流的浏览

盒子模型中的margin属性

记: 1.如果margin只有一个值,表示上右下左的margin同为这个值.例如:margin:10px; 就等于 margin:10px 10px 10px 10px; 2.如果 margin 只有两个值,第一个值表示上下margin值,第二个值为左右margin的值.例如:margin:10px 20px; 就等于 margin:10px 20px 10px 20px; 3.如果margin有三个值,第一个值表示上margin值,第二个值表示左右margin的值,第三个值表示下margin的

盒子模型与flex模型

一.盒子模型 二.CSS3弹性盒模型(Flex模型)        伸缩容器默认存在两条轴: 水平的主轴(main axis) 和垂直的侧轴(cross axis)     [注意]主轴方向不一定是水平的,它主要取决于justify-content属性 主轴起点叫main start,主轴终点叫main end:侧轴起点叫cross start,侧轴终点叫cross end 伸缩项目默认沿主轴排列.单个伸缩项目占据的主轴空间叫main size ,占据的侧轴空间叫cross size     [

CSS3 伸缩盒子布局

伸缩布局 传统布局和伸缩布局 布局的传统解决方案,基于盒装模型,依赖dispaly属性+position属性+flot属性 对于特殊布局非常不便 CSS3在布局方面做了非常大的改进 使得我们对块级元素的布局排列变得十分灵活,适宜性非常强 其强大的伸缩性,在响应式开发中发挥极大的作用 重要属性 display: flex; 给父元素设置了这个属性,其子元素都会自动的变成伸缩项(flex item) justify-content justify-content 设置或检索弹性盒子元素在主轴(默认横

Flexible 弹性盒子模型之CSS justify-content 属性

实例 在弹性盒对象的 <div> 元素中的各项周围留有空白: div { display: flex; justify-content: space-around; } 复制 效果预览 浏览器支持 表格中的数字表示支持该属性的第一个浏览器的版本号. 紧跟在 -webkit-, -ms- 或 -moz- 后的数字为支持该前缀属性的第一个版本. 属性           justify-content 29.021.0 -webkit- 11.0 28.018.0 -moz- 9.06.1 -we