CSS比拟函数有三个:
- max()
- min()
- clamp()
min与max
CSS min,max函数作用相似于js函数中的min,max,用于取多个属性中的最小值或者最大值,属性之间用逗号分隔。例子如下
width: min(100px,200px,300px); //取值100px height: max(100px,200px,300px); //取值300px
如图,宽度取了最小值100px,高度取了最大值300px.
clamp
clamp函数须要传入3个参数,一个最小值,一个默认值,一个最大值,用于解决边界值,当默认值大于最大值时,取最大值,小于最小值时,取最小值,介于最小与最大之间时,取默认值。
应用办法
clamp(MIN,DEFAULT,MAX)
clamp就相当于max(MIN,min(DEFAULT,MAX))
案例
font-size: clamp(20px,10vw,40px);
剖析下,当10vw小于20px,也就是页面宽度小于等于200px时,字体最小为20px,当10vw大于40px,也就是页面宽度大于等于400px时,字体最大为40px.处于200px-400px之间的,则依照 width/10的计算公式进行计算,上面验证一下
小于200px
大于400px
200px到400px之间
兼容性
能够看出这3个函数都是最近不久才进去的,所以兼容性不太好,国产浏览器全挂,支流浏览器最新的版本根本可能反对,这是个坏事,因为这三个数学在响应式开发中的作用还是很显著的,将来或者这3个函数在响应式开发中的比重会缓缓的失去晋升。
罕用的应用场景
上面会列举几个罕用的应用场景
侧边栏响应
对于侧边栏布局,须要侧边栏固定宽度,做响应式时能够思考超过最大宽度时通过vw来固定侧边栏的占比
aside { background: #ccc; flex-basis: max(30vw, 150px); } main { background: #09acdd; flex-grow: 1; }
字体响应
通过clamp限度最大最小值,而后两头的默认值依据视窗扭转
font-size: clamp(20px, 10vw, 40px);
突变平滑过渡
突变指定突变的梯度线,依照个别操作会呈现过渡不够平滑的状况,在挪动端会有一条显著的过渡线
background: linear-gradient(135deg, #2c3e50, #2c3e50, #3498db);
利用min批改一下,过渡会更加平滑一点
background: linear-gradient(135deg, #2c3e50, #2c3e50 min(20vw, 60%), #3498db);
动静容器宽度
在理论使用中,比方如果咱们想在桌面端限定宽度,在挪动端显示100%,须要这样写
.container{ width: 1440px; max-width: 100%; }
当初只须要
.container{ width: min(1440px,100%); }
十分简洁明了。
总结
这3个函数实用于响应式布局的开发,在不须要思考兼容性问题的状况下能够酌情应用,但如果要思考兼容性,还是最好不要应用。我最近在总结css函数相干的货色,欢送各位继续关注,源码在这,戳这里戳这里