整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML 布局

页布局对改善网站的外观非常重要。

请慎重设计您的网页布局。

在线实例

使用 <div> 元素的网页布局

如何使用 <div> 元素添加布局。

使用 <table> 元素的网页布局

如何使用 <table> 元素添加布局。

网站布局

大多数网站会把内容安排到多个列中(就像杂志或报纸那样)。

大多数网站可以使用 <div> 或者 <table> 元素来创建多列。CSS 用于对元素进行定位,或者为页面创建背景以及色彩丰富的外观。

虽然我们可以使用HTML table标签来设计出漂亮的布局,但是table标签是不建议作为布局工具使用的 - 表格不是布局工具。

HTML 布局 - 使用<div> 元素

div 元素是用于分组 HTML 元素的块级元素。

下面的例子使用五个 div 元素来创建多列布局:

实例

<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body><divid="container"style="width:500px"><divid="header"style="background-color:#FFA500;"><h1style="margin-bottom:0;">主要的网页标题</h1></div><divid="menu"style="background-color:#FFD700;height:200px;width:100px;float:left;"><b>菜单</b><br>HTML<br>CSS<br>JavaScript</div><divid="content"style="background-color:#EEEEEE;height:200px;width:400px;float:left;">内容在这里</div><divid="footer"style="background-color:#FFA500;clear:both;text-align:center;">版权 © runoob.com</div></div></body></html>

上面的 HTML 代码会产生如下结果:

HTML 布局 - 使用表格

使用 HTML <table> 标签是创建布局的一种简单的方式。

大多数站点可以使用 <div> 或者 <table> 元素来创建多列。CSS 用于对元素进行定位,或者为页面创建背景以及色彩丰富的外观。

即使可以使用 HTML 表格来创建漂亮的布局,但设计表格的目的是呈现表格化数据 - 表格不是布局工具!

下面的例子使用三行两列的表格 - 第一和最后一行使用 colspan 属性来横跨两列:

实例

<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body><tablewidth="500"border="0"><tr><tdcolspan="2"style="background-color:#FFA500;"><h1>主要的网页标题</h1></td></tr><tr><tdstyle="background-color:#FFD700;width:100px;"><b>菜单</b><br>HTML<br>CSS<br>JavaScript</td><tdstyle="background-color:#eeeeee;height:200px;width:400px;">内容在这里</td></tr><tr><tdcolspan="2"style="background-color:#FFA500;text-align:center;">版权 © runoob.com</td></tr></table></body></html>

上面的 HTML 代码会产生以下结果:

HTML 布局 - 有用的提示

Tip: 使用 CSS 最大的好处是,如果把 CSS 代码存放到外部样式表中,那么站点会更易于维护。通过编辑单一的文件,就可以改变所有页面的布局。如需学习更多有关 CSS 的知识,请访问我们的CSS 教程。

Tip: 由于创建高级的布局非常耗时,使用模板是一个快速的选项。通过搜索引擎可以找到很多免费的网站模板(您可以使用这些预先构建好的网站布局,并优化它们)。

HTML 布局标签

标签描述
<div>定义文档区块,块级(block-level)
<span>定义 span,用来组合文档中的行内元素。

如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!

家好,我是Echa。

又到周五啦,提前祝大家周末愉快!今天来分享一些实用的前端工具!

1. Small Dev tools

Small Dev Tools 是一个前端工具网站,包含了很多实用的功能,比如JSON解码器、JSON格式化程序、UTF8编码、Base64编码、Base64解码、CSS格式化程序、CSS压缩器等。

官网:https://smalldev.tools/

2. Carbon

Carbon 是一个在线工具,可以生成漂亮的不同风格的代码图片。

官网:https://carbon.now.sh/

3. UI Design Daily

UI 设计日报,提供免费优质的 UI 资源。

官网:https://www.uidesigndaily.com/

4. Color Hunt

ColorHunt,即颜色猎人,是一个在线设计配色的网站,其最大的特点就是使用饱和度调配配色方案。每天会根据浏览量进行更新排版,并可以直接使用。

官网:https://colorhunt.co/

5. SCHEME COLOR

SCHEME COLOR 是一个在线的配色工具网站,可以根据颜色、类型等查找合适的配色方案。

官网:https://www.schemecolor.com/

6. Keyframes

Keyframes 可以用来创建动画、阴影和使用颜色,帮助我们编写更好的CSS。

