前端第八天

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

第八天内容为CSS Grid。

一、Grid Columns & Rows

grid 类似于flex,但是不同的是grid是二维的。使用方法为

.grid{
	display: grid;
}

grid-template-columns 属性用来定义行的排布,如下图示例一意为一行有三个grid项目,分别占1个单位、2个单位和2个单位宽度。每行的三个项目会填充整行。fr 单位代表网格容器中可用空间的一等份。
示例二用了repeat函数,前一个值为个数,后一个为设置。auto意为自动填补剩余,3, auto就表明一行三个项目自动填充整行(均匀的)。grid-gap为每个grid项目间的间距。

.grid{
	display: grid;
	grid-template-columns: 1fr 2fr 2fr;/*示例1*/
	grid-template-columns: repeat(3, auto);/*示例2*/
	grid-gap: 1rem;
}

grid-template-rows属性用来定义列的排布,使用方法column一样。

.grid{
	display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: 1fr 2fr 3fr;
    grid-auto-rows: 3fr;
}

二、Grid Span

span(跨度),用来作为属性的值。下例中第一行表示第一个孩子元素的行从第一个间隔线开始,第二行表示第一个孩子元素的行从第四个间隔线结束。三四行表示列,
最后两行运用了span,1代表起始,span后的数字代表跨越几个间隔。故1 / span 3 的长度为即表示第一二行。

.item:first-child{
      grid-column-start: 1;
      grid-column-end: 4;
      grid-row-start: 1;
      grid-row-end: 3;
      grid-column: 1 / span 3;
      grid-row: 1 / span 2;
    }

三、autofill & minmax

该方法没有给定每行的项目个数,根据实际情况自动填充。每个项目的大小根据后面的minmax变化。如下例,minmax(200px, 1fr)含义是每一个列的宽度最小是200像素,最大是1fr,也就是等分宽度。假设容器现在的宽度是500像素,此时每一列的宽度应该是250px,因为此时一定是两列,因为每一列的最小宽度是200像素,至少应该是500/200列,由于有1fr的最大宽度限制,因此,每一列的宽度是2列等分尺寸也就是500px/2。换句话说,最小200px,满足后所有项目为1fr。

	.grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
      }

四、grid-template

grid-template类似于一种可视化,可以参考下例。引号部分很直观的展现每个项目的排布。第一行全部是header,第二行content和sidebar占比2:1,第三行box-1和box-2占比1:2,以此类推。

	<style>
    .container{
      display: grid;
      grid-template-areas: 
      'header header header'
      'content content sidebar'
      'box-1 box-2 box-2'
      'box-3 box-3 box-3' 
      'footer footer footer';
      grid-gap: 1rem;
    }

五、grid media queries

和正常的media-queries类似,故不再赘述。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值