fr是css刚出的一个新的单位,目前经过测试在chrome和firefox是可以支持的
举个案列,拿一个网格布局来说吧
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> * { margin: 0px; padding: 0px; } .grid { height: 500px; 500px; background: #ccc; margin: 20px auto; overflow: auto; display: grid; grid-template-columns: repeat(4, 25%); grid-column-gap: 10px; } .column { background: #f66; } </style> </head> <body> <div class="grid"> <div class="column">1</div> <div class="column">2</div> <div class="column">3</div> <div class="column">4</div> </div> </body> </html>
看一下效果
这时会发现下面出现了滚动条,如果不是4个网格而是11个网格呢,那计算起来就非常麻烦了,那个网格布局还提供了另一种写法,就是把算数交给计算机来处理,那就改成这样
grid-template-columns: repeat(4, calc(100%/4));
这样还是有滚动条,那就再进一步优化
grid-template-columns: repeat(4, calc((100% - 10px * 3)/ 4));
这样写就可以消除滚动条,这只是对于少量的网格布局适用,对于无数个网格怎么办呢,这时我们的 fr 单位就出场了
我们来看一个复杂的列子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> * { margin: 0px; padding: 0px; } .grid { height: 500px; 500px; background: #ccc; margin: 20px auto; overflow: auto; display: grid; grid-template-columns: 100px repeat(11, 1fr); grid-column-gap: 10px; } .column { background: #f66; } </style> </head> <body> <div class="grid"> <div class="column">1</div> <div class="column">2</div> <div class="column">3</div> <div class="column">4</div> <div class="column">5</div> <div class="column">6</div> <div class="column">7</div> <div class="column">8</div> <div class="column">9</div> <div class="column">10</div> <div class="column">11</div> <div class="column">12</div> </div> </body> </html>
看一下效果
用了fr 这个单位就不用去计算了,浏览器会自动去适配,是不是很人性化