官网:https://keyframes.app/

7. Design Resources

Design Resources 是一个设计资源的集合。

官网:https://www.designresourc.es/

8. Omatsuri

Omatsuri 是一个开源项目,包含12个实用的前端工具。

官网:https://omatsuri.app/

9. UI Snippets

UI Snippets 是一个前端动画合集,可以通过右键点击想要的动画直接复制对应的 CSS 或 SCSS 代码。

官网:https://ui-snippets.dev/

10. Pattern CSS

Pattern CSS 可以用漂亮的图案填充空白背景。

官网:https://bansal.io/pattern-css

11. Can I use

Can I use 可以用来查询 HTML5、CSS、JS、SVG 在各种流行浏览器中的特性和兼容性。

官网:https://caniuse.com/

12. CSS Gradient

CSS Gradient 是一个用来快速方便的创建 CSS 渐变的网站。

官网:https://cssgradient.io/

13.CSS matic

CSS matic 是一个 CSS 工具,目前包含4个很有用的工具,分别是:支持各种颜色和透明度的渐变工具,使用渐变工具,可以创建渐变平滑的色彩变化效果和微妙的透明胶片;边框圆角工具可以帮助你方便的实现需要的圆角效果;噪声纹理可以帮助你创造奇妙的背景图案,能够实时预览结果;盒阴影工具可以控制模糊半径的变化,颜色变化,阴影大小,可以实现你想要的任何效果。

官网:https://www.cssmatic.com/

14.Am I Responsive

Am I Responsive 用来测试响应式网页。输入链接即可生成预览,Am I Responsive 能帮我们测试出页面在手机、平板电脑、笔记本电脑和桌面端设备上的浏览体验。

官网:http://ami.responsivedesign.is/

15. CSS Generator

这是一个实用的 CSS 生成器,可以实时查看调试效果。

官网:https://html-css-js.com/css/generator/

16. My Brand New Logo

My Brand New Logo 是一个CSS 调色板生成器,用来创建一致的调色板方案。

官网:https://mybrandnewlogo.com/color-palette-generator

17. 裁剪路径生成器

CSS cli-path 功能能够构建复杂的形状,该工具让我们可以轻松地以交互方式构建该多边形。

官网:https://bennettfeely.com/clippy/

18. CSS Grid Generator

CSS Grid Generator 是一个 Grid 布局生成器,通过这个工具可以快速创建自定义CSS Grid布局。

官网:https://cssgrid-generator.netlify.app/

19. CSS Layout Generator

CSS Layout Generator 布局生成器可以为布局组件创建 CSS 和 HTML 的工具。

官网:https://layout.bradwoods.io/

20. Fluid-responsive font-size calculator

Fluid-responsive font-size calculator 即响应式字体计算器,可以轻松创建流畅的排版体验。它有更广泛的支持,可以用几行 CSS 来实现。

官网:https://websemantics.uk/tools/responsive-font-calculator/

21. regex101

Regex101是学习、测试正则表达式的工具网站。

官网:https://regex101.com/

22. Regex-Vis

Regex-Vis 是一个正则表达式可视化器和编辑器。


官网:https://regex-vis.com/

23. Loupe

Loupe 是一个可视化工具,可帮助我们了解 JavaScript 的调用堆栈/事件循环/回调队列是如何执行的。

官网:http://latentflip.com/loupe/

24. RunJS

RunJS 是一个桌面应用程序,可帮助我们编写专门的 Javascript 和 Typescript 代码。它的一些优势是可以快速测试代码,轻松导入和测试库代码,并且能够修改界面、主题和字体以适应偏好。

官网:https://runjs.dev/

25. Wrap SVG Online

Wrap SVG Online 通过拖放从计算机上传图像,可以轻松地编辑网页的 SVG 图像。

官网:https://pavellaptev.github.io/warp-svg/

26. SVG Path Visualizer

SVG Path Visualizer 可以帮助我们通过输入 SVG 路径数据来快速直观地查看 SVG 图像。此外,该工具还提供了详细的说明,以便了解如何创建基本的 SVG 形状,如直线、曲线、三角形等。

官网:https://svg-path-visualizer.netlify.app/

27. BGJar

BGJar 是一个在线工具,可以轻松快速地为网站创建 SVG 背景。只需编辑必要的信息,它将自动导出图像或代码供我们应用到网站。

官网:https://bgjar.com/

