UNPKG

12.9 kBSCSSView Raw
1// Name: Nav
2// Description: Defines styles for list navigations
3//
4// Component: `uk-nav`
5//
6// Sub-objects: `uk-nav-header`
7// `uk-nav-divider`
8// `uk-nav-sub`
9//
10// Modifiers: `uk-nav-parent-icon`
11// `uk-nav-default`
12// `uk-nav-primary`
13// `uk-nav-center`
14//
15// States: `uk-active`
16// `uk-parent`
17// `uk-open`
18// `uk-touch`
19//
20// ========================================================================
21
22
23// Variables
24// ========================================================================
25
26$nav-item-padding-vertical: 5px !default;
27$nav-item-padding-horizontal: 0 !default;
28
29$nav-sublist-padding-vertical: 5px !default;
30$nav-sublist-padding-left: 15px !default;
31$nav-sublist-deeper-padding-left: 15px !default;
32$nav-sublist-item-padding-vertical: 2px !default;
33
34$nav-parent-icon-width: ($global-line-height * 1em) !default;
35$nav-parent-icon-height: $nav-parent-icon-width !default;
36$nav-parent-icon-color: $global-color !default;
37
38$nav-header-padding-vertical: $nav-item-padding-vertical !default;
39$nav-header-padding-horizontal: $nav-item-padding-horizontal !default;
40$nav-header-font-size: $global-small-font-size !default;
41$nav-header-text-transform: uppercase !default;
42$nav-header-margin-top: $global-margin !default;
43
44$nav-divider-margin-vertical: 5px !default;
45$nav-divider-margin-horizontal: 0 !default;
46
47$nav-default-item-color: $global-muted-color !default;
48$nav-default-item-hover-color: $global-color !default;
49$nav-default-item-active-color: $global-emphasis-color !default;
50$nav-default-header-color: $global-emphasis-color !default;
51$nav-default-divider-border-width: $global-border-width !default;
52$nav-default-divider-border: $global-border !default;
53$nav-default-sublist-item-color: $global-muted-color !default;
54$nav-default-sublist-item-hover-color: $global-color !default;
55$nav-default-sublist-item-active-color: $global-emphasis-color !default;
56
57$nav-primary-item-font-size: $global-large-font-size !default;
58$nav-primary-item-line-height: $global-line-height !default;
59$nav-primary-item-color: $global-muted-color !default;
60$nav-primary-item-hover-color: $global-color !default;
61$nav-primary-item-active-color: $global-emphasis-color !default;
62$nav-primary-header-color: $global-emphasis-color !default;
63$nav-primary-divider-border-width: $global-border-width !default;
64$nav-primary-divider-border: $global-border !default;
65$nav-primary-sublist-item-color: $global-muted-color !default;
66$nav-primary-sublist-item-hover-color: $global-color !default;
67$nav-primary-sublist-item-active-color: $global-emphasis-color !default;
68
69$internal-nav-parent-close-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%2210%201%204%207%2010%2013%22%20%2F%3E%0A%3C%2Fsvg%3E" !default;
70$internal-nav-parent-open-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%221%204%207%2010%2013%204%22%20%2F%3E%0A%3C%2Fsvg%3E" !default;
71
72
73/* ========================================================================
74 Component: Nav
75 ========================================================================== */
76
77/*
78 * Reset
79 * 1. Prepare lists
80 * 2. Prepare links
81 * 3. Remove default focus style
82 */
83
84/* 1 */
85.uk-nav,
86.uk-nav ul {
87 margin: 0;
88 padding: 0;
89 list-style: none;
90}
91
92/* 2 */
93.uk-nav li > a {
94 display: block;
95 text-decoration: none;
96}
97
98/* 3 */
99.uk-nav li > a:focus { outline: none; }
100
101/*
102 * Items
103 * Must target `a` elements to exclude other elements (e.g. lists)
104 */
105
106.uk-nav > li > a { padding: $nav-item-padding-vertical $nav-item-padding-horizontal; }
107
108
109/* Sublists
110 ========================================================================== */
111
112/*
113 * Level 2
114 * `ul` needed for higher specificity to override padding
115 */
116
117ul.uk-nav-sub {
118 padding: $nav-sublist-padding-vertical 0 $nav-sublist-padding-vertical $nav-sublist-padding-left;
119 @if(mixin-exists(hook-nav-sub)) {@include hook-nav-sub();}
120}
121
122/*
123 * Level 3 and deeper
124 */
125
126.uk-nav-sub ul { padding-left: $nav-sublist-deeper-padding-left; }
127
128/*
129 * Items
130 */
131
132.uk-nav-sub a { padding: $nav-sublist-item-padding-vertical 0; }
133
134
135/* Parent icon modifier
136 ========================================================================== */
137
138.uk-nav-parent-icon > .uk-parent > a::after {
139 content: "";
140 width: $nav-parent-icon-width;
141 height: $nav-parent-icon-height;
142 float: right;
143 @include svg-fill($internal-nav-parent-close-image, "#000", $nav-parent-icon-color);
144 background-repeat: no-repeat;
145 background-position: 50% 50%;
146 @if(mixin-exists(hook-nav-parent-icon)) {@include hook-nav-parent-icon();}
147}
148
149.uk-nav-parent-icon > .uk-parent.uk-open > a::after { @include svg-fill($internal-nav-parent-open-image, "#000", $nav-parent-icon-color); }
150
151
152/* Header
153 ========================================================================== */
154
155.uk-nav-header {
156 padding: $nav-header-padding-vertical $nav-header-padding-horizontal;
157 text-transform: $nav-header-text-transform;
158 font-size: $nav-header-font-size;
159 @if(mixin-exists(hook-nav-header)) {@include hook-nav-header();}
160}
161
162.uk-nav-header:not(:first-child) { margin-top: $nav-header-margin-top; }
163
164
165/* Divider
166 ========================================================================== */
167
168.uk-nav-divider {
169 margin: $nav-divider-margin-vertical $nav-divider-margin-horizontal;
170 @if(mixin-exists(hook-nav-divider)) {@include hook-nav-divider();}
171}
172
173
174/* Default modifier
175 ========================================================================== */
176
177.uk-nav-default {
178 @if(mixin-exists(hook-nav-default)) {@include hook-nav-default();}
179}
180
181/*
182 * Items
183 */
184
185.uk-nav-default > li > a {
186 color: $nav-default-item-color;
187 @if(mixin-exists(hook-nav-default-item)) {@include hook-nav-default-item();}
188}
189
190/* Hover + Focus */
191.uk-nav-default > li > a:hover,
192.uk-nav-default > li > a:focus {
193 color: $nav-default-item-hover-color;
194 @if(mixin-exists(hook-nav-default-item-hover)) {@include hook-nav-default-item-hover();}
195}
196
197/* Active */
198.uk-nav-default > li.uk-active > a {
199 color: $nav-default-item-active-color;
200 @if(mixin-exists(hook-nav-default-item-active)) {@include hook-nav-default-item-active();}
201}
202
203/*
204 * Header
205 */
206
207.uk-nav-default .uk-nav-header {
208 color: $nav-default-header-color;
209 @if(mixin-exists(hook-nav-default-header)) {@include hook-nav-default-header();}
210}
211
212/*
213 * Divider
214 */
215
216.uk-nav-default .uk-nav-divider {
217 border-top: $nav-default-divider-border-width solid $nav-default-divider-border;
218 @if(mixin-exists(hook-nav-default-divider)) {@include hook-nav-default-divider();}
219}
220
221/*
222 * Sublists
223 */
224
225.uk-nav-default .uk-nav-sub a { color: $nav-default-sublist-item-color; }
226
227.uk-nav-default .uk-nav-sub a:hover,
228.uk-nav-default .uk-nav-sub a:focus { color: $nav-default-sublist-item-hover-color; }
229
230.uk-nav-default .uk-nav-sub li.uk-active > a { color: $nav-default-sublist-item-active-color; }
231
232
233/* Primary modifier
234 ========================================================================== */
235
236.uk-nav-primary {
237 @if(mixin-exists(hook-nav-primary)) {@include hook-nav-primary();}
238}
239
240/*
241 * Items
242 */
243
244.uk-nav-primary > li > a {
245 font-size: $nav-primary-item-font-size;
246 line-height: $nav-primary-item-line-height;
247 color: $nav-primary-item-color;
248 @if(mixin-exists(hook-nav-primary-item)) {@include hook-nav-primary-item();}
249}
250
251/* Hover + Focus */
252.uk-nav-primary > li > a:hover,
253.uk-nav-primary > li > a:focus {
254 color: $nav-primary-item-hover-color;
255 @if(mixin-exists(hook-nav-primary-item-hover)) {@include hook-nav-primary-item-hover();}
256}
257
258/* Active */
259.uk-nav-primary > li.uk-active > a {
260 color: $nav-primary-item-active-color;
261 @if(mixin-exists(hook-nav-primary-item-active)) {@include hook-nav-primary-item-active();}
262}
263
264/*
265 * Header
266 */
267
268.uk-nav-primary .uk-nav-header {
269 color: $nav-primary-header-color;
270 @if(mixin-exists(hook-nav-primary-header)) {@include hook-nav-primary-header();}
271}
272
273/*
274 * Divider
275 */
276
277.uk-nav-primary .uk-nav-divider {
278 border-top: $nav-primary-divider-border-width solid $nav-primary-divider-border;
279 @if(mixin-exists(hook-nav-primary-divider)) {@include hook-nav-primary-divider();}
280}
281
282/*
283 * Sublists
284 */
285
286.uk-nav-primary .uk-nav-sub a { color: $nav-primary-sublist-item-color; }
287
288.uk-nav-primary .uk-nav-sub a:hover,
289.uk-nav-primary .uk-nav-sub a:focus { color: $nav-primary-sublist-item-hover-color; }
290
291.uk-nav-primary .uk-nav-sub li.uk-active > a { color: $nav-primary-sublist-item-active-color; }
292
293
294/* Alignment modifier
295 ========================================================================== */
296
297.uk-nav-center { text-align: center; }
298
299/* Sublists */
300.uk-nav-center .uk-nav-sub,
301.uk-nav-center .uk-nav-sub ul { padding-left: 0; }
302
303/* Parent icon modifier */
304.uk-nav-center.uk-nav-parent-icon > .uk-parent > a::after { position: absolute; }
305
306
307// Hooks
308// ========================================================================
309
310@if(mixin-exists(hook-nav-misc)) {@include hook-nav-misc();}
311
312// @mixin hook-nav-sub(){}
313// @mixin hook-nav-parent-icon(){}
314// @mixin hook-nav-header(){}
315// @mixin hook-nav-divider(){}
316// @mixin hook-nav-default(){}
317// @mixin hook-nav-default-item(){}
318// @mixin hook-nav-default-item-hover(){}
319// @mixin hook-nav-default-item-active(){}
320// @mixin hook-nav-default-header(){}
321// @mixin hook-nav-default-divider(){}
322// @mixin hook-nav-primary(){}
323// @mixin hook-nav-primary-item(){}
324// @mixin hook-nav-primary-item-hover(){}
325// @mixin hook-nav-primary-item-active(){}
326// @mixin hook-nav-primary-header(){}
327// @mixin hook-nav-primary-divider(){}
328// @mixin hook-nav-misc(){}
329
330
331// Inverse
332// ========================================================================
333
334$inverse-nav-parent-icon-color: $inverse-global-color !default;
335$inverse-nav-default-item-color: $inverse-global-muted-color !default;
336$inverse-nav-default-item-hover-color: $inverse-global-color !default;
337$inverse-nav-default-item-active-color: $inverse-global-emphasis-color !default;
338$inverse-nav-default-header-color: $inverse-global-emphasis-color !default;
339$inverse-nav-default-divider-border: $inverse-global-border !default;
340$inverse-nav-default-sublist-item-color: $inverse-global-muted-color !default;
341$inverse-nav-default-sublist-item-hover-color: $inverse-global-color !default;
342$inverse-nav-default-sublist-item-active-color: $inverse-global-emphasis-color !default;
343
344$inverse-nav-primary-item-color: $inverse-global-muted-color !default;
345$inverse-nav-primary-item-hover-color: $inverse-global-color !default;
346$inverse-nav-primary-item-active-color: $inverse-global-emphasis-color !default;
347$inverse-nav-primary-header-color: $inverse-global-emphasis-color !default;
348$inverse-nav-primary-divider-border: $inverse-global-border !default;
349$inverse-nav-primary-sublist-item-color: $inverse-global-muted-color !default;
350$inverse-nav-primary-sublist-item-hover-color: $inverse-global-color !default;
351$inverse-nav-primary-sublist-item-active-color: $inverse-global-emphasis-color !default;
352
353
354
355// @mixin hook-inverse-nav-parent-icon(){}
356// @mixin hook-inverse-nav-default-item(){}
357// @mixin hook-inverse-nav-default-item-hover(){}
358// @mixin hook-inverse-nav-default-item-active(){}
359// @mixin hook-inverse-nav-default-header(){}
360// @mixin hook-inverse-nav-default-divider(){}
361// @mixin hook-inverse-nav-primary-item(){}
362// @mixin hook-inverse-nav-primary-item-hover(){}
363// @mixin hook-inverse-nav-primary-item-active(){}
364// @mixin hook-inverse-nav-primary-header(){}
365// @mixin hook-inverse-nav-primary-divider(){}