zoukankan      html  css  js  c++  java
  • Grid布局

    grid基础

    grid布局将页面以行(row)和列(column)为坐标将页面划分成任意以块为单位的布局。可实现如下图所示布局。

    该布局的设计思路:

    <head>
      <title>Using CSS Grid</title>
      <style>
        body {
          color: #fff;
          font-family: 'Nunito Semibold';
          text-align: center;
        }
    
        #content {
          display: grid;  //将元素设置为grid布局的容器
          /* grid-template-columns: 30% 20% 50%; */  //将列划分为三个长度分别位元素宽度的30%,20%,50%的区域
          /* grid-template-columns: repeat(3, 1fr); */  //将列划分为三个长度相等的区域
          grid-template-columns: 1fr 2fr; //将列划分为两个长度比为1:2的区域
          grid-auto-rows: minmax(150px, auto);  //设置每行的宽度最小值为150px,最大值为auto
          max- 960px;
          margin: 0 auto;
        }
    
        #content>* {
          padding: 10px;
        }
    
        header {
        	//将header设置为列横跨两个区域的子元素(此时的长度为最小值150px)
          grid-column: span 2;
          background: #3bbced;
        }
    
        main {
        	//在设置容器的列划分为两块时,相当于有三条线将容器分割,即以分割线为基准出现了三个对应列位置
          grid-column: 2 / 3; //将main元素的开始位置和结束位置分别设置为2和3
          grid-row: 2 / 4;  //header的上下边界分别为容器行位置的1和2,将main的行的开始和结束位置放在2和4(即表示main跨越了两个行区域)
          background: #e82b69;
        }
    
        aside {
          grid-column: 1 / 2;  //将aside元素的开始结束位置分别设置为1和2则会自动填充到main左侧的第一行位置
          background: #fac24a;
        }
    
        nav {
          grid-column: 1 / 2;  //将nav元素的开始结束位置分别设置为1和2则会自动填充到main左侧的第二行位置
          background: #8ae348;
        }
    
        footer {
          grid-column: span 2;
          background: #a56dda;
        }
      </style>
    </head>
    
    <body>
    
      <div id="content">
    
        <header>Header</header>
    
        <main>Main</main>
    
        <aside>Aside</aside>
    
        <nav>Nav</nav>
    
        <footer>Footer</footer>
    
      </div>
    
    </body>
    

    该布局将id为content的div设置成容器划分成如下网格:

    grid-template-columns/rows:

    设置容器的行、列的分布形式

    grid-template-columns: 30% 20% 50%;
    grid-template-columns: repeat(3, 1fr);
    grid-template-columns: 1fr 2fr;
    

    grid-template-areas:

    1.给每个区域命名

    grid-template-areas: 
          "header header header header"  //第一行的四个网格都被命名为header
          "aside aside main main"
          "nav nav main main"
          "section section section section"
          "section section section section"
          "footer footer footer footer";
    

    2.给对应的元素设置所在的网格区域

    header{
      grid-area: header;
    }
    main {
      grid-area: main;
    }
    section {
      grid-area: section;
    }
    

    grid-auto-rows/columns

    自动创建的空网格的长宽

    grid-auto-rows: minmax(150px, auto);
    grid-auto-rows: 150px;
    

    grid-column/row (grid-column-start/end):

    设置该元素在网格中的开始与结束位置(以列为例,1即为从构成列的所有竖线中从作数第一根,行为从上到下)

    grid-column-start: 2;
    grid-column-end: 3;
    grid-column: 2 / 3; //(sart/end)
    

    grid-gap:

    设置元素间的空隙

    grid-row-gap: 10px;
    grid-column-gap: 10px;
    grid-gap: 10px;
    

    可在grid布局里嵌套grid布局

    水平、垂直对齐

    justify/align-self

    设置网格内容的位置

     justify-self: end; //水平
     align-self: end;  //垂直
     //place-self: center (justify,align)
    

    (start | end | center | stretch )

    justify/align-content

    整个表格内容在容器里的位置

    justify-content: start;
    align-content: start;
    //place-content: center; (align,justify)
    

    (start | end | center | stretch | space-around | space-between | space-evenly)

    马赛克布局(mosaic-layout)

    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        body{
        color: #fff;
        font-family: 'Nunito Semibold';
        text-align: center;
        background: #3bbced;
        }
        #content{
        display: grid;
        grid-template-columns: repeat(6, 1fr);
        grid-auto-rows: minmax(150px, auto);
        grid-gap: 10px;
        max- 960px;
        margin: 0 auto;
        }
        #content div{
        background: #333;
        padding: 30px;
        }
        .one {
          grid-column: 1 / 3;
          grid-row: 1 / 5;
        }
        .two {
          grid-column: 3 / 7;
          grid-row: 1 / 3;
        }
        .three {
          grid-column: 3 /5;
          grid-row: 3 / 5;
        }
        .four {
          grid-column: 5 /7;
          grid-row: 3 / 7;
        }
        .five {
          grid-column: 1 / 5;
          grid-row: 5 / 7;
        }
        #content {
          transform: rotateZ(45deg) scale(0.7);
        }
      </style>
    </head>
    <body>
      <div id="content">
        <div class="one">1</div>
        <div class="two">2</div>
        <div class="three">3</div>
        <div class="four">4</div>
        <div class="five">5</div>
      </div>
    </body>
    

  • 相关阅读:
    CentOS 7 SSH远程证书登陆
    Keepalived安装配置入门
    Docker-Compose 一键部署Ningx+.Net Core+Redis集群
    .Net Core Cookie跨站点共享 会话保持
    .Net Core EF Core之Sqlite使用及部署
    CentOS 7 Fail2ban防暴力破解
    CentOS 7 Nginx安装配置
    CentOS 7 Firewalld 常用操作
    Linux 修改SSH端口及禁用ROOT远程SSH登陆
    Mysql MariaDB安装
  • 原文地址:https://www.cnblogs.com/xuewting/p/13618900.html
Copyright © 2011-2022 走看看