css 网格布局

article/2025/9/28 2:38:52

简介: 网格是由一系列水平及垂直的线构成的一种布局模式。一个网格通常具有许多的列(column)行(row),以及行与行、列与列之间的间隙,这个间隙一般被称为沟槽(gutter)。

一、display 属性

当一个 HTML 元素将 display 属性设置为 gridinline-grid 后,它就变成了一个网格容器,这个元素的所有直系子元素将成为网格元素。

例:display:grid

<!DOCTYPE html>
<html lang="en-us">
<head><meta charset="utf-8" /><meta name="viewport" content="width=device-width" /><title>CSS Grid - line-based placement starting point</title><style>body {width: 90%;max-width: 900px;margin: 2em auto;font: 0.9em/1.2 Arial, Helvetica, sans-serif;}.container {display: grid;min-width: 200px;grid-template-columns: 1fr 1fr;background: bisque;}.container > div{height: 100px;border: 3px solid blueviolet;text-align: center;line-height: 100px;color: blue;font-size: 15px;font-weight: bold;}</style>
</head>
<body>
<div class="container"><div>1</div><div>2</div><div>3</div>
</div>
</body>
</html>

结果:
在这里插入图片描述
例:display:inline-grid

<!DOCTYPE html>
<html lang="en-us">
<head><meta charset="utf-8" /><meta name="viewport" content="width=device-width" /><title>CSS Grid - line-based placement starting point</title><style>body {width: 90%;max-width: 900px;margin: 2em auto;font: 0.9em/1.2 Arial, Helvetica, sans-serif;}.container {display: inline-grid;min-width: 200px;grid-template-columns: 1fr 1fr;background: bisque;}.container > div{height: 100px;border: 3px solid blueviolet;text-align: center;line-height: 100px;color: blue;font-size: 15px;font-weight: bold;}</style>
</head>
<body>
<div class="container"><div>1</div><div>2</div><div>3</div>
</div>
</body>
</html>

结果:
在这里插入图片描述

二、网格轨道

我们通过 grid-template-columnsgrid-template-rows 属性来定义网格中的行和列。这些属性定义了网格的轨道,一个网格轨道就是网格中任意两条线之间的空间。

列设置:

grid-template-columns:1fr 2fr 1fr; //三列,宽度分成四份,第一和第三列占一份,第二列占两份

注意:除了长度和百分比,我们也可以用fr这个单位来灵活地定义网格的行与列的大小,这个单位表示了可用空间的一个比例

行设置:

grid-template-rows:100px 200px; //两行,第一行是100px,第二行是200px

例:

<!DOCTYPE html>
<html lang="en-us">
<head><meta charset="utf-8" /><meta name="viewport" content="width=device-width" /><title>CSS Grid - line-based placement starting point</title><style>body {width: 90%;max-width: 900px;margin: 2em auto;font: 0.9em/1.2 Arial, Helvetica, sans-serif;}.container {display: grid;min-width: 200px;grid-template-columns: 1fr 2fr 1fr;grid-template-rows: 100px 200px;background: bisque;}.container > div{border: 3px solid blueviolet;text-align: center;line-height: 100px;color: blue;font-size: 15px;font-weight: bold;}</style>
</head>
<body>
<div class="container"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div>
</div>
</body>
</html>

结果:
在这里插入图片描述

三、网格间隙

使用 grid-column-gap 属性来定义列间隙;使用 grid-row-gap 来定义行间隙;使用 grid-gap 可以同时设定两者。

例:grid-gap:10px;

<!DOCTYPE html>
<html lang="en-us">
<head><meta charset="utf-8" /><meta name="viewport" content="width=device-width" /><title>CSS Grid - line-based placement starting point</title><style>body {width: 90%;max-width: 900px;margin: 2em auto;font: 0.9em/1.2 Arial, Helvetica, sans-serif;}.container {display: grid;min-width: 200px;grid-template-columns: 1fr 2fr 1fr;grid-template-rows: 100px 200px;gap: 10px;background: bisque;}.container > div{border: 3px solid blueviolet;text-align: center;line-height: 100px;color: blue;font-size: 15px;font-weight: bold;}</style>
</head>
<body>
<div class="container"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div>
</div>
</body>
</html>

结果:
在这里插入图片描述
例:grid-column-gap:10px;
在这里插入图片描述
例:grid-row-gap:10px;
在这里插入图片描述

四、隐式网格

隐式网格中生成的行/列大小是参数默认是auto,大小会根据放入的内容自动调整。当然,你也可以使用grid-auto-rowsgrid-auto-columns属性手动设定隐式网格的大小。

显式网格与隐式网格的区别

例:行设置

grid-template-rows: 100px 200px;

在这里插入图片描述

grid-auto-rows: 100px 200px;

在这里插入图片描述

五、网格区域

网格元素可以向行或着列的方向扩展一个或多个单元,并且会创建一个网格区域。网格区域的形状应该是一个矩形 ,也就是说你不可能创建出一个类似于"L"形的网格区域

在这里插入图片描述
我们根据这些分隔线来放置元素,通过以下属性来指定从那条线开始到哪条线结束。

