UNPKG

8.01 kBHTMLView Raw
1<!doctype html>
2<html lang="en">
3 <head>
4 ${require('./_head.html')
5 title="Modal"
6 description="A flexible container with graceful spacings across devices and viewports."
7 canonical="modal.html"
8 }
9 </head>
10
11 <body>
12 ${require('./_nav.html')}
13
14 <main class="container" id="docs">
15 ${require('./_sidebar.html') active="modal-link"}
16
17 <div role="document">
18 <section id="modal">
19 <hgroup>
20 <h1>Modal</h1>
21 <h2>The classic modal element with graceful spacings across devices and viewports.</h2>
22 </hgroup>
23
24 <p>Modals are built with <code>&lt;<b>dialog</b>&gt;</code> as a wrapper and <code>&lt;<b>article</b>&gt;</code> as a content container.</p>
25 <p>Inside <code>&lt;<b>header</b>&gt;</code>, <code>&lt;<b>a</b> <i>class</i>=<u>"close"</u>&gt;</code> is defined to <code><i>float</i>: <u>right</u>;</code> allowing a close icon to be top aligned with a title.</p>
26
27 <dialog class="example" open>
28 <article>
29 <header>
30 <a href="#close" aria-label="Close" class="close" onclick="event.preventDefault()"></a>
31 <p>Modal title</p>
32 </header>
33 <p>
34 Nunc nec ligula a tortor sollicitudin dictum in vel enim.
35 Quisque facilisis turpis vel eros dictum aliquam et nec turpis.
36 Sed eleifend a dui nec ullamcorper.
37 Praesent vehicula lacus ac justo accumsan ullamcorper.
38 </p>
39 </article>
40 </dialog>
41
42<pre><code>&lt;<b>dialog</b> <i>open</i>&gt;
43 &lt;<b>article</b>&gt;
44 &lt;<b>header</b>&gt;
45 &lt;<b>a</b> <i>href</i>=<u>"#close"</u> <i>aria-label</i>=<u>"Close"</u> <i>class</i>=<u>"close"</u>&gt;&lt;/<b>a</b>&gt;
46 Modal title
47 &lt;/<b>header</b>&gt;
48 &lt;<b>p</b>&gt;
49 Nunc nec ligula a tortor sollicitudin dictum in vel enim.
50 Quisque facilisis turpis vel eros dictum aliquam et nec turpis.
51 Sed eleifend a dui nec ullamcorper.
52 Praesent vehicula lacus ac justo accumsan ullamcorper.
53 &lt;/<b>p</b>&gt;
54 &lt;/<b>article</b>&gt;
55&lt;/<b>dialog</b>&gt;</code></pre>
56
57 <p>Inside <code>&lt;<b>footer</b>&gt;</code>, the content is right aligned by default.</p>
58
59 <dialog class="example" open>
60 <article>
61 <h3>Confirm your action!</h3>
62 <p>
63 Mauris non nibh vel nisi sollicitudin malesuada.
64 Donec ut sagittis erat. Praesent eu eros felis.
65 Ut consectetur placerat pulvinar.
66 </p>
67 <footer>
68 <a href="#cancel" role="button" class="secondary" onclick="event.preventDefault()">Cancel</a><a href="#confirm" role="button" onclick="event.preventDefault()">Confirm</a>
69 </footer>
70 </article>
71 </dialog>
72
73<pre><code>&lt;<b>dialog</b> <i>open</i>&gt;
74 &lt;<b>article</b>&gt;
75 &lt;<b>h3</b>&gt;Confirm your action!&lt;/<b>h3</b>&gt;
76 &lt;<b>p</b>&gt;
77 Mauris non nibh vel nisi sollicitudin malesuada.
78 Donec ut sagittis erat. Praesent eu eros felis.
79 Ut consectetur placerat pulvinar.
80 &lt;/<b>p</b>&gt;
81 &lt;<b>footer</b>&gt;
82 &lt;<b>a</b> <i>href</i>=<u>"#cancel"</u> <i>role</i>=<u>"button"</u> <i>class</i>=<u>"secondary"</u>&gt;Cancel&lt;/<b>a</b>&gt;
83 &lt;<b>a</b> <i>href</i>=<u>"#confirm"</u> <i>role</i>=<u>"button"</u>&gt;Confirm&lt;/<b>a</b>&gt;
84 &lt;/<b>footer</b>&gt;
85 &lt;/<b>article</b>&gt;
86&lt;/<b>dialog</b>&gt;</code></pre>
87
88 <hgroup>
89 <h2>Live demo</h2>
90 <h3>Toggle a modal by clicking the button below.</h3>
91 </hgroup>
92
93 <article>
94 <button class="contrast" data-target="modal-example" onclick="toggleModal(event)">Launch demo modal</button>
95 <footer class="code">
96
97<pre><code><em>&lt;!-- Button to trigger the modal --&gt;</em>
98&lt;<b>button</b> <i>class</i>=<u>"contrast"</u>
99 <i>data-target</i>=<u>"modal-example"</u>
100 <i>onClick</i>=<u>"toggleModal(event)"</u>&gt;
101 Launch demo modal
102&lt;/<b>button</b>&gt;
103
104<em>&lt;!-- Modal --&gt;</em>
105&lt;<b>dialog</b> <i>id</i>=<u>"modal-example"</u>&gt;
106 &lt;<b>article</b>&gt;
107 &lt;<b>a</b> <i>href</i>=<u>"#close"</u>
108 <i>aria-label</i>=<u>"Close"</u>
109 <i>class</i>=<u>"close"</u>
110 <i>data-target</i>=<u>"modal-example"</u>
111 <i>onClick</i>=<u>"toggleModal(event)"</u>&gt;
112 &lt;/<b>a</b>&gt;
113 &lt;<b>h3</b>&gt;Confirm your action!&lt;/<b>h3</b>&gt;
114 &lt;<b>p</b>&gt;
115 Cras sit amet maximus risus.
116 Pellentesque sodales odio sit amet augue finibus pellentesque.
117 Nullam finibus risus non semper euismod.
118 &lt;/<b>p</b>&gt;
119 &lt;<b>footer</b>&gt;
120 &lt;<b>a</b> <i>href</i>=<u>"#cancel"</u>
121 <i>role</i>=<u>"button"</u>
122 <i>class</i>=<u>"secondary"</u>
123 <i>data-target</i>=<u>"modal-example"</u>
124 <i>onClick</i>=<u>"toggleModal(event)"</u>&gt;
125 Cancel
126 &lt;/<b>a</b>&gt;
127 &lt;<b>a</b> <i>href</i>=<u>"#confirm"</u>
128 <i>role</i>=<u>"button"</u>
129 <i>data-target</i>=<u>"modal-example"</u>
130 <i>onClick</i>=<u>"toggleModal(event)"</u>&gt;
131 Confirm
132 &lt;/<b>a</b>&gt;
133 &lt;/<b>footer</b>&gt;
134 &lt;/<b>article</b>&gt;
135&lt;/<b>dialog</b>&gt;</code></pre>
136
137 </footer>
138 </article>
139
140 <p>Pico does not include JavaScript code. You will need to implement your JS to interact with modals.</p>
141 <p>As a starting point, you can look at the JavaScript used in this documentation: <a href="https://github.com/picocss/pico/blob/master/docs/js/modal.js">js/modal.js</a>.</p>
142 <p>To make a modal appear, add the <code><i>open</i></code> attribute to the <code>&lt;<b>dialog</b></u>&gt;</code> container.</p>
143
144<pre><code><em>&lt;!-- Open modal--&gt;</em>
145&lt;<b>dialog</b> <i>open</i>&gt;
146 &lt;<b>article</b>&gt;
147 <em></em>
148 &lt;/<b>article</b>&gt;
149&lt;/<b>dialog</b>&gt;
150
151<em>&lt;!-- Modal closed --&gt;</em>
152&lt;<b>dialog</b>&gt;
153 &lt;<b>article</b>&gt;
154 <em></em>
155 &lt;/<b>article</b>&gt;
156&lt;/<b>dialog</b>&gt;
157</code></pre>
158
159 <h2>Utilities</h2>
160 <p>Modals come with 3 utility classes.</p>
161 <p>ℹ️&nbsp;These classes are not available in the <a href="classless.html">class-less version</a>.</p>
162 <p><code>.modal-is-open</code> prevents any scrolling and interactions below the modal.</p>
163
164<pre><code><em>&lt;!doctype html&gt;</em>
165&lt;<b>html</b> <i>class</i>=<u>"modal-is-open"</u>&gt;
166 <em></em>
167&lt;/<b>html</b>&gt;</code></pre>
168
169 <p><code>.modal-is-opening</code> brings an opening animation.</p>
170
171<pre><code><em>&lt;!doctype html&gt;</em>
172&lt;<b>html</b> <i>class</i>=<u>"modal-is-open modal-is-opening"</u>&gt;
173 <em></em>
174&lt;/<b>html</b>&gt;</code></pre>
175
176 <p><code>.modal-is-closing</code> brings a closing animation.</p>
177
178<pre><code><em>&lt;!doctype html&gt;</em>
179&lt;<b>html</b> <i>class</i>=<u>"modal-is-open modal-is-closing"</u>&gt;
180 <em></em>
181&lt;/<b>html</b>&gt;</code></pre>
182
183 </section>
184
185 ${require('./_footer.html')}
186
187 </div>
188 </main>
189
190 <dialog id="modal-example">
191 <article>
192 <a href="#close" aria-label="Close" class="close" data-target="modal-example" onclick="toggleModal(event)"></a>
193 <h3>Confirm your action!</h3>
194 <p>Cras sit amet maximus risus. Pellentesque sodales odio sit amet augue finibus pellentesque. Nullam finibus risus non semper euismod.</p>
195 <footer>
196 <a href="#cancel" role="button" class="secondary" data-target="modal-example" onclick="toggleModal(event)">Cancel</a><a href="#confirm" role="button" data-target="modal-example" onclick="toggleModal(event)">Confirm</a>
197 </footer>
198 </article>
199 </dialog>
200
201 <script src="js/commons.min.js"></script>
202 <script src="js/modal.min.js"></script>
203
204 </script>
205 </body>
206</html>
\No newline at end of file