28. Wavesnippets

Wavesnippets 可以将代码分步设置为动画、视频或 GIF。

官网:https://www.wavesnippets.com/

29. Generate SVG Waves

Generate SVG Waves 可以用来创建 SVG 波形背景。

官网:https://svgwave.in/

30. CodeSandbox

CodeSandbox 是一个为 Web 应用程序开发而构建的在线编辑器,支持多种主流框架。

官网:https://codesandbox.io/

31. Openbase

Openbase 帮助开发人员在数以百万计的开源软件包中进行选择和使用。

官网:https://openbase.com/

32. CodePen

CodePen 是一个在线的前端代码编辑工具,可用于制作测试页面、代码调试,所见即所得。

官网:https://codepen.io/

33. JSONLint

JSONLint 是一个 JSON 调试工具,如果遗漏了语法中的某些内容,它会进行检查。JSONLint 是处理大型 JSON 格式的绝佳工具,而且很容易上手。

官网:https://jsonlint.com/

34. Minify

Minifier 可以对 JavaScript 和 CSS 代码进行压缩,通过缩小可以提高网站加载速度。Minifier 通过删除 .js 和 .css 文件中的空白并重新格式化它们以减小大小。

官网:https://www.minifier.org/

35. Unminify

Unminify 和 Minifier 恰恰相反。使用 Unminify 可以使 .js 或 .css 文件可读。这两种工具都非常容易使用。

官网:https://unminify.com/

36. CRADIENT.ART

CRADIENT.ART 是一个高级 CSS 渐变编辑器,使用带有分层、设计工具和免费云存储的功能丰富的编辑器设计插图、图案、图标等。

官网:https://gra.dient.art/

37. 3DPop

3DPop 可以使用 CSS 生成很棒的 3D 文本效果。

官网:https://textpop3d.web.app/

38. CSS Photo Filters

CSS Photo Filters 是一个CSS图片滤镜工具,提供了 36 个 CSS 过滤器供我们使用。

官网:https://baseline.is/tools/css-photo-filters/

上篇文章分享了一款史上最没用的中文版的CSS渐变色库,今天再来分享一篇它的兄弟库chinese-layout。

chinese-layout是一款利用CSS自定义属性来制作的中文布局CSS库,由于grid布局十分强大,强大到甚至只需要两行CSS代码就可以完成一个基本的布局。不过grid属性较多较为复杂,并且不支持IE浏览器等特点导致了许多人并不很了解它。


不过近些年来随着IE浏览器的逐步退出市场,兼容性已经不再是特别需要纠结的一件事情了:

可以看到各大浏览器的支持情况已经较为乐观了,为了让大家快速体验grid布局的强大之处,chinese-layout就此诞生!


该库的尺寸十分轻量级,只有不到1KB的大小(653字节),并且使用起来也是十分的方便。


使用方式

假设现在有一个ul元素,我们想要它变为一个九宫格的布局,首先需要在ul元素上写:

ul {
    /* 这个是固定写法,必须先指定display为grid */
    display: grid;
  
  /* grid属性需要指定哪种布局 */
  grid: var(--九宫格);
  
  /* 加入一点间距,让九个元素相互之间有一定的距离 */
  gap: 10px;
}

然后在父元素里面添加九个元素:

<ul>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
  <li></li>
</ul>

这就完事啦:

当然这里其实是省略了一些父元素上的宽高以及子元素的颜色等细节。

这些细节就交给你们来决定,在此案例中chinese-layout只负责将父元素分割成九等分。


本文采用了chinese-gradient来作为背景色

安装

要记得先引入这个库才能够去正常使用。如果你的项目是一个工程化的项目,那么:

npm i chinese-layout


记得要在主文件中引入:

import 'chinese-layout'


同时也支持sassless等,如:

import 'chinese-layout/chinese-layout.scss'


如果你只是想在<link>标签里引入的话,那么:

<link rel="stylesheet" href="https://unpkg.zhimg.com/chinese-layout">


全部布局


声明 display: grid;

首先一定要记得声明 display: grid;

因为chinese-layout底层依赖的就是grid布局。


居中

grid: var(--居中)


DOM结构:

<parent>
  <child/>
</parent>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>


这种布局需要先在父元素上写这么两行代码:

parent {
  display: grid;
  grid: var(--居中);
}

然后再在子元素上写上:

child {
  grid-area: 中;
} 