grid-column-start 
grid-column-end 
grid-row-start 
grid-row-end 

这些属性的值均为分隔线序号,你也可以用以下缩写形式来同时指定开始与结束的线。

grid-column 
grid-row

例:

<!DOCTYPE html>
<html lang="en-us">
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width"><title>CSS Grid - line-based placement starting point</title><style>body {width: 90%;max-width: 900px;margin: 2em auto;font: .9em/1.2 Arial, Helvetica, sans-serif;}.container {display: grid;grid-template-columns: repeat(12, minmax(0,1fr));gap: 20px;}header,footer {border-radius: 5px;padding: 10px;background-color: rgb(207,232,220);border: 2px solid rgb(79,185,227);}aside {border-right: 1px solid #999;}header {grid-column: 1 / 13;grid-row: 1;}article {grid-column: 4 / 13;grid-row: 2;}aside {grid-column: 1 / 4;grid-row: 2;}footer {grid-column: 1 / 13;grid-row: 3;}</style>
</head><body><div class="container"><header>This is my lovely blog</header><article><h1>My article</h1><p>Duis felis orci, pulvinar id metus ut, rutrum luctus orci. Cras porttitor imperdiet nunc, at ultricies tellus laoreet sit amet. Sed auctor cursus massa at porta. Integer ligula ipsum, tristique sit amet orci vel, viverra egestas ligula. Curabitur vehicula tellus neque, ac ornare ex malesuada et. In vitae convallis lacus. Aliquam erat volutpat. Suspendisse ac imperdiet turpis. Aenean finibus sollicitudin eros pharetra congue. Duis ornare egestas augue ut luctus. Proin blandit quam nec lacus varius commodo et a urna. Ut id ornare felis, eget fermentum sapien.</p><p>Nam vulputate diam nec tempor bibendum. Donec luctus augue eget malesuada ultrices. Phasellus turpis est, posuere sit amet dapibus ut, facilisis sed est. Nam id risus quis ante semper consectetur eget aliquam lorem. Vivamus tristique elit dolor, sed pretium metus suscipit vel. Mauris ultricies lectus sed lobortis finibus. Vivamus eu urna eget velit cursus viverra quis vestibulum sem. Aliquam tincidunt eget purus in interdum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p></article><aside><h2>Other things</h2><p>Nam vulputate diam nec tempor bibendum. Donec luctus augue eget malesuada ultrices. Phasellus turpis est, posuere sit amet dapibus ut, facilisis sed est.</p></aside><footer>Contact me@mysite.com</footer>
</div></body></html>

结果:
在这里插入图片描述
注意: 以上例子函数的使用
1、minmax():为一个行/列的尺寸设置了取值范围。比如设定为 minmax(100px, auto),那么尺寸就至少为 100 像素,并且如果内容尺寸大于 100 像素则会根据内容自动调整。
2、repeat():表示轨道列表的重复片段,允许以更紧凑的形式写入大量显示重复模式的列或行


http://chatgpt.dhexx.cn/article/BJvWKsmw.shtml

相关文章

微信小程序的页面布局(1)

微信小程序的页面布局主要用到两个文件&#xff0c;wxml&#xff08;摆放各种组件&#xff09;和wxss&#xff08;设计排版&#xff09; 因此&#xff0c;我们首先将要用到的组件按照一定的组织排序扔进wxml文件里&#xff0c;什么叫组织排序呢&#xff0c;这里注意就是组件与组…

微信小程序~利用模板实现《福利》页面的网格布局

什么是模板&#xff1f; 在微信小程序中&#xff0c;使用template来表示模板 为什么要使用模板&#xff1f; 使用模板文件能够降低代码重构&#xff0c;提高代码的复用性。 如何使用&#xff1f; 页面内使用&#xff1a;在页面内直接声明一个template并且引用代码如下&#xf…

【HTML/CSS】网格布局小案例

代码如下&#xff08;可以改动精简一些&#xff0c;我不想改了&#xff0c;改一下估计50行就够了&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compati…

微信小程序第三天(布局:栅格布局)

我根据微信小程序的特点弄了一套简单的栅格布局。 .row {display: block;margin: 0px; }.col {display: flex;font-family: -apple-system-font, "Helvetica Neue", sans-serif;font-size: 17px; }.col>.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7,…

HTML5 网页栅格布局

栅格布局&#xff1a;也称为网格系统&#xff0c;运用固定的格子设计版面布局。 Demo <!DOCTYPE HTML> <html><head><meta charset"UTF-8"/><title>栅格布局</title><style type"text/css">/*清空所有标签外边…

小程序宫格布局

之前写小程序的时候用了iview的宫格&#xff0c;好像跳过了很多要自己写的坑&#xff0c;今天测试了下&#xff0c;总结一下方法。注意小程序中flex和grid的用法有很多不一眼&#xff01;小心甄别&#xff01; 1.使用iview 去iview weapp github 引入index.json {"us…

Grid 布局 - 网格布局

