将 Pure 引入你的页面

  1. <link rel="stylesheet" href="https://unpkg.com/purecss@2.0.3/build/pure-min.css" integrity="sha384-CCTZv2q9I9m3UOxRLaJneXrrqKwUNOzZ6NGEUMwHtShDJ+nCoiXJCAgi05KfkLGY" crossorigin="anonymous">

添加 Viewport Meta 元素

Viewportmeta元素控制移动端浏览器的宽度和缩放。为了自适应设备的宽度,请将下面一行加入中。

  1. <meta name="viewport" content="width=device-width, initial-scale=1">

熟悉Pure的栅格(Grids)

Pure的栅格系统非常简单。你可以使用.pure-g创建行, 使用pure-u-*创建列。
下面是1行3列的栅格:

  1. <div class="pure-g">
  2. <div class="pure-u-1-3"><p>Thirds</p></div>
  3. <div class="pure-u-1-3"><p>Thirds</p></div>
  4. <div class="pure-u-1-3"><p>Thirds</p></div>
  5. </div>

响应式栅格

Pure的栅格系统是移动设备优先响应式的, 你也可以自定义CSS媒体查询和栅格的class名,我们先来看个普通使用的例子。
首先引入grids-responsive.css:

  1. <link rel="stylesheet" href="https://unpkg.com/purecss@1.0.0/build/grids-responsive-min.css">

下面是grids-responsive.css文件中默认的响应判断:

关键词 CSS 媒体查询 适用于 Class名
所有 .pure-u-*
sm @media screen and (min-width: 35.5em) 568px .pure-u-sm-*
md @media screen and (min-width: 48em) 768px .pure-u-md-*
lg @media screen and (min-width: 64em) 1024px .pure-u-lg-*
xl @media screen and (min-width: 80em) 1280px .pure-u-xl-*

基础

隐藏元素

HTML元素添加hidden属性,可实现隐藏效果display: none !important;。

  1. <input type="text" name="_csrf" hidden>

响应式图片

PURE - 图1添加class.pure-img,配合viewport可实现图片伸缩,做响应式网站的时候比较有用。

  1. <img class="pure-img" src="...">

栅格

栅格class 与 单元格class
Pure栅格系统有两种class组成:栅格 class(pure-g) 和 单元格 (pure-u 或 pure-u-)。栅格类似Excel的表格,由单元格组成。
单元格的宽度是分数
单元格用不同的class名表示宽度。比如 pure-u-1-2 表示宽1/2即50%, 同样 pure-u-1-5 表示宽1/5即20%。
栅格的所有子元素必须是单元格
栅格,即class名包含pure-g的元素,它的子元素必须是单元格,即class名包含 pure-u 或 pure-u-
的元素。
内容在单元格中
所有需要显示的内容都要放在单元格中。这样才能保证内容正确的显示。
看一个简单的栅格包含3列:

  1. <div class="pure-g">
  2. <div class="pure-u-1-3"><p>Thirds</p></div>
  3. <div class="pure-u-1-3"><p>Thirds</p></div>
  4. <div class="pure-u-1-3"><p>Thirds</p></div>
  5. </div>

栅格单元格大小

Pure栅格默认支持5列24列。下图列出了可以替换单元格class名pure-u-*的分数。比如用1-2替换,class名就是pure-u-1-2,表示宽1/2,即50%。

基于5列的单元格

image.png

基于24列的单元格

image.png

自定义单元格大小

我们正在开发可自定义Pure栅格的工具。现在可用的是一个较低级的工具:重新生产栅格插件,我们用它生成Pure的内建单元格的大小。

Pure响应式栅格

Pure同时提供一个移动设备优先的响应式的栅格系统,通过添加class名即可使用。它是一个强大并灵活的系统,基于默认的栅格系统。

在页面中引用