但是看起来除了灰蒙蒙一片的背景好像啥也没有是吧,那是因为我们没给子元素加上宽高,而且子元素里也没有任何的内容,导致子元素宽高为0不可见,那么现在我们来给子元素一个宽高再来看看:

child {
  width: 20px;
  height: 20px;
  grid-area: 中;
} 

子元素便会在父元素里水平垂直居中:


双列

grid: var(--双列)

DOM结构:

parent {
  display: grid;
  grid: var(--双列);
}

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>


来看看语法:

parent {
  display: grid;
  grid: var(--双列);
}

可以看到现在两列紧紧的贴合在一起了,不过有时候这两列我们并不想它们紧贴在一起,这时我们可以使用 gap 属性来控制列与列之间的间距:

parent {
  display: grid;
  grid: var(--双列);
  gap: 10px;
}

运行结果:

可以看到列与列直接距离变成我们设置的10px了,但 gap 属性只会改变列与列之间的距离,并不会改变与父元素之间的距离,所以之前紧贴着父元素的现在还是紧贴着父元素,如果想与父元素有间距的话可以给父元素加padding:

双列布局是不需要指定子元素的 grid-area 属性的,不过你要是非要想指定一下的话也不是不可以:

child1 {
    grid-area: 左;
}

child2 {
  grid-area: 右;
}

运行结果:

(可以通过指定grid-area来颠倒DOM位置,没事可以去试试)


三列

grid: var(--三列)


咦?这不是双列吗?说好的三列呢?

其实是这样,三列中的最中间一列被做成了自适应了,如果不给宽度并且也没有任何带宽度的子元素的话宽度就会为0,所以就看不到最中间那列啦!


那咱们给中间的DOM元素一个宽度吧:

<parent>
  <child1/>
  <child2/>
  <child3/>
</parent>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

parent {
    display: grid;
  grid: var(--三列);
}
child2 {
    width: 800px;
}

运行结果:

也可以不给宽度,直接用内容去撑开:

<parent>
  <child1/>
  <child2>child2</child2>
  <child3/>
</parent>

运行结果:


也同样可以用gap属性来控制间距:

parent {
    display: grid;
  grid: var(--三列);
  gap: 10px;
}
child2 {
    width: 800px;
}

运行结果:


三列布局是不需要指定子元素的 grid-area 属性的,不过你要是非要想指定一下的话也不是不可以:

child1 {
    grid-area: 左;
}

child2 {
  grid-area: 中;
}

child2 {
  grid-area: 右;
}

运行结果:

(可以通过指定子元素的 grid-area 属性来颠倒DOM位置,没事可以去试试)


吕形

grid: var(--吕形)


可是这看起来也不像吕形啊,吕不是应该上面一个口下面一个口吗?

其实还是那个原理:上面的盒子如果不给高度的话默认为0。


那咱们给个高度再看看:

<parent>
  <child1/>
  <child2/>
</parent>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

parent {
    display: grid;
  grid: var(--吕形);
}
child1 {
    height: 100px;
}
child2 {
    overflow-y: auto;
}

运行结果:


还可以通过 gap 属性来控制间距:

parent {
    display: grid;
  grid: var(--吕形);
  gap: 10px;
}
child1 {
    height: 100px;
}

运行结果:


也可以通过指定子元素的 grid-area 属性来颠倒DOM位置:

parent {
    display: grid;
  grid: var(--吕形);
  gap: 10px;
}
child1 {
  grid-area: 下;
  overflow-y: auto;
}
child2 {
  height: 100px;
  grid-area: 上;
}

运行结果:


上下栏

grid: var(--上下栏)


看过前面几种布局的朋友应该猜到了,是因为上盒子和下盒子没给高度导致现在只能看见中间那栏,咱们给个高度再来看看:

<parent>
  <child1/>
  <child2/>
  <child3/>
</parent>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

parent {
    display: grid;
  grid: var(--上下栏);
}
child1 {
    height: 80px;
}
child2 {
  overflow-y: auto;
}
child3 {
  height: 100px;
}

运行结果:


还可以通过 gap 属性来控制间距:

parent {
    display: grid;
  grid: var(--上下栏);
  gap: 10px;
}
child1 {
    height: 80px;
}
child2 {
  overflow-y: auto;
}
child3 {
  height: 100px;
}

运行结果:


也可以通过指定子元素的 grid-area 属性来颠倒DOM位置:

