css:Grid网格布局学习笔记

简介: css:Grid网格布局学习笔记

Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。

Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。

Grid 布局远比 Flex 布局强大。

.grid {
    /* 块级元素 */
    display: grid;
}

容器属性

1、划分行和列


指定列宽 grid-template-columns

指定行高 grid-template-rows


允许的值:
100px 100px 100px;
33.33% 33.33% 33.33%;
repeat(3, 33.33%); (重复的次数, 重复值)
repeat(auto-fill, 100px); 自动填充
1fr 2fr; 比例关系
150px 1fr 2fr;
1fr 1fr minmax(100px, 1fr); 长度范围
100px auto 100px; 由浏览器自己决定长度
[c1] 100px [c2] 100px [c3] auto [c4]; 网格线的名称

2、行列间距


行间距 grid-row-gap (row-gap)
列间距 grid-column-gap (column-gap)
grid-gap (gap): <grid-row-gap> <grid-column-gap>;

3、指定"区域"


grid-template-areas: 'a b c'
                       'd e f'
                       'g h i';

4、放置顺序


grid-auto-flow
row 先行后列 (默认)
column 先列后行

5、单元格对齐


水平位置 justify-items: 
start | end | center | stretch(default);
垂直位置 align-items: 
start | end | center | stretch(default);
place-items: <align-items> <justify-items>;

6、内容对齐


水平位置justify-content: 
start | end | center | stretch | space-around | space-between | space-evenly;
垂直位置align-content: 
start | end | center | stretch | space-around | space-between | space-evenly; 
place-content: <align-content> <justify-content>

7、多余网格的列宽和行高


grid-auto-columns
grid-auto-rows
写法与grid-template-columns和grid-template-rows完全相同

8、合并简写


grid-template: <grid-template-columns> <grid-template-rows> <grid-template-areas>
grid: <grid-template-rows> <grid-template-columns> <grid-template-areas> <grid-auto-rows> <grid-auto-columns> <grid-auto-flow>

易读易写的角度考虑,还是建议不要合并属性


项目属性

1、网格线定位


grid-column-start:左边框所在的垂直网格线
grid-column-end:右边框所在的垂直网格线
grid-row-start:上边框所在的水平网格线
grid-row-end属性:下边框所在的水平网格线
允许值:
指定为网格线的序号 1
指定为网格线的名字 header-start
跨越网格 span 2;
grid-column: <grid-column-start> / <grid-column-end>
grid-row: <grid-row-start> / <grid-row-end>

2、指定项目区域


grid-area
允许值
区域名: e
指定项目的位置:<row-start> / <column-start> / <row-end> / <column-end>;

3、单元格内容对齐


水平位置 justify-self(左中右),与justify-items一致
垂直位置 align-self(上中下),与align-items一致
place-self: <align-self> <justify-self>;

布局实例

<style>
    .grid {
        /* 块级元素 */
        display: grid;
        /* 指定列宽  */
        grid-template-columns: 1fr 1fr 1fr;
        /* 指定行高 */
        grid-template-rows: repeat(3, 100px);
        /* 指定行列间距 */
        row-gap: 10px;
        column-gap: 10px;
        /* 放置顺序 */
        grid-auto-flow: row;
        /* 单元格对齐 */
        justify-items: stretch;
    }
    .column {
        background-color: #EEEEEE;
        text-align: center;
    }
</style>
<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>

效果

image.png

相关文章
|
1月前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
26天前
|
前端开发 JavaScript 开发者
掌握 CSS 弹性布局(Flexbox):构建复杂页面布局的高效秘籍与实战案例
CSS弹性布局(Flexbox)是现代网页设计中构建复杂页面布局的高效工具。本文将深入浅出地介绍Flexbox的核心概念、使用技巧及实际应用案例,帮助读者快速掌握这一强大布局方法。
|
1月前
|
前端开发 容器
实现CSS品字布局
【10月更文挑战第27天】
|
2月前
|
前端开发 容器
使用 CSS Grid 布局实现响应式设计
【10月更文挑战第1天】使用 CSS Grid 布局实现响应式设计
61 4
|
2月前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计
|
前端开发 容器 JavaScript
CSS Grid布局入门
相信大家都比较熟悉flex布局了,最近有空研究了波grid布局,感觉虽然兼容性还不是太高,应用不是太普遍,但是功能非常强大。未来应该是grid+flex为主流,grid是二维布局,很灵活,适合整体构架,而flex是一维布局,适合处理局部细节。
1183 0
|
4月前
|
前端开发
2s 利用 HTML+css动画实现企业官网效果
2s 利用 HTML+css动画实现企业官网效果
|
20天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
43 7
|
20天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
29 6