网格布局中 grid-template

grid-template

grid-template-areasgrid-template-rowsgrid-template-columns 三个属性的简写,用以定义网格中的 分区、行和列 。

取值:

  • none:将 grid-template-rows , grid-template-columns , grid-template-areas 三个属性设置为关键字 none,意味着没有明确的网格,没有命名的网格区域。行 和 列 将隐式生成, 他们的大小将由 grid-auto-rowsgrid-auto-columns 属性决定。

    /* Keyword value */
    grid-template: none;
    
  • < grid-template-rows > / < grid-template-columns >:设置 grid-template-rowsgrid-template-columns 指定的值,并设置 grid-template-areasnone

  • [ < line-names >? < string > < track-size >? < line-names >? ] + [ / < explicit-track-list > ]?< line-names >是网格名称, < string >grid-template-areas的名称,< track-size >grid-template-rows的值(无具体的值则设置成 auto ) ,然后按这种方式依次拼接。/ 后的 < explicit-track-list >grid-template-columns 的值。

    grid-template: [header-left] "head head" 30px [header-right]
                   [main-left]   "nav  main" 1fr  [main-right]
                   [footer-left] "nav  foot" 30px [footer-right]
    	           / 120px 1fr;
    

上面代码将创建 第一行的高度是30px ,第三行的高度是30px,中间行的高度填满剩余的高度;第一列宽度120px,剩下宽度填满剩余的列(第二列)。
举例:

html部分:

<div class="container">
        <header>Header</header>
        <nav>Nav</nav>
        <main>Main area</main>
        <footer>Footer</footer>
 </div>

css关键代码:

      .container {
           display: grid;
           height: 100vh;
           grid-template:
               [header-left] "head head" 50px [header-right]
               [main-left] "nav main" 1fr [main-right]
               [footer-left] "nav foot" 150px [footer-right]
                / 180px 1fr;
       }

       header {
           grid-area: head;
       }

       nav {
           grid-area: nav;
       }

       main {
           grid-area: main;
       }

       footer {
           grid-column: foot;
       }

最终效果:
在这里插入图片描述
所有代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>grid demo</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            font-size: 28px;
            color: #fff;
        }

        .container {
            display: grid;
            height: 100vh;
            grid-template:
                [header-left] "head head" 50px [header-right] [main-left] "nav main" 1fr [main-right]
                [footer-left] "nav foot" 150px [footer-right]
                 / 180px 1fr;
        }

        header {
            background-color: hotpink;
            grid-area: head;
        }

        nav {
            background-color: seagreen;
            grid-area: nav;
        }

        main {
            background-color: darkorange;
            grid-area: main;
        }

        footer {
            background-color: lightblue;
            grid-column: foot;
        }
    </style>
</head>

<body>
    <div class="container">
        <header>Header ( 高50px ) </header>
        <nav>Nav </br>( 高1fr )</br>( 宽 180px ) </nav>
        <main>Main area( 高1fr , 宽1fr) </main>
        <footer>Footer ( 高150px ) </footer>
    </div>
</body>

</html>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值