purecss
Version:
Pure is a ridiculously tiny CSS library you can use to start any web project.
352 lines (326 loc) • 18.5 kB
JavaScript
import Link from '@docusaurus/Link';
import useBaseUrl from '@docusaurus/useBaseUrl';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import classnames from 'classnames';
import React from 'react';
import Layout from '../../theme/Layout';
import Header from '../../../components/Header';
import SectionHeader from '../../../components/SectionHeader';
import CodeBlock from '../../../components/CodeBlock';
import styles from './styles.css';
const title = 'Get Started';
const description = 'Start your next web project with Pure.';
function Start() {
const context = useDocusaurusContext();
const {siteConfig = {}} = context;
const {
customFields: {
PURE_DOWNLOAD_SNIPPET,
pureVersion
}
} = siteConfig;
return (
<Layout description={description} title={title}>
<Header description={description} title={title} />
<div className="content">
<SectionHeader heading="Add Pure to Your Page" />
<p>
You can add Pure to your page via the <b>free unpkg CDN</b>. Just add the following <code><link></code> element into your page's <code><head></code>, before your project's stylesheets.
</p>
</div>
<CodeBlock full={true} wrap={true}>{PURE_DOWNLOAD_SNIPPET}</CodeBlock>
<div className="content">
<aside>
<p>
Alternatively, you can <a href={`https://github.com/pure-css/pure-release/archive/v${pureVersion}.zip`}>download Pure</a>, or <a href="/customize/">check out other CDNs</a> that host Pure.
</p>
</aside>
<SectionHeader heading="Add the Viewport Meta Element" />
<p>
The viewport <code>meta</code> element lets you control the the width and scale of the viewport on mobile browsers. Since you're building a responsive website, you want the width to be equal to the device's native width. Add this into your page's <code><head></code>.
</p>
</div>
<CodeBlock full={true} wrap={true}>
{`<meta name="viewport" content="width=device-width, initial-scale=1">`}
</CodeBlock>
<div className="content">
<SectionHeader heading="Understand Pure Grids" />
<p>
Pure's grid system is very simple. You create a row by using the <code>.pure-g</code> class, and create columns within that row by using the <code>pure-u-*</code> classes.
</p>
<p>
Here's a grid with three columns:
</p>
<CodeBlock wrap={true}>
{`<div class="pure-g">
<div class="pure-u-1-3"><p>Thirds</p></div>
<div class="pure-u-1-3"><p>Thirds</p></div>
<div class="pure-u-1-3"><p>Thirds</p></div>
</div>`}
</CodeBlock>
</div>
<div className="grids-example">
<div className="pure-g">
<div className="pure-u-1-3">
<p>Thirds</p>
</div>
<div className="pure-u-1-3">
<p>Thirds</p>
</div>
<div className="pure-u-1-3">
<p>Thirds</p>
</div>
</div>
</div>
<div className="content">
<SectionHeader heading="Responsive Grids" />
<p>
Pure's grid system is also <b>mobile-first</b> and <b>responsive</b>, and you're able to customize the grid by specifying CSS Media Query breakpoints and grid classnames.
{/*If needed, you can <a href="#build-your-pure-starter-kit">customize Pure Grids below</a>, but let's start off with an example.*/}
</p>
<p>
You'll need to <em>also</em> include Pure's <code>grids-responsive.css</code> onto your page:
</p>
<CodeBlock wrap={true}>
{`<link rel="stylesheet" href="https://unpkg.com/purecss@1.0.1/build/grids-responsive-min.css">`}
</CodeBlock>
<p>
Here's the default responsive breakpoints included in <code>grids-responsive.css</code>:
</p>
<div className="table-responsive">
<table className="mq-table pure-table-bordered pure-table">
<thead>
<tr>
<th className="highlight">Key</th>
<th className="highlight">CSS Media Query</th>
<th>Applies</th>
<th>Classname</th>
</tr>
</thead>
<tbody>
<tr>
<td className="highlight"><i>None</i></td>
<td className="highlight"><i>None</i></td>
<td><i>Always</i></td>
<td><code>.pure-u-*</code></td>
</tr>
<tr>
<td className="highlight"><b><code>sm</code></b></td>
<td className="mq-table-mq highlight"><code>@media screen and (min-width: 35.5em)</code></td>
<td>≥ <b>568px</b></td>
<td><code>.pure-u-<b>sm</b>-*</code></td>
</tr>
<tr>
<td className="highlight"><b><code>md</code></b></td>
<td className="mq-table-mq highlight"><code>@media screen and (min-width: 48em)</code></td>
<td>≥ <b>768px</b></td>
<td><code>.pure-u-<b>md</b>-*</code></td>
</tr>
<tr>
<td className="highlight"><b><code>lg</code></b></td>
<td className="mq-table-mq highlight"><code>@media screen and (min-width: 64em)</code></td>
<td>≥ <b>1024px</b></td>
<td><code>.pure-u-<b>lg</b>-*</code></td>
</tr>
<tr>
<td className="highlight"><b><code>xl</code></b></td>
<td className="mq-table-mq highlight"><code>@media screen and (min-width: 80em)</code></td>
<td>≥ <b>1280px</b></td>
<td><code>.pure-u-<b>xl</b>-*</code></td>
</tr>
</tbody>
</table>
</div>
<p>
Here's an example of what you'd be able to do. <i>Try resizing your screen to see how the grid responds.</i>
</p>
</div>
<div className="grids-example">
<div className="pure-g">
<div className="pure-u-1">.pure-u-1</div>
<div className="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4">
.pure-u-1<br/>.pure-u-md-1-2<br/>.pure-u-lg-1-4
</div>
<div className="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4">
.pure-u-1<br/>.pure-u-md-1-2<br/>.pure-u-lg-1-4
</div>
<div className="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4">
.pure-u-1<br/>.pure-u-md-1-2<br/>.pure-u-lg-1-4
</div>
<div className="pure-u-1 pure-u-md-1-2 pure-u-lg-1-4">
.pure-u-1<br/>.pure-u-md-1-2<br/>.pure-u-lg-1-4
</div>
<div className="pure-u-1 pure-u-md-3-4">.pure-u-1<br/>.pure-u-md-3-4</div>
<div className="pure-u-1 pure-u-md-1-4">.pure-u-1<br/>.pure-u-md-1-4</div>
</div>
</div>
{/*
<div className="content">
<aside>
<p>
<a href="/grids/#pure-responsive-grids">Learn More</a> about how to include and use Pure's Responsive Grids system, and how it compares to Basic Grids.
</p>
</aside>
<h2 id="build-your-pure-starter-kit" className="content-subhead">Build Your Pure Starter Kit<a href="#build-your-pure-starter-kit" className="content-link" title="Heading anchor"></a></h2>
<p>
Now that you know how grids work, you might want to customize things to better suit your web project. You can define your own breakpoints by specifying a CSS Media Queries. You can also customize the number of columns that your layout needs.
</p>
<p>
We'll generate an <code>index.html</code> file, and if needed, a <code>grid.css</code> file that you can download and use as the starting-point for your project.
</p>
<div className="grid-input">
<ul className="grid-tabs pure-g">
<li className="grid-tab pure-u">
<a data-action="tab" className="grid-tab-link-selected grid-tab-link" href="#mqs">
Media Queries
</a>
</li>
<li className="grid-tab pure-u">
<a data-action="tab" className="grid-tab-link" href="#options">
Grid Options
</a>
</li>
</ul>
<div className="grid-content">
<form id="mqs" className="grid-panel-selected grid-panel pure-form-aligned pure-form">
<h3>Grids Media Queries</h3>
<p>
You can use Pure's default CSS Media Queries which will add <code>grids-responsive.css</code> to your Pure Starter Kit, or we can generate a mobile-first, responsive grid if you provide us with the breakpoints.
</p>
<p>
Pure's generated Responsive Grids is simple to use. It provides you with a specific CSS classname for each Media Query. For example, <code>pure-u-md-*</code> for devices with <code>width >= 768px</code>, and <code>pure-u-lg-*</code> for devices with <code>width >= 1024px</code>.
</p>
<p>
What Media Queries should your grid system respond to?
</p>
<table id="media-query-table" hidden>
<thead>
<tr className="pure-g">
<th className="pure-u-6-24">
Grid Key <br/>
<span className="media-query-table-example">
<code>.pure-u-[key]-*</code>
</span>
</th>
<th className="pure-u-15-24 pure-u-sm-16-24">
Media Query <br/>
<span className="media-query-table-example">
<code>screen and (min-width: 48em)</code>
</span>
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<div className="controls">
<button type="button" data-action="add-default-mq" className="pure-button pure-button-primary">
Use Default Media Queries
</button>
<button type="button" data-action="add-mq" className="pure-button">
Add Media Query
</button>
</div>
</form>
<form id="options" className="grid-panel pure-form-aligned pure-form">
<h3>Grid Options</h3>
<p>
Pure has a 5<sup>ths</sup> and 24<sup>ths</sup>-column grid system by default. You define an element's width using fractional classnames, e.g; <code>.pure-u-2-5</code> for <code>width: 40%</code>, or <code>.pure-u-12-24</code> for <code>width: 50%</code>. You can <a href="/grids/#grids-units-sizes">view all the grid units</a> that are available in the default grid.
</p>
<p>
You can customize the number of columns; the default grid is 24 columns. You can also change the Grids classname prefix; the default is <code>.pure-u-</code>.
</p>
<div>
<div className="cols-control pure-control-group">
<label htmlFor="cols-input">Number of Columns</label>
<input id="cols-input" data-content="cols-input"
type="number" min="2" max="100" placeholder="24" />
</div>
<div className="prefix-control pure-control-group">
<label htmlFor="prefix-input">Grid Prefix</label>
<input id="prefix-input" data-content='prefix-input'
type="text" maxLength="20" placeholder=".pure-u-"
defaultValue="" />
</div>
</div>
</form>
</div>
</div>
<div className="grid-download">
<p>
Your Pure Starter Kit will be generated below in real-time as you make your customizations. When you're ready, just download it!
</p>
</div>
<div className="grid-output-download">
<a download href="/start/download"
onClick="return Pure.trackDownload.call(this, 'start', 'default');"
className="download-link pure-button-primary pure-button">Download Your Starter Kit</a>
</div>
<p>
Here's what the downloaded zip file contains.
</p>
<div className="grid-output">
<div className="grid-output-tabs pure-g">
<div className="pure-u-1">
<ul className="grid-tabs pure-g">
<li className="grid-tab pure-u">
<a data-action="tab" className="grid-tab-link-selected grid-tab-link" href="#html">
index.html
</a>
</li>
<li className="grid-tab pure-u">
<a data-action="tab" className="grid-tab-link" href="#grid">
grid.css
</a>
</li>
<li className="grid-tab pure-u">
<a data-action="tab" className="grid-tab-link" href="#grid-old-ie">
grid-old-ie.css
</a>
</li>
</ul>
</div>
</div>
<div className="grid-content">
<div id="html" className="grid-panel-selected grid-panel">
<pre className="code" data-language="html"><code><!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Your page title</title>
<link rel="stylesheet" href="https://unpkg.com/purecss@1.0.1/build/pure-min.css"></head>
<body>
<!--
Your HTML goes here. Visit purecss.io/layouts/ for some sample HTML code.
-->
</body>
</html></code></pre>
</div>
<div id="grid" className="grid-panel">
<div id="css" className="grid-code">
<p>
You haven't specified any customization that require any additional CSS.
</p>
</div>
</div>
<div id="grid-old-ie" className="grid-panel">
<div id="css-old-ie" className="grid-code">
<p>
You haven't specified any customization that requires IE-specific CSS.
</p>
</div>
</div>
</div>
</div>
<aside>
<p>
After downloading your Starter Kit, we recommend checking out <a href="/layouts/">our awesome layouts</a>. They're freely available to download. Use them to get started quickly with your next web project. Happy coding!
</p>
</aside>
</div>
*/}
</Layout>
);
}
export default Start;