parent {
    display: grid;
  grid: var(--上下栏);
  gap: 10px;
}
child1 {
  grid-area: 中;
  overflow-y: auto;
}
child2 {
  height: 80px;
  grid-area: 上;
}
child3 {
  height: 100px;
  grid-area: 下;
}

运行结果:


四宫格

grid: var(--四宫格)


DOM结构:

<parent>
  <child1/>
  <child2/>
  <child3/>
  <child4/>
<parent/>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

parent {
  display: grid;
  grid: var(--四宫格);
}

如果不想各个宫格紧贴在一起,可以用 gap 属性来控制间距:

parent {
  display: grid;
  grid: var(--四宫格);
  gap: 10px;
}

运行结果:

gap 属性是控制行和列之间间距的,但如果你想要行间距和列间距不一样的话,就要用到下面两个属性了:

  • row-gap:行与行之间的间距
  • column-gap:列与列之间的间距


也可以通过 grid-area 属性来重新分配DOM元素的位置:

child1 { grid-area: 左上; }
child2 { grid-area: 右上; }
child3 { grid-area: 左下; }
child4 { grid-area: 右下; }

运行结果:


六宫格

grid: var(--六宫格)


DOM结构:

<parent>
  <child1/>
  <child2/>
  <child3/>
  <child4/>
  <child5/>
  <child6/>
<parent/>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

parent {
  display: grid;
  grid: var(--六宫格);
}

如果不想各个宫格紧贴在一起,可以用 gap 属性来控制间距:

parent {
  display: grid;
  grid: var(--六宫格);
  gap: 10px;
}

运行结果:

gap 属性是控制行和列之间间距的,但如果你想要行间距和列间距不一样的话,就要用到下面两个属性了:

  • row-gap:行与行之间的间距
  • column-gap:列与列之间的间距


也可以通过 grid-area 属性来重新分配DOM元素的位置:

child1 { grid-area: 左上; }
child2 { grid-area: 右上; }
child3 { grid-area: 左下; }
child4 { grid-area: 右下; }

运行结果:


九宫格

grid: var(--九宫格)


DOM结构:

<parent>
  <child1/>
  <child2/>
  <child3/>
  <child4/>
  <child5/>
  <child6/>
  <child7/>
  <child8/>
  <child9/>
<parent/>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

parent {
  display: grid;
  grid: var(--九宫格);
}

如果不想各个宫格紧贴在一起,可以用 gap 属性来控制间距:

parent {
  display: grid;
  grid: var(--九宫格);
  gap: 10px;
}

运行结果:

gap 属性是控制行和列之间间距的,但如果你想要行间距和列间距不一样的话,就要用到下面两个属性了:

  • row-gap:行与行之间的间距
  • column-gap:列与列之间的间距


也可以通过 grid-area 属性来重新分配DOM元素的位置:

child1 { grid-area: 左上; }
child2 { grid-area: 中上; }
child3 { grid-area: 右上; }
child4 { grid-area: 左中; }
child5 { grid-area: 中中; }
child6 { grid-area: 右中; }
child7 { grid-area: 左下; }
child8 { grid-area: 中下; }
child9 { grid-area: 右下; }

运行结果:


铺满

grid: var(--铺满)


看起来貌似啥也没有,那是因为顾名思义,铺满就是子元素和父元素的大小一样大嘛,来看看DOM结构:

<parent>
  <child/>
</parent>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

parent {
  display: grid;
  gird: var(--铺满);
}


圣杯

grid: var(--圣杯)


DOM结构:

<parent>
  <child1/>
  <child2/>
  <child3/>
  <child4/>
  <child5/>
</parent>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

圣杯布局的子元素必须指定位置

parent {
  display: grid;
  grid: var(--圣杯);
}
child1 { grid-area: 上; }
child2 { grid-area: 左; }
child3 { grid-area: 中; }
child4 { grid-area: 右; }
child5 { grid-area: 下; }

但是看起来并没有看到圣杯布局的影子,灰蒙蒙的一片,还是那个原因,把上下左右的宽高控制权都留给用户,如果子元素里没有任何内容并且没有指定宽高的话就不会显示在屏幕上,我们来给个合适的宽高再看看:

parent {
  display: grid;
  grid: var(--圣杯);
}
child1 {
  height: 80px;
  grid-area: 上;
}
child2 {
  width: 100px;
  grid-area: 左;
}
child3 { grid-area: 中; }
child4 {
  width: 100px;
  grid-area: 右;
}
child5 {
  height: 80px;
  grid-area: 下;
}

