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; width: 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; width: 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 這個單位就不用去計算了,瀏覽器會自動去適配,是不是很人性化