小白教程
所有教程
关于
Search
172.70.127.5
172.70.127.5
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“Css3 pr flex shrink”的源代码
本页内容
上一节:
Css3_pr_flex_grow
下一节:
Css3_pr_flex_basis
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:flex-shrink}}[[Category:css reference|103]] = CSS flex-shrink 属性 = [[css reference|CSS 参考手册]] A, B, C 设置 flex-shrink:1, D , E 设置为 flex-shrink:2: <sample title="" desc="" lang="html" hererun="1"> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>小白教程(xiaobai.wang)</title> <style>#content { display: flex; width: 500px; } #content div { flex-basis: 120px; border: 3px solid rgba(0,0,0,.2); } .box { flex-shrink: 1; } .box1 { flex-shrink: 2; }</style> </head> <body> <p>div 总宽度为 500px, flex-basic 为 120px。</p> <p>A, B, C 设置 flex-shrink:1。 D , E 设置为 flex-shrink:2</p> <p>D , E 宽度与 A, B, C 不同</p> <div id="content"> <div class="box" style="background-color:red;">A</div> <div class="box" style="background-color:lightblue;">B</div> <div class="box" style="background-color:yellow;">C</div> <div class="box1" style="background-color:brown;">D</div> <div class="box1" style="background-color:lightgreen;">E</div> </div> </body> </html> </sample> <run name=""> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>小白教程(xiaobai.wang)</title> <style> #content { display: flex; width: 500px; } #content div { flex-basis: 120px; border: 3px solid rgba(0,0,0,.2); } .box { flex-shrink: 1; } .box1 { flex-shrink: 2; } </style> </head> <body> <p>div 总宽度为 500px, flex-basic 为 120px。</p> <p>A, B, C 设置 flex-shrink:1。 D , E 设置为 flex-shrink:2</p> <p>D , E 宽度与 A, B, C 不同</p> <div id="content"> <div class="box" style="background-color:red;">A</div> <div class="box" style="background-color:lightblue;">B</div> <div class="box" style="background-color:yellow;">C</div> <div class="box1" style="background-color:brown;">D</div> <div class="box1" style="background-color:lightgreen;">E</div> </div> <p><b>注意:</b> Internet Explorer 10 及更早版本浏览器不支持 flex-shrink 属性。</p> <p><b>注意:</b> Safari 6.1 及更新版本通过 -webkit-flex-shrink 属性支持该属性。</p> </body> </html> </run> '''实例解析:''' flex-shrink的默认值为1,如果没有显示定义该属性,将会自动按照默认值1在所有因子相加之后计算比率来进行空间收缩。 本例中A、B、C 显式定义了 flex-shrink 为 1,D、E 定义了 flex-shrink 为 2,所以计算出来总共将剩余空间分成了 7 份,其中 A、B、C 占 1 份,D、E 占 2 份,即1:1:1:2:2 我们可以看到父容器定义为 500px,子项被定义为 120px,子项相加之后即为 600 px,超出父容器 100px。那么超出的 100px 需要被 A、B、C、D、E 消化 通过收缩因子,所以加权综合可得 100*1+100*1+100*1+100*2+100*2=700px。 于是我们可以计算 A、B、C、D、E 将被移除的溢出量是多少: <pre>A 被移除溢出量:(100*1/700)*100,即约等于14px B 被移除溢出量:(100*1/700)*100,即约等于14px C 被移除溢出量:(100*1/700)*100,即约等于14px D 被移除溢出量:(100*2/700)*100,即约等于28px E 被移除溢出量:(100*2/700)*100,即约等于28px</pre> 最后A、B、C、D、E的实际宽度分别为:120-14=106px, 120-14=106px, 120-14=106px, 120-28=92px,120-28=92px,此外,这个宽度是包含边框的。 == 浏览器支持 == 表格中的数字表示支持该属性的第一个浏览器的版本号。 紧跟在 -webkit-, -ms- 或 -moz- 后的数字为支持该前缀属性的第一个版本。 {| class="table table-striped table-hover" ! 属性 ! Chrome ! Internet Explorer / Edge ! Firefox ! Safari ! Opera |- | flex-shrink | 29.021.0 -webkit- | 11.010.0 -ms- | 28.018.0 -moz- | 9.06.1 -webkit- | 17.0 |} == 定义和用法 == flex-shrink 属性指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。 '''注意:'''如果元素不是弹性盒对象的元素,则 flex-shrink 属性不起作用。 {| class="table table-striped table-hover" |width="50%"| 默认值: |width="50%"| 1 |- | 继承: | 否 |- | 可动画化: | 是。请参阅 [[css animatable|可动画化(animatable)]]。 <run name=""> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>小白教程(xiaobai.wang)</title> <style> #main { width: 350px; height: 100px; border: 1px solid #c3c3c3; display: flex; } #main div { flex-grow: 1; flex-shrink: 1; flex-basis: 300px; } #myBlueDiv { animation:mymove 5s infinite; /*Safari 和 Chrome:*/ -webkit-animation:mymove 5s infinite; } @keyframes mymove { 50% {flex-shrink:8;} } /*Safari 和 Chrome:*/ @-webkit-keyframes mymove { 50% {flex-shrink:8;} } </style> </head> <body> <p>"blue DIV" 的 flex-shrink 属性逐渐地从 1 变化到 8,然后再变回 1:<p> <div id="main"> <div style="background-color:coral;">红色 DIV</div> <div style="background-color:lightblue;" id="myBlueDiv">蓝色 DIV</div> </div> <p>在 CSS 中,flex-shrink 属性是 <em>可动画化(animatable)</em> 的。</p> <p>Internet Explorer 10、Firefox 和 Opera 支持 CSS 动画。</p> <p>Safari 和 Chrome 通过带有前缀 -webkit-,支持 CSS 动画。</p> </body> </html> </run> |- | 版本: | CSS3 |- | JavaScript 语法: | object.style.flexShrink="5" <run name=""> <!DOCTYPE html> <html> <head> <style> #main { width: 350px; height: 100px; border: 1px solid #c3c3c3; display: flex; } #main div { flex-grow: 1; flex-shrink: 1; flex-basis: 300px; } </style> </head> <body> <div id="main"> <div style="background-color:coral;">红色 DIV</div> <div style="background-color:lightblue;" id="myBlueDiv">蓝色 DIV</div> </div> <p>点击“尝试一下”按钮设置蓝色 div 元素的 flexShrink 属性的值为 "5"。</p> <button onclick="myFunction()">尝试一下</button> <script> function myFunction() { document.getElementById("myBlueDiv").style.flexShrink = "5"; } </script> <p><b>注意:</b>Internet Explorer 和 Safari 不支持 flexShrink 属性。</p> </body> </html> </run> |} == CSS 语法 == <pre> flex-shrink: number|initial|inherit;</pre> == 属性值 == {| class="table table-striped table-hover" ! 值 ! 描述 |- | number | 一个数字,规定项目将相对于其他灵活的项目进行收缩的量。默认值是 1。 |- | initial | 设置该属性为它的默认值。请参阅 [[css initial|initial]]。 |- | inherit | 从父元素继承该属性。请参阅 [[css inherit|inherit]]。 |} == 相关文章 == CSS 参考手册:[[css3 pr flex|flex 属性]] CSS 参考手册:[[css3 pr flex basis|flex-basis 属性]] CSS 参考手册:[[css3 pr flex direction|flex-direction 属性]] CSS 参考手册:[[css3 pr flex flow|flex-flow 属性]] CSS 参考手册:[[css3 pr flex grow|flex-grow 属性]] CSS 参考手册:[[css3 pr flex wrap|flex-wrap 属性]] [[css reference|CSS 参考手册]]
返回至“
Css3 pr flex shrink
”。
上一节:
Css3_pr_flex_grow
下一节:
Css3_pr_flex_basis