目录 一、什么是Grid布局 二、容器属性值 2.1 grid-template-rows和grid-template-columns 2.1.1 grid-template-columns 2.1.2 grid-template-rows 2.2 row-grap和column-grap 2.2.1 row-grap 2.2.2 column-grap 2.3 grid-template-area 2.4 grid-auto-flow 2.5 just…

微信小程序----Grid(九宫格)(flex实现九宫格布局)

效果二维码 效果图 WXML <view class"section"><view class"tui-table-view"><view class"tui-col-3"><icon class"iconfont icon-shouye"></icon><view>Home</view></view><vie…

前端网格布局grid

网格布局 <style> .container {border:none;display: grid;height: 600px;grid-template-columns: 200px 1fr; /*两列&#xff0c;第一列200px&#xff0c;第二列自适应*/grid-template-rows: 50px 1fr 30px; /*三行&#xff1a;第一行&#xff1a;50px,第二行&#…

css【详解】grid布局—— 网格布局(栅格布局)

网格布局&#xff08;Grid&#xff09;是最强大的 CSS 布局方案 grid布局 和 flex布局的区别 Flex 布局是轴线布局&#xff0c;只能指定"项目"针对轴线的位置&#xff0c;可以看作是一维布局。 Grid 布局则是将容器划分成"行"和"列"&#xff0c…

微信小程序布局技巧(一)

微信小程序布局技巧&#xff08;一&#xff09; 前言小程序布局方式Block布局方式flex布局方式wxss添加样式wxml应用样式效果 flex布局种类justify-content属性align-items属性flex-wrap 属性 应用尾巴 前言 友情提示&#xff0c;阅读本文之前&#xff0c;可能需要有一点微信小…

微信小程序中通过flex实现网格布局(一)

这篇文章主要是通过flex布局实现网格布局。 准备知识&#xff1a; 数组的undefined的问题 一般来说&#xff0c;网格布局是特殊的列表&#xff0c;后台返回的数据是一维数组。而我们通常使用wx:for的方式将数据填充进去。数据格式如下&#xff1a; let dataList [a,b,c,d]d…

网格布局,实现网页图片不规则排版

1、网格布局的含义&#xff0c;及与弹性盒布局的区别 含义&#xff1a;它将网页划分成一个个网格&#xff0c;可以任意组合不同的网格&#xff0c;做出各式各样的布局&#xff1b; 区别&#xff1a;Grid布局与Flex布局有一定的相似性&#xff0c;都可以指定容器内部多个项目的…

6、微信小程序的布局

文章目录 前言一、传统基本布局1.盒子模型2.显示方式Display3.定位position4.溢出属性Overflow5.浮动Float6.对齐 二、Flex弹性布局1.基本属性2.使用示例 前言 wxss 指的是 Wei Xin Style Sheet&#xff0c;微信团队定义的一套用以实现小程序布局样式的层叠样式表&#xff0c;…

微信小程序 居中、居右、居底和横向、纵向布局,文字在图片中间,网格布局

微信小程序居中、居右、横纵布局 1、水平垂直居中&#xff08;相对父类控件&#xff09;方式一&#xff1a;水平垂直居中 父类控件&#xff1a; display: flex;align-items: center;//子控件垂直居中justify-content: center;//子控件水平居中width: 100%;height: 400px //注意…

微信小程序居中、居右、居底和横向、纵向布局,文字在图片中间,网格布局

微信小程序居中、居右、横纵布局 1、水平垂直居中&#xff08;相对父类控件&#xff09; 方式一&#xff1a;水平垂直居中 父类控件&#xff1a; display: flex;align-items: center;//子控件垂直居中justify-content: center;//子控件水平居中width: 100%;height: 400px//注…

小程序中的网格布局

在日常小程序开发中,第一个遇到的问题是页面布局的问题。设计师给的设计稿通常是一个静态的图片,我们要把图片转换成实际可以使用的布局。在电商场景中,我们经常会看到商品的两列布局,通常在CSS中,两列布局可以使用网格布局的方案解决。我们本篇就讲解一下CSS的网格布局,…

微信小程序: 使用grid进行网格布局

grid与flex一样用于页面布局。flex用于一维布局&#xff0c;grid用于二维布局。所以有时候一些网格状的布局相对于grid来说会更加方便。 注意&#xff0c;设为网格布局以后&#xff0c;容器子元素&#xff08;项目&#xff09;的float、display: inline-block、display: table-…

Spug - 轻量级自动化运维平台

Spug - 轻量级自动化运维平台 对于中小型企业而言&#xff0c;进行主机和应用的管理是比较麻烦的&#xff0c;应用部署往往需要直接连接服务器&#xff0c;再进行手动的环境配置、代码拉取、应用构建和部署发布等工作&#xff0c;容易出错&#xff0c;且耗时费力。一个好的自动…

网络自动化运维(NetDevOps)创作者推荐

前言&#xff1a; 随着NetDevOps技术登上了历史舞台&#xff0c;越来越多的从业者开始利用NetDevOps简化网络的运维&#xff0c;并进行了技术分享&#xff0c;将蛋糕越做越大。在这里&#xff0c;仅代表个人对这些无私奉献的网络、运维工程师们表达由衷的敬意。 此外&#xff…