因为媒体查询不能被覆盖,所以我们没有在pure.css中直接引用栅格系统。你需要引入单独的CSS文件。把下面的引入页面即可。

  1. <link rel="stylesheet" href="https://unpkg.com/purecss@1.0.0/build/grids-responsive-min.css">

非响应式 vs. 响应式

通过例子看下两者的区别。下面代码是一组非响应式的栅格,在任何屏幕上宽度都是width: 33.33%。

  1. <div class="pure-g">
  2. <div class="pure-u-1-3"> ... </div>
  3. <div class="pure-u-1-3"> ... </div>
  4. <div class="pure-u-1-3"> ... </div>
  5. </div>

下面是一组响应式栅格,元素在小屏幕上宽width: 100%,在中等屏幕变为width: 33.33%。

  1. <div class="pure-g">
  2. <div class="pure-u-1 pure-u-md-1-3"> ... </div>
  3. <div class="pure-u-1 pure-u-md-1-3"> ... </div>
  4. <div class="pure-u-1 pure-u-md-1-3"> ... </div>
  5. </div>

默认的媒体查询

那么大、中、小屏幕如何区分呢?Pure通过媒体查询进行判断,默认列表如下:

关键词 CSS 媒体查询 适用于 Class名
所有 .pure-u-*
sm @media screen and (min-width: 35.5em) 568px .pure-u-sm-*
md @media screen and (min-width: 48em) 768px .pure-u-md-*
lg @media screen and (min-width: 64em) 1024px .pure-u-lg-*
xl @media screen and (min-width: 80em) 1280px .pure-u-xl-*

相对长度单位

同志们都看到了,我们用em作为媒体查询的宽度单位,而不是px。这是考虑到媒体查询能适应网页的缩放,不懂的请看这

响应式栅格的实例

我们创建一个包含4个单元格的栅格。每个单元格在小屏幕上宽width: 100%,中屏幕width: 50%,大屏幕width: 25%。
对应小屏幕的class是.pure-u-1,中屏幕.pure-u-md-1-2,大屏幕 .pure-u-lg-1-4。缩放浏览器可以看到效果。

移动端栅格

Pure的栅格系统默认移动端优先。想要在移动端使用栅格系统,加pure-u-*在相应的元素上就可以了。

响应式图片

使用响应式栅格时,你肯定也希望图片能够伸缩,以保持正确的比例。给图片加个class .pure-img 就搞定了。

设置单元格的padding和border

两种可以设置,第一是用

把单元格包起来,对
进行设置:

  1. <style>
  2. .l-box {
  3. padding: 1em;
  4. }
  5. </style>
  6. ...
  7. <div class="pure-g">
  8. <div class="pure-u-1-2">
  9. <div class="l-box"> ... </div>
  10. </div>
  11. <div class="pure-u-1-2">
  12. <div class="l-box"> ... </div>
  13. </div>
  14. </div>

第二种方法是直接设置box-sizing: border-box,但可能破坏布局,需要为单元格添加如下样式来避免:

  1. <style>
  2. .pure-g > div {
  3. -webkit-box-sizing: border-box;
  4. -moz-box-sizing: border-box;
  5. box-sizing: border-box;
  6. }
  7. .l-box {
  8. padding: 1em;
  9. }
  10. </style>
  11. ...
  12. <div class="pure-g">
  13. <div class="pure-u-1-2 l-box"> ... </div>
  14. <div class="pure-u-1-2 l-box"> ... </div>
  15. </div>

用 box-sizing: border-box 可以保持代码简洁,但是有两个缺点。第一,老的浏览器不支持box-sizing,第二,这么写修改了全部的单元格,以后很难覆盖或取消了。Pure默认设置box-sizing 为content-box,要怎么改自己选。

设置栅格的Font-Family

Pure栅格使用特定的字体栈来最大限度兼容苹果os的浏览器。单元格默认 font-family: sans-serif;这是Pure的核心(Normalize.css)设置的。另外这些元素也被设置了:,