布局&栅格

JavaScript015

布局&栅格,第1张

先聊聊布局方面的知识,先列据一个实现三栏水平布局(左右定宽,中间自适应)案列,目前有圣杯布局、双飞翼布局、Flex布局和绝对定位布局的几种经典布局。

相同点:

差异点:

DOM节点结构:

双飞翼布局比圣杯布局多使用了一个div,少用大致4个css属性,比圣杯布局思路更直接和间接一点。

Flex 是 Flexible Box 的缩写,意为"弹性布局",用来盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局, Flex 布局将成为现代浏览器的首选方案。

绝对定位 position: absolute 使元素的位置与文档流无关,因此不占据空间。PS:这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。

栅格

以规则的网格阵列来指导和规范网页中的版面布局以及信息分布,通俗一点的就是在一个特定区域内划分出有规律的格子,并依靠这些格子进行有规律的版面布局。

栅格布局的作用

栅格布局的使用

现大多数UI框架设计上都会设计栅格化系统,比如 bootstrap(jquery) 、 element(vue) 、 antD(react) 等。

Bootstrap 的栅格化系统采用将页面布局分为12列,再根据页面宽度采用预定义类控制模块占用宽度比例(宽度百分比)的思想,实现响应式布局。

Bootstrap将屏幕大小分为4类,主要关键点是媒体查询 @media 。

官网中对Layout 布局的定义是: 通过基础的 24 分栏,迅速简便地创建布局.Element是基于 vue.js 开发的UI框架,其设计的栅格系统也与 Bootstrap 类似,可选 flex 方式满足现代浏览器,组件开发的目的都是为了解决基本布局定位的问题。

主要组件为 Row 与 Col , 其中 Row 为行布局容器, Col 为列布局容器.

参照了 Bootstrap 的 响应式设计,预设了五个响应尺寸:

antD 是Ant Design 团队基于 React 开发的一套企业级后台UI框架,其栅格整个设计建议区域按照 24 等分的原则进行划分

支持 Flex 布局,允许子元素在父节点内的水平对齐方式 - 居左、居中、居右、等宽排列、分散排列。子元素与子元素之间,支持顶部对齐、垂直居中对齐、底部对齐的方式。同时,支持使用 order 来定义元素的排列顺序

参照 Bootstrap 的 响应式设计,预设六个响应尺寸:

怎么实现一个基本栅格化?

通常一个基本的栅格化系统包括:

为了给整个栅格系统设置宽度,我们需要一个容器。容器的宽度通常为100%,但你可能希望为更大的显示器设置最大宽度 max-width 。

行元素用于防止里面的列( column )溢出到其他的行。通常会使用 clearfix 来清除浮动,因为我们是通过浮动来制作栅格系统的。

列元素是栅格系统的核心,也是最复杂的一部分。因为列的定位可以有很多实现方式,同时还需要考虑它的宽度以及响应式设计等因素。

列的位置

Floats 、 inline-blocks 、 display-table 、 display-flex 他们都可以实现栅格布局中,列的定位。先选取使用 float ,如果列都是空的,浮动的列都会贴在彼此的顶部。为了避免这种情况:

列的宽度

由于容器总宽度是100%,我们想要6列,所以每列宽度为:100 / 6 = 16.66

这里我们把一行分成六列,通过简单的计算,还可以定义列的多种宽度。

列的间隙 (Column Gutters)

由于列的宽度单位是响应式的百分比(%),我们给列元素的间距是固定单位的 padding(px单位) ,为了避免复杂的计算,我们规定所有的盒子模型为 border-box 类型。

为了适配更多分辨率的布局,我们只需改变列的宽度。

比如当屏幕宽度小于1000px时,为了布局更简洁,我们使用两倍列的宽度,一行六列变为了一行三列。

当屏幕宽度比1000px还小时

流体网格布局和普通HTML5编写的区别如下:

1、创建步骤不同

创建流体网格布局

1)选择“文件”>“新建流体网格布局”。

2)媒体类型的中央将显示网格中列数的默认值。要自定义设备的列数,请按需编辑该值。

3)要相对于屏幕大小设置页面宽度,请以百分比形式设置该值。

4)还可更改栏间距宽度。栏间距是两列之间的空间。

5)指定页面的 CSS 选项。

单击“创建”后,系统会要求您指定一个 CSS 文件。您可以执行以下操作之一:

默认情况下显示适用于移动电话的“流体网格”。此外,还显示“流体网格”的“插入”面板。使用“插入”面板中选项可创建您布局。

要改为设计用于其它设备的布局,请单击设计视图下方选项中的相应图标。

创建新 CSS 文件。

打开现有 CSS 文件。

指定作为流体网格 CSS 文件打开的 CSS 文件。

6)保存此文件。保存 HTML 文件时,系统提示您将依赖文件(如 boilerplate.css 和 respond.min.js)保存到计算机上的某个位置。指定一个位置,然后单击“复制”。

boilerplate.css 基于 HTML5 样板文件。该文件是一组 CSS 样式,可确保在多个设备上渲染网页的方式保持一致。respond.min.js 是一个 JavaScript 库,可帮助在旧版本的浏览器中向媒体查询提供支持。

2、HTML5的方法:

HTML 布局 - 使用表格

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

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

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

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

<!DOCTYPE html>

<html>

<body>

<table width="500" border="0">

<tr>

<td colspan="2" style="background-color:#99bbbb">

<h1>Main Title of Web Page</h1>

</td>

</tr>

<tr valign="top">

<td style="background-color:#ffff99width:100pxtext-align:top">

<b>Menu</b><br />

HTML<br />

CSS<br />

JavaScript

</td>

<td style="background-color:#EEEEEEheight:200pxwidth:400pxtext-align:top">

Content goes here</td>

</tr>

<tr>

<td colspan="2" style="background-color:#99bbbbtext-align:center">

Copyright W3School.com.cn</td>

</tr>

</table>

</body>

</html>