comparison static/bootstrap/less/navs.less @ 149:d29e2f337b00

Updated to Bootstrap 3.0.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 12 Dec 2013 21:54:04 -0800
parents a5a3d454eac9
children
comparison
equal deleted inserted replaced
148:f02e049d6546 149:d29e2f337b00
1 // 1 //
2 // Navs 2 // Navs
3 // -------------------------------------------------- 3 // --------------------------------------------------
4 4
5 5
6 // BASE CLASS 6 // Base class
7 // ---------- 7 // --------------------------------------------------
8 8
9 .nav { 9 .nav {
10 margin-left: 0; 10 margin-bottom: 0;
11 margin-bottom: @baseLineHeight; 11 padding-left: 0; // Override default ul/ol
12 list-style: none; 12 list-style: none;
13 }
14
15 // Make links block level
16 .nav > li > a {
17 display: block;
18 }
19 .nav > li > a:hover,
20 .nav > li > a:focus {
21 text-decoration: none;
22 background-color: @grayLighter;
23 }
24
25 // Prevent IE8 from misplacing imgs
26 // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
27 .nav > li > a > img {
28 max-width: none;
29 }
30
31 // Redeclare pull classes because of specifity
32 .nav > .pull-right {
33 float: right;
34 }
35
36 // Nav headers (for dropdowns and lists)
37 .nav-header {
38 display: block;
39 padding: 3px 15px;
40 font-size: 11px;
41 font-weight: bold;
42 line-height: @baseLineHeight;
43 color: @grayLight;
44 text-shadow: 0 1px 0 rgba(255,255,255,.5);
45 text-transform: uppercase;
46 }
47 // Space them out when they follow another list item (link)
48 .nav li + .nav-header {
49 margin-top: 9px;
50 }
51
52
53
54 // NAV LIST
55 // --------
56
57 .nav-list {
58 padding-left: 15px;
59 padding-right: 15px;
60 margin-bottom: 0;
61 }
62 .nav-list > li > a,
63 .nav-list .nav-header {
64 margin-left: -15px;
65 margin-right: -15px;
66 text-shadow: 0 1px 0 rgba(255,255,255,.5);
67 }
68 .nav-list > li > a {
69 padding: 3px 15px;
70 }
71 .nav-list > .active > a,
72 .nav-list > .active > a:hover,
73 .nav-list > .active > a:focus {
74 color: @white;
75 text-shadow: 0 -1px 0 rgba(0,0,0,.2);
76 background-color: @linkColor;
77 }
78 .nav-list [class^="icon-"],
79 .nav-list [class*=" icon-"] {
80 margin-right: 2px;
81 }
82 // Dividers (basically an hr) within the dropdown
83 .nav-list .divider {
84 .nav-divider();
85 }
86
87
88
89 // TABS AND PILLS
90 // -------------
91
92 // Common styles
93 .nav-tabs,
94 .nav-pills {
95 .clearfix(); 13 .clearfix();
96 } 14
97 .nav-tabs > li, 15 > li {
98 .nav-pills > li { 16 position: relative;
99 float: left; 17 display: block;
100 } 18
101 .nav-tabs > li > a, 19 > a {
102 .nav-pills > li > a { 20 position: relative;
103 padding-right: 12px; 21 display: block;
104 padding-left: 12px; 22 padding: @nav-link-padding;
105 margin-right: 2px; 23 &:hover,
106 line-height: 14px; // keeps the overall height an even number 24 &:focus {
107 } 25 text-decoration: none;
108 26 background-color: @nav-link-hover-bg;
109 // TABS 27 }
110 // ---- 28 }
29
30 // Disabled state sets text to gray and nukes hover/tab effects
31 &.disabled > a {
32 color: @nav-disabled-link-color;
33
34 &:hover,
35 &:focus {
36 color: @nav-disabled-link-hover-color;
37 text-decoration: none;
38 background-color: transparent;
39 cursor: not-allowed;
40 }
41 }
42 }
43
44 // Open dropdowns
45 .open > a {
46 &,
47 &:hover,
48 &:focus {
49 background-color: @nav-link-hover-bg;
50 border-color: @link-color;
51 }
52 }
53
54 // Nav dividers (deprecated with v3.0.1)
55 //
56 // This should have been removed in v3 with the dropping of `.nav-list`, but
57 // we missed it. We don't currently support this anywhere, but in the interest
58 // of maintaining backward compatibility in case you use it, it's deprecated.
59 .nav-divider {
60 .nav-divider();
61 }
62
63 // Prevent IE8 from misplacing imgs
64 //
65 // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
66 > li > a > img {
67 max-width: none;
68 }
69 }
70
71
72 // Tabs
73 // -------------------------
111 74
112 // Give the tabs something to sit on 75 // Give the tabs something to sit on
113 .nav-tabs { 76 .nav-tabs {
114 border-bottom: 1px solid #ddd; 77 border-bottom: 1px solid @nav-tabs-border-color;
115 } 78 > li {
116 // Make the list-items overlay the bottom border 79 float: left;
117 .nav-tabs > li { 80 // Make the list-items overlay the bottom border
118 margin-bottom: -1px; 81 margin-bottom: -1px;
119 } 82
120 // Actual tabs (as links) 83 // Actual tabs (as links)
121 .nav-tabs > li > a { 84 > a {
122 padding-top: 8px; 85 margin-right: 2px;
123 padding-bottom: 8px; 86 line-height: @line-height-base;
124 line-height: @baseLineHeight; 87 border: 1px solid transparent;
125 border: 1px solid transparent; 88 border-radius: @border-radius-base @border-radius-base 0 0;
126 .border-radius(4px 4px 0 0); 89 &:hover {
127 &:hover, 90 border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;
128 &:focus { 91 }
129 border-color: @grayLighter @grayLighter #ddd; 92 }
130 } 93
131 } 94 // Active state, and it's :hover to override normal :hover
132 // Active state, and it's :hover/:focus to override normal :hover/:focus 95 &.active > a {
133 .nav-tabs > .active > a, 96 &,
134 .nav-tabs > .active > a:hover, 97 &:hover,
135 .nav-tabs > .active > a:focus { 98 &:focus {
136 color: @gray; 99 color: @nav-tabs-active-link-hover-color;
137 background-color: @bodyBackground; 100 background-color: @nav-tabs-active-link-hover-bg;
138 border: 1px solid #ddd; 101 border: 1px solid @nav-tabs-active-link-hover-border-color;
139 border-bottom-color: transparent; 102 border-bottom-color: transparent;
140 cursor: default; 103 cursor: default;
141 } 104 }
142 105 }
143 106 }
144 // PILLS 107 // pulling this in mainly for less shorthand
145 // ----- 108 &.nav-justified {
146 109 .nav-justified();
147 // Links rendered as pills 110 .nav-tabs-justified();
148 .nav-pills > li > a { 111 }
149 padding-top: 8px; 112 }
150 padding-bottom: 8px; 113
151 margin-top: 2px; 114
152 margin-bottom: 2px; 115 // Pills
153 .border-radius(5px); 116 // -------------------------
154 } 117 .nav-pills {
155 118 > li {
156 // Active state 119 float: left;
157 .nav-pills > .active > a, 120
158 .nav-pills > .active > a:hover, 121 // Links rendered as pills
159 .nav-pills > .active > a:focus { 122 > a {
160 color: @white; 123 border-radius: @nav-pills-border-radius;
161 background-color: @linkColor; 124 }
162 } 125 + li {
163 126 margin-left: 2px;
164 127 }
165 128
166 // STACKED NAV 129 // Active state
167 // ----------- 130 &.active > a {
168 131 &,
169 // Stacked tabs and pills 132 &:hover,
170 .nav-stacked > li { 133 &:focus {
171 float: none; 134 color: @nav-pills-active-link-hover-color;
172 } 135 background-color: @nav-pills-active-link-hover-bg;
173 .nav-stacked > li > a { 136 }
174 margin-right: 0; // no need for the gap between nav items 137 }
175 } 138 }
176 139 }
177 // Tabs 140
178 .nav-tabs.nav-stacked { 141
142 // Stacked pills
143 .nav-stacked {
144 > li {
145 float: none;
146 + li {
147 margin-top: 2px;
148 margin-left: 0; // no need for this gap between nav items
149 }
150 }
151 }
152
153
154 // Nav variations
155 // --------------------------------------------------
156
157 // Justified nav links
158 // -------------------------
159
160 .nav-justified {
161 width: 100%;
162
163 > li {
164 float: none;
165 > a {
166 text-align: center;
167 margin-bottom: 5px;
168 }
169 }
170
171 > .dropdown .dropdown-menu {
172 top: auto;
173 left: auto;
174 }
175
176 @media (min-width: @screen-sm-min) {
177 > li {
178 display: table-cell;
179 width: 1%;
180 > a {
181 margin-bottom: 0;
182 }
183 }
184 }
185 }
186
187 // Move borders to anchors instead of bottom of list
188 //
189 // Mixin for adding on top the shared `.nav-justified` styles for our tabs
190 .nav-tabs-justified {
179 border-bottom: 0; 191 border-bottom: 0;
180 } 192
181 .nav-tabs.nav-stacked > li > a { 193 > li > a {
182 border: 1px solid #ddd; 194 // Override margin from .nav-tabs
183 .border-radius(0); 195 margin-right: 0;
184 } 196 border-radius: @border-radius-base;
185 .nav-tabs.nav-stacked > li:first-child > a { 197 }
186 .border-top-radius(4px); 198
187 } 199 > .active > a,
188 .nav-tabs.nav-stacked > li:last-child > a { 200 > .active > a:hover,
189 .border-bottom-radius(4px); 201 > .active > a:focus {
190 } 202 border: 1px solid @nav-tabs-justified-link-border-color;
191 .nav-tabs.nav-stacked > li > a:hover, 203 }
192 .nav-tabs.nav-stacked > li > a:focus { 204
193 border-color: #ddd; 205 @media (min-width: @screen-sm-min) {
194 z-index: 2; 206 > li > a {
195 } 207 border-bottom: 1px solid @nav-tabs-justified-link-border-color;
196 208 border-radius: @border-radius-base @border-radius-base 0 0;
197 // Pills 209 }
198 .nav-pills.nav-stacked > li > a { 210 > .active > a,
199 margin-bottom: 3px; 211 > .active > a:hover,
200 } 212 > .active > a:focus {
201 .nav-pills.nav-stacked > li:last-child > a { 213 border-bottom-color: @nav-tabs-justified-active-link-border-color;
202 margin-bottom: 1px; // decrease margin to match sizing of stacked tabs 214 }
203 } 215 }
204 216 }
205 217
206 218
207 // DROPDOWNS 219 // Tabbable tabs
208 // --------- 220 // -------------------------
209 221
222 // Hide tabbable panes to start, show them when `.active`
223 .tab-content {
224 > .tab-pane {
225 display: none;
226 }
227 > .active {
228 display: block;
229 }
230 }
231
232
233 // Dropdowns
234 // -------------------------
235
236 // Specific dropdowns
210 .nav-tabs .dropdown-menu { 237 .nav-tabs .dropdown-menu {
211 .border-radius(0 0 6px 6px); // remove the top rounded corners here since there is a hard edge above the menu 238 // make dropdown border overlap tab border
212 }
213 .nav-pills .dropdown-menu {
214 .border-radius(6px); // make rounded corners match the pills
215 }
216
217 // Default dropdown links
218 // -------------------------
219 // Make carets use linkColor to start
220 .nav .dropdown-toggle .caret {
221 border-top-color: @linkColor;
222 border-bottom-color: @linkColor;
223 margin-top: 6px;
224 }
225 .nav .dropdown-toggle:hover .caret,
226 .nav .dropdown-toggle:focus .caret {
227 border-top-color: @linkColorHover;
228 border-bottom-color: @linkColorHover;
229 }
230 /* move down carets for tabs */
231 .nav-tabs .dropdown-toggle .caret {
232 margin-top: 8px;
233 }
234
235 // Active dropdown links
236 // -------------------------
237 .nav .active .dropdown-toggle .caret {
238 border-top-color: #fff;
239 border-bottom-color: #fff;
240 }
241 .nav-tabs .active .dropdown-toggle .caret {
242 border-top-color: @gray;
243 border-bottom-color: @gray;
244 }
245
246 // Active:hover/:focus dropdown links
247 // -------------------------
248 .nav > .dropdown.active > a:hover,
249 .nav > .dropdown.active > a:focus {
250 cursor: pointer;
251 }
252
253 // Open dropdowns
254 // -------------------------
255 .nav-tabs .open .dropdown-toggle,
256 .nav-pills .open .dropdown-toggle,
257 .nav > li.dropdown.open.active > a:hover,
258 .nav > li.dropdown.open.active > a:focus {
259 color: @white;
260 background-color: @grayLight;
261 border-color: @grayLight;
262 }
263 .nav li.dropdown.open .caret,
264 .nav li.dropdown.open.active .caret,
265 .nav li.dropdown.open a:hover .caret,
266 .nav li.dropdown.open a:focus .caret {
267 border-top-color: @white;
268 border-bottom-color: @white;
269 .opacity(100);
270 }
271
272 // Dropdowns in stacked tabs
273 .tabs-stacked .open > a:hover,
274 .tabs-stacked .open > a:focus {
275 border-color: @grayLight;
276 }
277
278
279
280 // TABBABLE
281 // --------
282
283
284 // COMMON STYLES
285 // -------------
286
287 // Clear any floats
288 .tabbable {
289 .clearfix();
290 }
291 .tab-content {
292 overflow: auto; // prevent content from running below tabs
293 }
294
295 // Remove border on bottom, left, right
296 .tabs-below > .nav-tabs,
297 .tabs-right > .nav-tabs,
298 .tabs-left > .nav-tabs {
299 border-bottom: 0;
300 }
301
302 // Show/hide tabbable areas
303 .tab-content > .tab-pane,
304 .pill-content > .pill-pane {
305 display: none;
306 }
307 .tab-content > .active,
308 .pill-content > .active {
309 display: block;
310 }
311
312
313 // BOTTOM
314 // ------
315
316 .tabs-below > .nav-tabs {
317 border-top: 1px solid #ddd;
318 }
319 .tabs-below > .nav-tabs > li {
320 margin-top: -1px; 239 margin-top: -1px;
321 margin-bottom: 0; 240 // Remove the top rounded corners here since there is a hard edge above the menu
322 } 241 .border-top-radius(0);
323 .tabs-below > .nav-tabs > li > a { 242 }
324 .border-radius(0 0 4px 4px);
325 &:hover,
326 &:focus {
327 border-bottom-color: transparent;
328 border-top-color: #ddd;
329 }
330 }
331 .tabs-below > .nav-tabs > .active > a,
332 .tabs-below > .nav-tabs > .active > a:hover,
333 .tabs-below > .nav-tabs > .active > a:focus {
334 border-color: transparent #ddd #ddd #ddd;
335 }
336
337 // LEFT & RIGHT
338 // ------------
339
340 // Common styles
341 .tabs-left > .nav-tabs > li,
342 .tabs-right > .nav-tabs > li {
343 float: none;
344 }
345 .tabs-left > .nav-tabs > li > a,
346 .tabs-right > .nav-tabs > li > a {
347 min-width: 74px;
348 margin-right: 0;
349 margin-bottom: 3px;
350 }
351
352 // Tabs on the left
353 .tabs-left > .nav-tabs {
354 float: left;
355 margin-right: 19px;
356 border-right: 1px solid #ddd;
357 }
358 .tabs-left > .nav-tabs > li > a {
359 margin-right: -1px;
360 .border-radius(4px 0 0 4px);
361 }
362 .tabs-left > .nav-tabs > li > a:hover,
363 .tabs-left > .nav-tabs > li > a:focus {
364 border-color: @grayLighter #ddd @grayLighter @grayLighter;
365 }
366 .tabs-left > .nav-tabs .active > a,
367 .tabs-left > .nav-tabs .active > a:hover,
368 .tabs-left > .nav-tabs .active > a:focus {
369 border-color: #ddd transparent #ddd #ddd;
370 *border-right-color: @white;
371 }
372
373 // Tabs on the right
374 .tabs-right > .nav-tabs {
375 float: right;
376 margin-left: 19px;
377 border-left: 1px solid #ddd;
378 }
379 .tabs-right > .nav-tabs > li > a {
380 margin-left: -1px;
381 .border-radius(0 4px 4px 0);
382 }
383 .tabs-right > .nav-tabs > li > a:hover,
384 .tabs-right > .nav-tabs > li > a:focus {
385 border-color: @grayLighter @grayLighter @grayLighter #ddd;
386 }
387 .tabs-right > .nav-tabs .active > a,
388 .tabs-right > .nav-tabs .active > a:hover,
389 .tabs-right > .nav-tabs .active > a:focus {
390 border-color: #ddd #ddd #ddd transparent;
391 *border-left-color: @white;
392 }
393
394
395
396 // DISABLED STATES
397 // ---------------
398
399 // Gray out text
400 .nav > .disabled > a {
401 color: @grayLight;
402 }
403 // Nuke hover/focus effects
404 .nav > .disabled > a:hover,
405 .nav > .disabled > a:focus {
406 text-decoration: none;
407 background-color: transparent;
408 cursor: default;
409 }