运行结果:

再给个间距看看效果:

parent {
  display: grid;
  grid: var(--圣杯);
  gap: 10px;
}

运行结果:

不给宽高只靠子元素的内容撑起来也可以,而且可以缺少某一个DOM元素,比如我们不想要"右"了:

<parent>
  <child1/>
  <child2/>
  <child3/>
  <child4/>
</parent>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

parent {
  display: grid;
  grid: var(--圣杯);
  gap: 10px;
}
child1 {
  height: 80px;
  grid-area: 上;
}
child2 {
  width: 100px;
  grid-area: 左;
}
child3 { grid-area: 中; }
child4 {
  height: 80px;
  grid-area: 下;
}

运行结果:

虽然看起来"中"的右侧受 gap 属性的影响导致有一定的间距,但我们可以不加 gap,靠 margin 来控制间距:

parent > child {
  margin: 10px;
}

运行结果:

即使不给"中"设置宽高,"中"也会根据父元素的宽高来自动调整自己的宽高大小。

也可以靠 row-gap column-gap 属性来单独控制横、纵间距:


双飞翼

grid: var(--双飞翼)


DOM结构:

<parent>
  <child1/>
  <child2/>
  <child3/>
  <child4/>
  <child5/>
</parent>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

双飞翼布局的子元素必须指定位置

parent {
  display: grid;
  grid: var(--双飞翼);
}
child1 { grid-area: 上; }
child2 { grid-area: 左; }
child3 { grid-area: 中; }
child4 { grid-area: 右; }
child5 { grid-area: 下; }

但是看起来并没有看到双飞翼布局的影子,灰蒙蒙的一片,还是那个原因,把上下左右的宽高控制权都留给用户,如果子元素里没有任何内容并且没有指定宽高的话就不会显示在屏幕上,我们来给个合适的宽高再看看:

parent {
  display: grid;
  grid: var(--双飞翼);
}
child1 {
  height: 80px;
  grid-area: 上;
}
child2 {
  width: 100px;
  grid-area: 左;
}
child3 { grid-area: 中; }
child4 {
  width: 100px;
  grid-area: 右;
}
child5 {
  height: 80px;
  grid-area: 下;
}

运行结果:

再给个间距看看效果:

parent {
  display: grid;
  grid: var(--双飞翼);
  gap: 10px;
}

运行结果:

不给宽高只靠子元素的内容撑起来也可以,而且可以缺少某一个DOM元素,比如我们不想要"右"了:

<parent>
  <child1/>
  <child2/>
  <child3/>
  <child4/>
</parent>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

parent {
  display: grid;
  grid: var(--双飞翼);
  gap: 10px;
}
child1 {
  height: 80px;
  grid-area: 上;
}
child2 {
  width: 100px;
  grid-area: 左;
}
child3 { grid-area: 中; }
child4 {
  height: 80px;
  grid-area: 下;
}

运行结果:

虽然看起来"中"的右侧受 gap 属性的影响导致有一定的间距,但我们可以不加 gap ,靠 margin 来控制间距:

parent > child {
  margin: 10px;
}

运行结果:

即使不给"中"设置宽高,"中"也会根据父元素的宽高来自动调整自己的宽高大小。

也可以靠 row-gap column-gap 属性来单独控制横、纵间距:


响应式

grid: var(--响应式)


响应式布局会根据父元素的大小以及子元素的数量来自行决定如何排版


DOM结构:

<parent>
  <child1/>
    <child2/>
   ......
    <child-N/>
</parent>

DOM结构只是示意,真实布局时要把parent和child换成你想要的元素,如:<ul> <li></li> </ul>

parent {
  display: grid;
  grid: var(--响应式);
}

不过每列的最小宽度默认是100px,如果想改变这一大小的话需要在 :root 选择器上定义一个 --宽 变量,比如想要宽变成30px:

:root {
  --宽: 30px;
}

如果每个子元素之间的距离太近了的话别忘记用 gap 属性来控制间距哦:

parent {
  display: grid;
  grid: var(--响应式);
  gap: 10px;
}

总结

整体来说这款插件还是不错的,使用简单方便,中文命名虽然符合中国人的习惯,但命名太多比较依赖文档。

还在为布局头疼的朋友可以快速入手哦!