css 新单位 fr

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 这个单位就不用去计算了,浏览器会自动去适配,是不是很人性化

posted on 2017-06-22 14:44  sjpqy  阅读(2104)  评论(0编辑  收藏  举报

导航