├── LICENSE
├── README.md
├── SiteHeader.psd
├── bower.json
├── css
└── scrolltabs.css
├── documentation.html
├── examples
├── css
│ ├── bootstrap-theme.css
│ ├── bootstrap-theme.css.map
│ ├── bootstrap-theme.min.css
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ └── demo.css
├── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ └── glyphicons-halflings-regular.woff
├── images
│ ├── header-940.png
│ ├── header-compressed.png
│ ├── header.jpg
│ ├── header.png
│ ├── scroll_tab_bg.jpg
│ └── toolbar-bg.jpg
└── js
│ ├── bootstrap.js
│ └── bootstrap.min.js
├── index.html
├── js
├── jquery.mousewheel.js
└── jquery.scrolltabs.js
└── scrolltabs.jquery.json
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 joshreed
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | jQuery-ScrollTabs
2 | =================
3 |
4 | A JQuery highly configurable plugin to handle scrolling tabs horizontally when not enough space is available. This is great for navigation in context of responsive layouts. Additionally, there's nearly infinite ways to configure the appearance using your own CSS or the available Options and API calls for changing the contents on-the-fly!
5 |
6 | Demo
7 | ----
8 |
9 | View a live demo of jQuery-ScrollTabs in action!
10 |
11 | http://joshreed.github.io/jQuery-ScrollTabs/
12 |
13 | Install
14 | -------
15 |
16 | There are two installation options:
17 | * Bower - `bower install jquery-scrolltabs`
18 | * Download - Traditional download at http://joshreed.github.io/jQuery-ScrollTabs/
19 |
20 | Usage
21 | -----
22 |
23 | At it's most basic:
24 |
25 | ```
26 | $('#tabSet').scrollTabs();
27 | ```
28 |
29 | And to show the options available:
30 |
31 | ```
32 | $('#tabSet').scrollTabs({
33 | scroll_distance: 350, // Pixel width for how far to scroll with each single-click
34 | scroll_duration: 350, // Milliseconds for how long to animate the scroll
35 | left_arrow_size: 26, // Width of the left arrow (if you choose to customize this)
36 | right_arrow_size: 26, // Width of the right arrow (if you choose to customize this)
37 | click_callback: function(e){
38 | // This shows the default callback, which will redirect the page based
39 | // on the 'rel' attribute.
40 | var val = $(this).attr('rel');
41 | if(val){
42 | window.location.href = val;
43 | }
44 | }
45 | });
46 | ```
47 |
48 | Documentation
49 | -------------
50 |
51 | For more information or detailed usage instructions, please refer to the link below.
52 |
53 | http://joshreed.github.io/jQuery-ScrollTabs/documentation.html
54 |
55 | Also, the Examples provide a guide of how to structure your HTML, and some key JavaScript API calls, should you be interested in dynamically changing the tab set's contents.
56 |
57 | http://joshreed.github.io/jQuery-ScrollTabs/index.html#examples
58 |
--------------------------------------------------------------------------------
/SiteHeader.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshreed/jQuery-ScrollTabs/c28521b1d80239fbd0babc6ab81164eaeaf3261a/SiteHeader.psd
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jquery-scrolltabs",
3 | "version": "2.0.0",
4 | "homepage": "http://joshreed.github.io/jQuery-ScrollTabs/",
5 | "authors": [
6 | "Josh Reed"
7 | ],
8 | "description": "JQuery highly configurable plugin to handle scrolling tabs horizontally when not enough space is available.",
9 | "main": [
10 | "./js/jquery.scrolltabs.js",
11 | "./js/jquery.mousewheel.js",
12 | "./css/scrolltabs.css"
13 | ],
14 | "ignore": [
15 | "*.psd",
16 | "*.html",
17 | "*.md",
18 | "examples",
19 | "scrolltabs.jquery.json"
20 | ],
21 | "moduleType": [
22 | "globals"
23 | ],
24 | "keywords": [
25 | "scroll",
26 | "tabs",
27 | "tabbed",
28 | "horizontal"
29 | ],
30 | "dependencies": {
31 | "jquery": ">= 1.7.1"
32 | },
33 | "license": "MIT"
34 | }
35 |
--------------------------------------------------------------------------------
/css/scrolltabs.css:
--------------------------------------------------------------------------------
1 | /******************* BASIC STYLING **********************/
2 | .scroll_tabs_container {
3 | position: relative;
4 | top: 0px;
5 | left: 0px;
6 | right: 0px;
7 | text-align: left;
8 | height: 40px;
9 | margin-bottom: 10px;
10 | }
11 |
12 | ul.scroll_tabs_container {
13 | list-style: none;
14 | }
15 |
16 | .scroll_tabs_container div.scroll_tab_inner {
17 | height: 40px;
18 | }
19 |
20 | .scroll_tabs_container div.scroll_tab_inner span, .scroll_tabs_container div.scroll_tab_inner li {
21 | padding-left: 20px;
22 | padding-right: 20px;
23 | line-height: 40px;
24 | font-size: 14px;
25 | background-color: #CCCCCC;
26 | color: #333333;
27 | cursor: pointer;
28 | }
29 |
30 | .scroll_tabs_container div.scroll_tab_inner li {
31 | display: -moz-inline-stack;
32 | display: inline-block;
33 | *display: inline;
34 | list-style-type: none;
35 | }
36 |
37 | .scroll_tabs_container div.scroll_tab_inner span.scroll_tab_left_finisher {
38 | padding: 0px;
39 | width: 0px;
40 | }
41 |
42 | .scroll_tabs_container div.scroll_tab_inner span.scroll_tab_right_finisher {
43 | padding: 0px;
44 | width: 0px;
45 | }
46 |
47 | .scroll_tabs_container .scroll_tab_left_button {
48 | height: 40px;
49 | background-color: #CCCCCC;
50 | -webkit-touch-callout: none;
51 | -webkit-user-select: none;
52 | -khtml-user-select: none;
53 | -moz-user-select: none;
54 | -ms-user-select: none;
55 | user-select: none;
56 | }
57 |
58 | .scroll_tabs_container .scroll_tab_left_button::before {
59 | content: "\25C0";
60 | line-height: 40px;
61 | padding-left: 5px;
62 | }
63 |
64 | .scroll_tabs_container .scroll_tab_left_button_over {
65 | background-color: #999999;
66 | }
67 |
68 | .scroll_tabs_container .scroll_tab_left_button_disabled {
69 | color: #AAAAAA;
70 | background-color: #CCCCCC;
71 | }
72 |
73 | .scroll_tabs_container .scroll_tab_right_button {
74 | height: 40px;
75 | background-color: #CCCCCC;
76 | -webkit-touch-callout: none;
77 | -webkit-user-select: none;
78 | -khtml-user-select: none;
79 | -moz-user-select: none;
80 | -ms-user-select: none;
81 | user-select: none;
82 | }
83 |
84 | .scroll_tabs_container .scroll_tab_right_button::before {
85 | content: "\25B6";
86 | line-height: 40px;
87 | padding-left: 5px;
88 | }
89 |
90 | .scroll_tabs_container .scroll_tab_right_button_over {
91 | background-color: #999999;
92 | }
93 |
94 | .scroll_tabs_container .scroll_tab_right_button_disabled{
95 | color: #AAAAAA;
96 | background-color: #CCCCCC;
97 | }
98 |
99 | /****************** LIGHT THEME **************************/
100 | .scroll_tabs_theme_light {
101 | height: 42px;
102 | }
103 |
104 | .scroll_tabs_theme_light div.scroll_tab_inner {
105 | height: 42px;
106 | }
107 |
108 | .scroll_tabs_theme_light div.scroll_tab_inner span, .scroll_tabs_theme_light div.scroll_tab_inner li {
109 | padding-left: 20px;
110 | padding-right: 20px;
111 | line-height: 40px;
112 | font-size: 14px;
113 | background-color: #CCCCCC;
114 | border-left: 1px solid #999999;
115 | border-top: 1px solid #999999;
116 | border-bottom: 1px solid #999999;
117 | color: #333333;
118 | cursor: pointer;
119 | }
120 |
121 | .scroll_tabs_theme_light div.scroll_tab_inner span.scroll_tab_first, .scroll_tabs_theme_light div.scroll_tab_inner li.scroll_tab_first {
122 | border-left: 0px;
123 | }
124 |
125 | .scroll_tabs_theme_light div.scroll_tab_inner span.scroll_tab_left_finisher {
126 | padding: 0px;
127 | width: 10px;
128 | background-color: #CCCCCC;
129 | -webkit-border-top-left-radius: 5px;
130 | -webkit-border-bottom-left-radius: 5px;
131 | -moz-border-radius-topleft: 5px;
132 | -moz-border-radius-bottomleft: 5px;
133 | border-top-left-radius: 5px;
134 | border-bottom-left-radius: 5px;
135 | }
136 |
137 | .scroll_tabs_theme_light div.scroll_tab_inner span.scroll_tab_right_finisher {
138 | padding: 0px;
139 | width: 10px;
140 | -webkit-border-top-right-radius: 5px;
141 | -webkit-border-bottom-right-radius: 5px;
142 | -moz-border-radius-topright: 5px;
143 | -moz-border-radius-bottomright: 5px;
144 | border-top-right-radius: 5px;
145 | border-bottom-right-radius: 5px;
146 | background-color: #CCCCCC;
147 | border-left: 0px;
148 | border-right: 1px solid #999999;
149 | }
150 |
151 | .scroll_tabs_theme_light div.scroll_tab_inner span.scroll_tab_over, .scroll_tabs_theme_light div.scroll_tab_inner li.scroll_tab_over {
152 | background-color: #999999;
153 | }
154 |
155 | /*.scroll_tabs_theme_light div.scroll_tab_inner span.scroll_tab_first_over {
156 | background-color: #999999;
157 | }
158 |
159 | .scroll_tabs_theme_light div.scroll_tab_inner span.scroll_tab_left_finisher_over {
160 | background-color: #999999;
161 | }
162 |
163 | .scroll_tabs_theme_light div.scroll_tab_inner span.scroll_tab_right_finisher_over {
164 | background-color: #999999;
165 | }*/
166 |
167 | /*.scroll_tabs_theme_light div.scroll_tab_inner span.scroll_tab_left_finisher_selected {
168 | background-color: #AAAAAA;
169 | }
170 |
171 | .scroll_tabs_theme_light div.scroll_tab_inner span.scroll_tab_right_finisher_selected {
172 | background-color: #AAAAAA;
173 | }*/
174 |
175 |
176 | .scroll_tabs_theme_light .scroll_tab_left_button {
177 | height: 42px;
178 | background-color: #CCCCCC;
179 | -webkit-border-top-left-radius: 5px;
180 | -webkit-border-bottom-left-radius: 5px;
181 | -moz-border-radius-topleft: 5px;
182 | -moz-border-radius-bottomleft: 5px;
183 | border-top-left-radius: 5px;
184 | border-bottom-left-radius: 5px;
185 | border: 1px solid #999999;
186 | -webkit-touch-callout: none;
187 | -webkit-user-select: none;
188 | -khtml-user-select: none;
189 | -moz-user-select: none;
190 | -ms-user-select: none;
191 | user-select: none;
192 | }
193 |
194 | .scroll_tabs_theme_light .scroll_tab_left_button::before {
195 | content: "\25C0";
196 | line-height: 40px;
197 | padding-left: 5px;
198 | }
199 |
200 | .scroll_tabs_theme_light .scroll_tab_left_button_over {
201 | background-color: #999999;
202 | }
203 |
204 | .scroll_tabs_theme_light .scroll_tab_left_button_disabled {
205 | color: #AAAAAA;
206 | background-color: #CCCCCC;
207 | }
208 |
209 | .scroll_tabs_theme_light .scroll_tab_right_button {
210 | height: 42px;
211 | -webkit-border-top-right-radius: 5px;
212 | -webkit-border-bottom-right-radius: 5px;
213 | -moz-border-radius-topright: 5px;
214 | -moz-border-radius-bottomright: 5px;
215 | border-top-right-radius: 5px;
216 | border-bottom-right-radius: 5px;
217 | background-color: #CCCCCC;
218 | border: 1px solid #999999;
219 | -webkit-touch-callout: none;
220 | -webkit-user-select: none;
221 | -khtml-user-select: none;
222 | -moz-user-select: none;
223 | -ms-user-select: none;
224 | user-select: none;
225 | }
226 |
227 | .scroll_tabs_theme_light .scroll_tab_right_button::before {
228 | content: "\25B6";
229 | line-height: 40px;
230 | padding-left: 5px;
231 | }
232 |
233 | .scroll_tabs_theme_light .scroll_tab_right_button_over {
234 | background-color: #999999;
235 | }
236 |
237 | .scroll_tabs_theme_light .scroll_tab_right_button_disabled{
238 | color: #AAAAAA;
239 | background-color: #CCCCCC;
240 | }
241 |
242 | .scroll_tabs_theme_light div.scroll_tab_inner span.tab_selected, .scroll_tabs_theme_light div.scroll_tab_inner li.tab_selected {
243 | background-color: #AAAAAA;
244 | }
245 |
246 | /*.scroll_tabs_theme_light div.scroll_tab_inner span.scroll_tab_first_selected {
247 | background-color: #AAAAAA;
248 | }*/
249 |
250 | /****************** DARK THEME **************************/
251 | .scroll_tabs_theme_dark {
252 | height: 42px;
253 | }
254 |
255 | .scroll_tabs_theme_dark div.scroll_tab_inner {
256 | height: 42px;
257 | }
258 |
259 | .scroll_tabs_theme_dark div.scroll_tab_inner span, .scroll_tabs_theme_dark div.scroll_tab_inner li {
260 | padding-left: 20px;
261 | padding-right: 20px;
262 | line-height: 40px;
263 | font-size: 14px;
264 | background-color: #333333;
265 | border-left: 1px solid #222222;
266 | border-top: 1px solid #222222;
267 | border-bottom: 1px solid #222222;
268 | color: #FFFFFF;
269 | cursor: pointer;
270 | }
271 |
272 | .scroll_tabs_theme_dark div.scroll_tab_inner span.scroll_tab_first, .scroll_tabs_theme_dark div.scroll_tab_inner li.scroll_tab_first {
273 | border-left: 0px;
274 | }
275 |
276 | .scroll_tabs_theme_dark div.scroll_tab_inner span.scroll_tab_left_finisher {
277 | padding: 0px;
278 | width: 10px;
279 | -webkit-border-top-left-radius: 5px;
280 | -webkit-border-bottom-left-radius: 5px;
281 | -moz-border-radius-topleft: 5px;
282 | -moz-border-radius-bottomleft: 5px;
283 | border-top-left-radius: 5px;
284 | border-bottom-left-radius: 5px;
285 | }
286 |
287 | .scroll_tabs_theme_dark div.scroll_tab_inner span.scroll_tab_right_finisher {
288 | padding: 0px;
289 | width: 10px;
290 | -webkit-border-top-right-radius: 5px;
291 | -webkit-border-bottom-right-radius: 5px;
292 | -moz-border-radius-topright: 5px;
293 | -moz-border-radius-bottomright: 5px;
294 | border-top-right-radius: 5px;
295 | border-bottom-right-radius: 5px;
296 | border-left: 0px;
297 | border-right: 1px solid #222222;
298 | }
299 |
300 | .scroll_tabs_theme_dark div.scroll_tab_inner span.scroll_tab_over, .scroll_tabs_theme_dark div.scroll_tab_inner li.scroll_tab_over {
301 | background-color: #555555;
302 | }
303 |
304 | .scroll_tabs_theme_dark .scroll_tab_left_button {
305 | height: 42px;
306 | background-color: #333333;
307 | color: #FFFFFF;
308 | -webkit-border-top-left-radius: 5px;
309 | -webkit-border-bottom-left-radius: 5px;
310 | -moz-border-radius-topleft: 5px;
311 | -moz-border-radius-bottomleft: 5px;
312 | border-top-left-radius: 5px;
313 | border-bottom-left-radius: 5px;
314 | border: 1px solid #222222;
315 | -webkit-touch-callout: none;
316 | -webkit-user-select: none;
317 | -khtml-user-select: none;
318 | -moz-user-select: none;
319 | -ms-user-select: none;
320 | user-select: none;
321 | }
322 |
323 | .scroll_tabs_theme_dark .scroll_tab_left_button::before {
324 | content: "\25C0";
325 | line-height: 40px;
326 | padding-left: 5px;
327 | }
328 |
329 | .scroll_tabs_theme_dark .scroll_tab_left_button_over {
330 | background-color: #666666;
331 | }
332 |
333 | .scroll_tabs_theme_dark .scroll_tab_left_button_disabled {
334 | color: #444444;
335 | background-color: #333333;
336 | }
337 |
338 | .scroll_tabs_theme_dark .scroll_tab_right_button {
339 | height: 42px;
340 | -webkit-border-top-right-radius: 5px;
341 | -webkit-border-bottom-right-radius: 5px;
342 | -moz-border-radius-topright: 5px;
343 | -moz-border-radius-bottomright: 5px;
344 | border-top-right-radius: 5px;
345 | border-bottom-right-radius: 5px;
346 | background-color: #333333;
347 | border: 1px solid #222222;
348 | color: #FFFFFF;
349 | -webkit-touch-callout: none;
350 | -webkit-user-select: none;
351 | -khtml-user-select: none;
352 | -moz-user-select: none;
353 | -ms-user-select: none;
354 | user-select: none;
355 | }
356 |
357 | .scroll_tabs_theme_dark .scroll_tab_right_button::before {
358 | content: "\25B6";
359 | line-height: 40px;
360 | padding-left: 5px;
361 | }
362 |
363 | .scroll_tabs_theme_dark .scroll_tab_right_button_over {
364 | background-color: #666666;
365 | }
366 |
367 | .scroll_tabs_theme_dark .scroll_tab_right_button_disabled{
368 | color: #444444;
369 | background-color: #333333;
370 | }
371 |
372 | .scroll_tabs_theme_dark div.scroll_tab_inner span.tab_selected, .scroll_tabs_theme_dark div.scroll_tab_inner li.tab_selected {
373 | background-color: #666666;
374 | }
375 |
--------------------------------------------------------------------------------
/documentation.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | jQuery ScrollTabs :: Josh Reed
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
28 |
29 |
38 |
39 |
40 |
41 |
Documentation
42 |
43 |
44 |
45 |
Table of Contents
46 |
47 |
55 |
56 |
57 |
Available Options
58 |
59 |
scroll_distance
- Pixel width distance for each scroll click. Default: 300 pixels.
60 |
61 |
scroll_duration
- Animation time for scrolling in milliseconds. Default: 300 milliseconds.
62 |
63 |
left_arrow_size
- Pixel width for the scroll button on the left side. Default: 26 pixels
64 |
65 |
right_arrow_size
- Pixel width for the scroll button on the right side. Default 26 pixels.
66 |
67 |
click_callback
- Callback function on click. Accpets the click event object as an argument.
68 | The default callback function will change the page to the href in the 'rel' attribute of the item's span tag.
69 |
70 |
71 |
Usage
72 |
73 |
74 | $('#tabSet').scrollTabs({
75 | scroll_distance: 350,
76 | scroll_duration: 350,
77 | left_arrow_size: 26,
78 | right_arrow_size: 26,
79 | click_callback: function(e){
80 | var val = $(this).attr('rel');
81 | if(val){
82 | window.location.href = val;
83 | }
84 | }
85 | });
86 |
87 |
JavaScript API
88 |
89 |
The returned object will have the following methods.
90 |
91 |
92 | var tabSet = $('#tab_set').scrollTabs();
93 | tabSet.addTab('<span>Hi</span>');
94 |
95 |
96 |
97 |
98 | domObject
- Access the DOM Object that this TabSet was created on.
99 |
100 |
101 |
102 |
103 |
104 | addTab(html, position)
- Add a tab to the ScrollTabs interface.
105 | The new tab is created from the HTML string that you pass to this method. Providing an HTML
106 | string provides you with the full flexibility to augment your span tag fully to meet the needs
107 | of your specific use-case. Optionally, you may pass a position value, which if not provided
108 | will default to placing the new tab as the last tab. The positions are zero-indexed, and the
109 | new tab will shift all items at and past the indicated position down one item.
110 |
111 |
112 |
113 | // Place a new tab into the first position
114 | tabSet.addTab('<span>Hi</span>', 0);
115 |
116 |
117 |
118 |
119 | removeTabs(jQuerySelector)
- Removes all the items that are
120 | returned by the jQuery selector string (scoped within this object).
121 |
122 |
123 |
124 | // Remove the span with a specific ID
125 | tabSet.removeTabs('#tab_id');
126 |
127 | // Remove the first span, a couple of options
128 | tabSet.removeTabs('span:eq(0)');
129 | tabSet.removeTabs('span:nth-child(1)');
130 |
131 |
132 |
133 |
134 | clearTabs()
- Removes all the items in this ScrollTabs object.
135 |
136 |
137 |
138 |
139 |
140 | destroy()
- Destroys the ScrollTabs instance formatting, leaving
141 | only the raw HTML contents. This is effectively the opposite of the ScrollTabs initialization.
142 |
143 |
144 |
145 |
146 |
147 | hideTabs(jQuerySelector)
- Hide tabs based on the jQuery Selector.
148 | This is for situations where you may not want to completely remove a tab, but want to temporarily hide it.
149 |
150 |
151 |
152 |
153 |
154 | showTabs(jQuerySelector)
- Shows hidden tabs based on the jQuery Selector.
155 |
156 |
157 |
CSS Selectors
158 |
159 |
You can override the basic styling CSS to make the look of the tabs as unique as you'd like!
160 |
161 |
.scroll_tabs_container
- Wrapper for the interface. This is the DOM object you called .scrollTabs()
on.
162 |
163 |
164 |
165 |
div.scroll_tab_inner
- This is a wrapper for the individual tabs themselves. Does not include the left/right scrolling buttons.
166 |
167 |
168 |
169 |
div.scroll_tab_inner span
- The individual items that will be scrolled. Additional classes for various states will be applied to these DOM objects, such as .scroll_tab_first
(First Item), .scroll_tab_last
(Last Item), .scroll_tab_over
(Hover), and .tab_selected
(Selected/Depressed).
170 |
171 |
172 |
173 |
div.scroll_tab_inner span.scroll_tab_left_finisher
- A DOM element inserted so that you can (should you want) add some extra styling to the left of the tabs, when the scroll buttons are hidden. Make the padding and width of the element 0
should you not need it.
174 |
175 |
176 |
177 |
div.scroll_tab_inner span.scroll_tab_right_finisher
- A DOM element inserted so that you can (should you want) add some extra styling to the right of the tabs, when the scroll buttons are hidden. Make the padding and width of the element 0
should you not need it.
178 |
179 |
180 |
181 |
.scroll_tab_left_button
- The DOM element for the left button (that scrolls the grouping left). Additional selectors available to change the styling under the specified circumstances: .scroll_tab_left_button_over
(Hover) and .scroll_tab_left_button_disabled
(Not Clickable--already scrolled all the way in this direction).
182 |
183 |
184 |
185 |
.scroll_tab_right_button
- The DOM element for the right button (that scrolls the grouping right). Additional selectors available to change the styling under the specified circumstances: .scroll_tab_right_button_over
(Hover) and .scroll_tab_right_button_disabled
(Not Clickable--already scrolled all the way in this direction).
186 |
187 |
Mouse Wheel Scrolling
188 |
189 |
Mouse wheel scrolling requires the jQuery Mousewheel plugin to be installed, which is bundled with this download. All credit goes to Brandon Aaron (http://brandonaaron.net ) for this fantastic plugin.
190 |
191 |
Disabling Mouse Wheel Scrolling: simply do not include the jQuery Mousewheel plugin.
192 |
193 |
194 |
195 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
--------------------------------------------------------------------------------
/examples/css/bootstrap-theme.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.1.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 |
7 | .btn-default,
8 | .btn-primary,
9 | .btn-success,
10 | .btn-info,
11 | .btn-warning,
12 | .btn-danger {
13 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
14 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
15 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
16 | }
17 | .btn-default:active,
18 | .btn-primary:active,
19 | .btn-success:active,
20 | .btn-info:active,
21 | .btn-warning:active,
22 | .btn-danger:active,
23 | .btn-default.active,
24 | .btn-primary.active,
25 | .btn-success.active,
26 | .btn-info.active,
27 | .btn-warning.active,
28 | .btn-danger.active {
29 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
30 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
31 | }
32 | .btn:active,
33 | .btn.active {
34 | background-image: none;
35 | }
36 | .btn-default {
37 | text-shadow: 0 1px 0 #fff;
38 | background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
39 | background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
40 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
41 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
42 | background-repeat: repeat-x;
43 | border-color: #dbdbdb;
44 | border-color: #ccc;
45 | }
46 | .btn-default:hover,
47 | .btn-default:focus {
48 | background-color: #e0e0e0;
49 | background-position: 0 -15px;
50 | }
51 | .btn-default:active,
52 | .btn-default.active {
53 | background-color: #e0e0e0;
54 | border-color: #dbdbdb;
55 | }
56 | .btn-primary {
57 | background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
58 | background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
59 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
60 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
61 | background-repeat: repeat-x;
62 | border-color: #2b669a;
63 | }
64 | .btn-primary:hover,
65 | .btn-primary:focus {
66 | background-color: #2d6ca2;
67 | background-position: 0 -15px;
68 | }
69 | .btn-primary:active,
70 | .btn-primary.active {
71 | background-color: #2d6ca2;
72 | border-color: #2b669a;
73 | }
74 | .btn-success {
75 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
76 | background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
77 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
78 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
79 | background-repeat: repeat-x;
80 | border-color: #3e8f3e;
81 | }
82 | .btn-success:hover,
83 | .btn-success:focus {
84 | background-color: #419641;
85 | background-position: 0 -15px;
86 | }
87 | .btn-success:active,
88 | .btn-success.active {
89 | background-color: #419641;
90 | border-color: #3e8f3e;
91 | }
92 | .btn-info {
93 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
94 | background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
95 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
96 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
97 | background-repeat: repeat-x;
98 | border-color: #28a4c9;
99 | }
100 | .btn-info:hover,
101 | .btn-info:focus {
102 | background-color: #2aabd2;
103 | background-position: 0 -15px;
104 | }
105 | .btn-info:active,
106 | .btn-info.active {
107 | background-color: #2aabd2;
108 | border-color: #28a4c9;
109 | }
110 | .btn-warning {
111 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
112 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
113 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
114 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
115 | background-repeat: repeat-x;
116 | border-color: #e38d13;
117 | }
118 | .btn-warning:hover,
119 | .btn-warning:focus {
120 | background-color: #eb9316;
121 | background-position: 0 -15px;
122 | }
123 | .btn-warning:active,
124 | .btn-warning.active {
125 | background-color: #eb9316;
126 | border-color: #e38d13;
127 | }
128 | .btn-danger {
129 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
130 | background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
131 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
132 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
133 | background-repeat: repeat-x;
134 | border-color: #b92c28;
135 | }
136 | .btn-danger:hover,
137 | .btn-danger:focus {
138 | background-color: #c12e2a;
139 | background-position: 0 -15px;
140 | }
141 | .btn-danger:active,
142 | .btn-danger.active {
143 | background-color: #c12e2a;
144 | border-color: #b92c28;
145 | }
146 | .thumbnail,
147 | .img-thumbnail {
148 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
149 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
150 | }
151 | .dropdown-menu > li > a:hover,
152 | .dropdown-menu > li > a:focus {
153 | background-color: #e8e8e8;
154 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
155 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
156 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
157 | background-repeat: repeat-x;
158 | }
159 | .dropdown-menu > .active > a,
160 | .dropdown-menu > .active > a:hover,
161 | .dropdown-menu > .active > a:focus {
162 | background-color: #357ebd;
163 | background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
164 | background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
165 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
166 | background-repeat: repeat-x;
167 | }
168 | .navbar-default {
169 | background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
170 | background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
171 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
172 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
173 | background-repeat: repeat-x;
174 | border-radius: 4px;
175 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
176 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
177 | }
178 | .navbar-default .navbar-nav > .active > a {
179 | background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
180 | background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
181 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
182 | background-repeat: repeat-x;
183 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
184 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
185 | }
186 | .navbar-brand,
187 | .navbar-nav > li > a {
188 | text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
189 | }
190 | .navbar-inverse {
191 | background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
192 | background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
193 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
194 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
195 | background-repeat: repeat-x;
196 | }
197 | .navbar-inverse .navbar-nav > .active > a {
198 | background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);
199 | background-image: linear-gradient(to bottom, #222 0%, #282828 100%);
200 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
201 | background-repeat: repeat-x;
202 | -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
203 | box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
204 | }
205 | .navbar-inverse .navbar-brand,
206 | .navbar-inverse .navbar-nav > li > a {
207 | text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
208 | }
209 | .navbar-static-top,
210 | .navbar-fixed-top,
211 | .navbar-fixed-bottom {
212 | border-radius: 0;
213 | }
214 | .alert {
215 | text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
216 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
217 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
218 | }
219 | .alert-success {
220 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
221 | background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
222 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
223 | background-repeat: repeat-x;
224 | border-color: #b2dba1;
225 | }
226 | .alert-info {
227 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
228 | background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
229 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
230 | background-repeat: repeat-x;
231 | border-color: #9acfea;
232 | }
233 | .alert-warning {
234 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
235 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
236 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
237 | background-repeat: repeat-x;
238 | border-color: #f5e79e;
239 | }
240 | .alert-danger {
241 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
242 | background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
243 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
244 | background-repeat: repeat-x;
245 | border-color: #dca7a7;
246 | }
247 | .progress {
248 | background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
249 | background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
250 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
251 | background-repeat: repeat-x;
252 | }
253 | .progress-bar {
254 | background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
255 | background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
256 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
257 | background-repeat: repeat-x;
258 | }
259 | .progress-bar-success {
260 | background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
261 | background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
262 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
263 | background-repeat: repeat-x;
264 | }
265 | .progress-bar-info {
266 | background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
267 | background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
268 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
269 | background-repeat: repeat-x;
270 | }
271 | .progress-bar-warning {
272 | background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
273 | background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
274 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
275 | background-repeat: repeat-x;
276 | }
277 | .progress-bar-danger {
278 | background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
279 | background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
280 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
281 | background-repeat: repeat-x;
282 | }
283 | .list-group {
284 | border-radius: 4px;
285 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
286 | box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
287 | }
288 | .list-group-item.active,
289 | .list-group-item.active:hover,
290 | .list-group-item.active:focus {
291 | text-shadow: 0 -1px 0 #3071a9;
292 | background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
293 | background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
294 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
295 | background-repeat: repeat-x;
296 | border-color: #3278b3;
297 | }
298 | .panel {
299 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
300 | box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
301 | }
302 | .panel-default > .panel-heading {
303 | background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
304 | background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
305 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
306 | background-repeat: repeat-x;
307 | }
308 | .panel-primary > .panel-heading {
309 | background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
310 | background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
311 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
312 | background-repeat: repeat-x;
313 | }
314 | .panel-success > .panel-heading {
315 | background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
316 | background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
317 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
318 | background-repeat: repeat-x;
319 | }
320 | .panel-info > .panel-heading {
321 | background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
322 | background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
323 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
324 | background-repeat: repeat-x;
325 | }
326 | .panel-warning > .panel-heading {
327 | background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
328 | background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
329 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
330 | background-repeat: repeat-x;
331 | }
332 | .panel-danger > .panel-heading {
333 | background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
334 | background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
335 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
336 | background-repeat: repeat-x;
337 | }
338 | .well {
339 | background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
340 | background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
341 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
342 | background-repeat: repeat-x;
343 | border-color: #dcdcdc;
344 | -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
345 | box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
346 | }
347 | /*# sourceMappingURL=bootstrap-theme.css.map */
348 |
--------------------------------------------------------------------------------
/examples/css/bootstrap-theme.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["less/theme.less","less/mixins.less"],"names":[],"mappings":"AAeA;AACA;AACA;AACA;AACA;AACA;EACE,wCAAA;ECoGA,2FAAA;EACQ,mFAAA;;ADhGR,YAAC;AAAD,YAAC;AAAD,YAAC;AAAD,SAAC;AAAD,YAAC;AAAD,WAAC;AACD,YAAC;AAAD,YAAC;AAAD,YAAC;AAAD,SAAC;AAAD,YAAC;AAAD,WAAC;EC8FD,wDAAA;EACQ,gDAAA;;ADnER,IAAC;AACD,IAAC;EACC,sBAAA;;AAKJ;EC4PI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;EAyB2C,yBAAA;EAA2B,kBAAA;;AAvBtE,YAAC;AACD,YAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,YAAC;AACD,YAAC;EACC,yBAAA;EACA,qBAAA;;AAeJ;EC2PI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,YAAC;AACD,YAAC;EACC,yBAAA;EACA,qBAAA;;AAgBJ;EC0PI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,YAAC;AACD,YAAC;EACC,yBAAA;EACA,qBAAA;;AAiBJ;ECyPI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;;AAEA,SAAC;AACD,SAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,SAAC;AACD,SAAC;EACC,yBAAA;EACA,qBAAA;;AAkBJ;ECwPI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;;AAEA,YAAC;AACD,YAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,YAAC;AACD,YAAC;EACC,yBAAA;EACA,qBAAA;;AAmBJ;ECuPI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EAEA,sHAAA;EAoCF,mEAAA;ED7TA,2BAAA;EACA,qBAAA;;AAEA,WAAC;AACD,WAAC;EACC,yBAAA;EACA,4BAAA;;AAGF,WAAC;AACD,WAAC;EACC,yBAAA;EACA,qBAAA;;AA2BJ;AACA;EC6CE,kDAAA;EACQ,0CAAA;;ADpCV,cAAe,KAAK,IAAG;AACvB,cAAe,KAAK,IAAG;ECmOnB,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;EDpOF,yBAAA;;AAEF,cAAe,UAAU;AACzB,cAAe,UAAU,IAAG;AAC5B,cAAe,UAAU,IAAG;EC6NxB,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED9NF,yBAAA;;AAUF;ECiNI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;EAoCF,mEAAA;EDrPA,kBAAA;ECaA,2FAAA;EACQ,mFAAA;;ADjBV,eAOE,YAAY,UAAU;EC0MpB,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;EApMF,wDAAA;EACQ,gDAAA;;ADLV;AACA,WAAY,KAAK;EACf,8CAAA;;AAIF;EC+LI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;EAoCF,mEAAA;;ADtOF,eAIE,YAAY,UAAU;EC2LpB,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;EApMF,uDAAA;EACQ,+CAAA;;ADCV,eASE;AATF,eAUE,YAAY,KAAK;EACf,yCAAA;;AAKJ;AACA;AACA;EACE,gBAAA;;AAUF;EACE,6CAAA;EChCA,0FAAA;EACQ,kFAAA;;AD2CV;ECqJI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED5JF,qBAAA;;AAKF;ECoJI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED5JF,qBAAA;;AAMF;ECmJI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED5JF,qBAAA;;AAOF;ECkJI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED5JF,qBAAA;;AAgBF;ECyII,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADlIJ;EC+HI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADjIJ;EC8HI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADhIJ;EC6HI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;AD/HJ;EC4HI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;AD9HJ;EC2HI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADtHJ;EACE,kBAAA;EC/EA,kDAAA;EACQ,0CAAA;;ADiFV,gBAAgB;AAChB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;EACrB,6BAAA;EC4GE,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED7GF,qBAAA;;AAUF;ECjGE,iDAAA;EACQ,yCAAA;;AD0GV,cAAe;ECsFX,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADxFJ,cAAe;ECqFX,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADvFJ,cAAe;ECoFX,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADtFJ,WAAY;ECmFR,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADrFJ,cAAe;ECkFX,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;ADpFJ,aAAc;ECiFV,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;;AD5EJ;ECyEI,kBAAkB,sDAAlB;EACA,kBAAkB,oDAAlB;EACA,2BAAA;EACA,sHAAA;ED1EF,qBAAA;EC1HA,yFAAA;EACQ,iFAAA","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-bg, 5%); @end-color: darken(@navbar-default-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-bg; @end-color: lighten(@navbar-inverse-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n}\n\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clearfix\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n\n// WebKit-style focus\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n\n// Center-align a block level element\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n// Sizing shortcuts\n.size(@width; @height) {\n width: @width;\n height: @height;\n}\n.square(@size) {\n .size(@size; @size);\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &::-moz-placeholder { color: @color; // Firefox\n opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Text overflow\n// Requires inline-block or block for proper styling\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note\n// that we cannot chain the mixins together in Less, so they are repeated.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support the\n// standard `box-shadow` property.\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Transitions\n.transition(@transition) {\n -webkit-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n// Transformations\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n transform: rotate(@degrees);\n}\n.scale(@ratio; @ratio-y...) {\n -webkit-transform: scale(@ratio, @ratio-y);\n -ms-transform: scale(@ratio, @ratio-y); // IE9 only\n transform: scale(@ratio, @ratio-y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n transform: translate(@x, @y);\n}\n.skew(@x; @y) {\n -webkit-transform: skew(@x, @y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n transform: skew(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// User select\n// For selecting text on the page\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n\n// Resize anything\n.resizable(@direction) {\n resize: @direction; // Options: horizontal, vertical, both\n overflow: auto; // Safari fix\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Opacity\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n\n\n\n// GRADIENTS\n// --------------------------------------------------\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n\n// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n\n\n\n// Retina images\n//\n// Short retina mixin for setting background-image and -size\n\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// COMPONENT MIXINS\n// --------------------------------------------------\n\n// Horizontal dividers\n// -------------------------\n// Dividers (basically an hr) within dropdowns and nav lists\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n\n// Panels\n// -------------------------\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse .panel-body {\n border-top-color: @border;\n }\n }\n & > .panel-footer {\n + .panel-collapse .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n\n// Alerts\n// -------------------------\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n\n// Tables\n// -------------------------\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n\n// List Groups\n// -------------------------\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading { color: inherit; }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n\n// Button variants\n// -------------------------\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 8%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n// -------------------------\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n\n// Pagination\n// -------------------------\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n\n// Labels\n// -------------------------\n.label-variant(@color) {\n background-color: @color;\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n\n// Contextual backgrounds\n// -------------------------\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@color, 10%);\n }\n}\n\n// Typography\n// -------------------------\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n\n// Navbar vertical align\n// -------------------------\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n\n// Progress bars\n// -------------------------\n.progress-bar-variant(@color) {\n background-color: @color;\n .progress-striped & {\n #gradient > .striped();\n }\n}\n\n// Responsive utilities\n// -------------------------\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n\n\n// Grid System\n// -----------\n\n// Centered container element\n.container-fixed() {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n @media (min-width: @screen-xs-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-push(@columns) {\n @media (min-width: @screen-xs-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-pull(@columns) {\n @media (min-width: @screen-xs-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n\n// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-focus-border` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. ``\n// element gets special love because it's special, and that's a fact!\n\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n"]}
--------------------------------------------------------------------------------
/examples/css/bootstrap-theme.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.1.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 |
7 | .btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-color:#357ebd}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);border-color:#3278b3}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
--------------------------------------------------------------------------------
/examples/css/demo.css:
--------------------------------------------------------------------------------
1 | div.navbar {
2 | margin-bottom: 0px;
3 | }
4 |
5 | div.colored_header {
6 | color: #FFFFFF;
7 | background: #0baed4; /* Old browsers */
8 | /* IE9 SVG, needs conditional override of 'filter' to 'none' */
9 | background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+CiAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjMGJhZWQ0IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzBkODVhMyIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);
10 | background: -moz-linear-gradient(-45deg, #0baed4 0%, #0d85a3 100%); /* FF3.6+ */
11 | background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#0baed4), color-stop(100%,#0d85a3)); /* Chrome,Safari4+ */
12 | background: -webkit-linear-gradient(-45deg, #0baed4 0%,#0d85a3 100%); /* Chrome10+,Safari5.1+ */
13 | background: -o-linear-gradient(-45deg, #0baed4 0%,#0d85a3 100%); /* Opera 11.10+ */
14 | background: -ms-linear-gradient(-45deg, #0baed4 0%,#0d85a3 100%); /* IE10+ */
15 | background: linear-gradient(135deg, #0baed4 0%,#0d85a3 100%); /* W3C */
16 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0baed4', endColorstr='#0d85a3',GradientType=1 ); /* IE6-8 fallback on horizontal gradient */
17 | }
18 |
19 | div.indented_text {
20 | margin-left: 30px;
21 | }
22 |
23 | .section_title {
24 | margin-top: 40px;
25 | margin-bottom: 10px;
26 | border-bottom: 1px solid #999;
27 | padding-bottom: 5px;
28 | border-left: 5px solid #7ba4c7;
29 | padding-left: 10px;
30 | }
31 |
32 | #header_image {
33 | background: transparent url(../images/header.png) no-repeat top left;
34 | height: 176px;
35 | }
36 |
37 | div.jumbotron {
38 | border: 1px solid #DDD;
39 | }
40 |
41 | span.pre_comment {
42 | color: #9999AA;
43 | font-weight: bold;
44 | }
45 |
46 | span.pre_class {
47 | color: #7c2984;
48 | }
49 |
50 | span.pre_tag {
51 | color: #017b95;
52 | }
53 |
54 | span.pre_before {
55 | color: #e19215;
56 | }
57 |
58 | span.pre_attribute {
59 | color: #28ab1a;
60 | }
61 |
62 | @media screen and (max-width: 1200px){
63 | #header_image {
64 | background: transparent url(../images/header-940.png) no-repeat top left;
65 | }
66 | }
67 |
68 | @media screen and (max-width: 1000px){
69 | #header_image {
70 | background: transparent url(../images/header-compressed.png) no-repeat top left;
71 | }
72 | }
73 |
74 | div.footer {
75 | margin-top: 40px;
76 | padding-top: 15px;
77 | padding-bottom: 25px;
78 | color: #FFFFFF;
79 | text-align: center;
80 | background: #45484d; /* Old browsers */
81 | /* IE9 SVG, needs conditional override of 'filter' to 'none' */
82 | background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+CiAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjNDU0ODRkIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);
83 | background: -moz-linear-gradient(-45deg, #45484d 0%, #000000 100%); /* FF3.6+ */
84 | background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#45484d), color-stop(100%,#000000)); /* Chrome,Safari4+ */
85 | background: -webkit-linear-gradient(-45deg, #45484d 0%,#000000 100%); /* Chrome10+,Safari5.1+ */
86 | background: -o-linear-gradient(-45deg, #45484d 0%,#000000 100%); /* Opera 11.10+ */
87 | background: -ms-linear-gradient(-45deg, #45484d 0%,#000000 100%); /* IE10+ */
88 | background: linear-gradient(135deg, #45484d 0%,#000000 100%); /* W3C */
89 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#45484d', endColorstr='#000000',GradientType=1 ); /* IE6-8 fallback on horizontal gradient */
90 | }
91 |
92 | /******** CUSTOM SCROLL TABS ***********/
93 |
94 | #custom_style_container1 {
95 | position: relative;
96 | left: 0px;
97 | right: 0px;
98 | background: url(../images/toolbar-bg.jpg) repeat-x;
99 | height: 40px;
100 | margin-bottom: 10px;
101 | }
102 |
103 | #custom_style_container1 .style1 {
104 | position: absolute;
105 | top: 0px;
106 | left: 0px;
107 | right: 0px;
108 | background: url(../images/toolbar-bg.jpg) repeat-x;
109 | text-align: left;
110 | }
111 |
112 | /****** PLUGIN-SPECIFIED CLASS NAMES (though it's our proprietary plugin) ********/
113 | .style1 .scroll_tab_left_button::before {
114 | content: "";
115 | padding: 0px;
116 | }
117 |
118 | .style1 .scroll_tab_right_button::before {
119 | content: "";
120 | padding: 0px;
121 | }
122 |
123 | .style1 div.scroll_tab_inner {
124 | height: 40px;
125 | background: url(../images/toolbar-bg.jpg) repeat-x;
126 | }
127 |
128 | .style1 div.scroll_tab_inner span {
129 | padding-left: 20px;
130 | padding-right: 20px;
131 | line-height: 40px;
132 | font-size: 14px;
133 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat -25px -40px;
134 | color: #FFFFFF;
135 | cursor: pointer;
136 | }
137 |
138 | .style1 div.scroll_tab_inner span.scroll_tab_first {
139 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat -40px -40px;
140 | }
141 |
142 | .style1 div.scroll_tab_inner span.scroll_tab_over {
143 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat -25px 0px !important;
144 | }
145 |
146 | .style1 div.scroll_tab_inner span.scroll_tab_first.scroll_tab_over {
147 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat -40px 0px !important;
148 | }
149 |
150 | .style1 div.scroll_tab_inner span.scroll_tab_first.scroll_tab_over {
151 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat -40px 0px !important;
152 | }
153 |
154 | .style1 div.scroll_tab_inner span.scroll_tab_left_finisher {
155 | padding: 0px;
156 | width: 10px;
157 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat 0px -160px;
158 | }
159 |
160 | .style1 div.scroll_tab_inner span.scroll_tab_left_finisher.scroll_tab_over {
161 | background-position: 0px -120px !important;
162 | }
163 | .style1 div.scroll_tab_inner span.scroll_tab_left_finisher.tab_selected {
164 | background-position: 0px -200px;
165 | }
166 |
167 | .style1 div.scroll_tab_inner span.scroll_tab_right_finisher {
168 | padding: 0px;
169 | width: 10px;
170 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat right -160px;
171 | }
172 | .style1 div.scroll_tab_inner span.scroll_tab_right_finisher.scroll_tab_over {
173 | background-position: right -120px !important;
174 | }
175 | .style1 div.scroll_tab_inner span.scroll_tab_right_finisher.tab_selected {
176 | background-position: right -200px;
177 | }
178 |
179 |
180 | .style1 .scroll_tab_left_button {
181 | height: 40px;
182 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat 0px -40px;
183 | }
184 |
185 | .style1 .scroll_tab_left_button.scroll_arrow_over {
186 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat 0px 0px;
187 | }
188 |
189 | .style1 .scroll_tab_left_button.scroll_arrow_over {
190 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat 0px 0px;
191 | }
192 |
193 | .style1 .scroll_tab_left_button.scroll_arrow_disabled {
194 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat 0px -80px;
195 | }
196 |
197 | .style1 .scroll_tab_right_button {
198 | height: 40px;
199 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat -474px -40px;
200 | }
201 |
202 | .style1 .scroll_tab_right_button.scroll_arrow_over {
203 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat -474px 0px;
204 | }
205 |
206 | .style1 .scroll_tab_right_button.scroll_arrow_disabled{
207 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat -474px -80px;
208 | }
209 |
210 | .style1 div.scroll_tab_inner span.tab_selected {
211 | background: transparent url(../images/scroll_tab_bg.jpg) no-repeat -25px -80px;
212 | }
213 |
214 | .style1 div.scroll_tab_inner span.tab_selected.scroll_tab_first {
215 | background-position: -40px -200px;
216 | }
217 |
--------------------------------------------------------------------------------
/examples/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshreed/jQuery-ScrollTabs/c28521b1d80239fbd0babc6ab81164eaeaf3261a/examples/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/examples/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshreed/jQuery-ScrollTabs/c28521b1d80239fbd0babc6ab81164eaeaf3261a/examples/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/examples/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshreed/jQuery-ScrollTabs/c28521b1d80239fbd0babc6ab81164eaeaf3261a/examples/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/examples/images/header-940.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshreed/jQuery-ScrollTabs/c28521b1d80239fbd0babc6ab81164eaeaf3261a/examples/images/header-940.png
--------------------------------------------------------------------------------
/examples/images/header-compressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshreed/jQuery-ScrollTabs/c28521b1d80239fbd0babc6ab81164eaeaf3261a/examples/images/header-compressed.png
--------------------------------------------------------------------------------
/examples/images/header.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshreed/jQuery-ScrollTabs/c28521b1d80239fbd0babc6ab81164eaeaf3261a/examples/images/header.jpg
--------------------------------------------------------------------------------
/examples/images/header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshreed/jQuery-ScrollTabs/c28521b1d80239fbd0babc6ab81164eaeaf3261a/examples/images/header.png
--------------------------------------------------------------------------------
/examples/images/scroll_tab_bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshreed/jQuery-ScrollTabs/c28521b1d80239fbd0babc6ab81164eaeaf3261a/examples/images/scroll_tab_bg.jpg
--------------------------------------------------------------------------------
/examples/images/toolbar-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joshreed/jQuery-ScrollTabs/c28521b1d80239fbd0babc6ab81164eaeaf3261a/examples/images/toolbar-bg.jpg
--------------------------------------------------------------------------------
/examples/js/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.1.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});return this.$element.trigger(j),j.isDefaultPrevented()?void 0:(this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this)};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);!e&&f.toggle&&"show"==c&&(c=!c),e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(b){a(d).remove(),a(e).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown",h),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=" li:not(.divider):visible a",i=f.find("[role=menu]"+h+", [role=listbox]"+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j ').appendTo(document.body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());c.is("a")&&b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this,d=this.tip();this.setContent(),this.options.animation&&d.addClass("fade");var e="function"==typeof this.options.placement?this.options.placement.call(this,d[0],this.$element[0]):this.options.placement,f=/\s?auto?\s?/i,g=f.test(e);g&&(e=e.replace(f,"")||"top"),d.detach().css({top:0,left:0,display:"block"}).addClass(e),this.options.container?d.appendTo(this.options.container):d.insertAfter(this.$element);var h=this.getPosition(),i=d[0].offsetWidth,j=d[0].offsetHeight;if(g){var k=this.$element.parent(),l=e,m=document.documentElement.scrollTop||document.body.scrollTop,n="body"==this.options.container?window.innerWidth:k.outerWidth(),o="body"==this.options.container?window.innerHeight:k.outerHeight(),p="body"==this.options.container?0:k.offset().left;e="bottom"==e&&h.top+h.height+j-m>o?"top":"top"==e&&h.top-m-j<0?"bottom":"right"==e&&h.right+i>n?"left":"left"==e&&h.left-i
'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery);
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | jQuery ScrollTabs :: Josh Reed
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
28 |
29 |
36 |
37 |
38 |
39 |
40 |
41 |
Download Now!
42 |
Download now to get started. The package includes all the JavaScript and CSS you'll need to add ScrollTabs to your user interface.
43 |
44 | Download (.zip)
45 | Download (.tar.gz)
46 |
47 |
48 |
49 |
50 |
51 |
52 |
Examples
53 |
54 |
55 |
56 | Automatically adjusts to detect whether scrolling is needed, ideal for responsive interfaces. One of the greatest features for jQuery ScrollTabs is that you can have different right-and-left side styling depending on if scrolling is required.
57 | Here you can see that there are rounded corners for the right and left sides when it is not wide enough to scroll, however when scrolling there are right and left arrows accordingly.
58 |
59 |
60 |
61 | This is my tab
62 | Another Tab
63 | Third Tab
64 |
65 |
66 |
67 | This is my tab
68 | Another Tab 1
69 | Another Tab 2
70 | Another Tab 3
71 | Another Tab 4
72 | Another Tab 5
73 | Another Tab 6
74 | Another Tab 7
75 | Another Tab 8
76 | Another Tab 9
77 | Another Tab 10
78 | Another Tab 11
79 | Another Tab 12
80 |
81 |
82 |
83 |
Dynamic
84 |
85 |
86 |
ScrollTabs automatically adjusts when you add more items. There's a simple Javascript API for adding and removing items.
87 |
88 |
89 | First Item
90 |
91 |
92 |
Add Item
93 |
94 |
95 |
96 |
HTML:
97 |
98 | <div id="tabSet" class="scroll_tabs_theme_light">
99 | <span>First Item</span>
100 | </div>
101 |
102 |
JavaScript:
103 |
104 | tabSet = $('#tabSet').scrollTabs();
105 | tabSet.addTab('<span>Added Item</span>');
106 |
107 |
108 |
109 |
List Sytax (Version 2.0+)
110 |
111 |
112 |
ScrollTabs will also handle standard list syntax for greater compatibility with existing lists or other plugins.
113 |
114 |
118 |
119 |
Add Item
120 |
121 |
122 |
123 |
HTML:
124 |
125 | <ul id="tabSet" class="scroll_tabs_theme_light">
126 | <li>First Item</li>
127 | <li>Second Item</li>
128 | </ul>
129 |
130 |
JavaScript:
131 |
132 | tabSet = $('#tabSet').scrollTabs();
133 | tabSet.addTab('<li>Added Item</li>');
134 |
135 |
136 |
137 |
Custom Styling
138 |
139 |
140 |
Basic initialization, without any theme or custom CSS applied. Previous examples used the "light" theme: scroll_tabs_theme_light
.
141 |
142 |
143 | First Tab
144 | Another Tab 2
145 | Another Tab 3
146 | Another Tab 4
147 | Another Tab 5
148 | Another Tab 6
149 | Another Tab 7
150 | Another Tab 8
151 | Another Tab 9
152 | Another Tab 10
153 | Another Tab 11
154 | Another Tab 12
155 | Another Tab 13
156 |
157 |
158 |
Remove First Item
159 |
160 |
161 |
162 |
This is an example with the "dark" theme applied. To apply this theme, simply append the class scroll_tabs_theme_dark
to the container
163 | div element.
164 |
165 |
166 | First Tab
167 | Another Tab 2
168 | Another Tab 3
169 | Another Tab 4
170 | Another Tab 5
171 | Another Tab 6
172 | Another Tab 7
173 | Another Tab 8
174 | Another Tab 9
175 | Another Tab 10
176 | Another Tab 11
177 | Another Tab 12
178 | Another Tab 13
179 |
180 |
181 |
Remove First Item
182 |
183 |
184 |
185 |
HTML:
186 |
187 | <div id="tabSet" class="scroll_tabs_theme_dark">
188 | <span>First Tab</span>
189 | <!-- ... A Bunch of other Tabs ... -->
190 | </div>
191 |
192 |
Custom Background Images
193 |
194 |
Beyond using simple CSS to style your tabbed interface, you could also make use of background images. This can allow you to
195 | provide more unique styling without sacrificing browser compatibility (in some cases). Below is an example of a custom style for
196 | a dark-gray themed toolbar. Use the button to remove some tabs in order to see how it appears without the scrolling arrows.
197 |
198 |
199 |
200 | First Tab
201 | Another Tab 2
202 | Another Tab 3
203 | Another Tab 4
204 | Another Tab 5
205 | Another Tab 6
206 | Another Tab 7
207 | Another Tab 8
208 | Another Tab 9
209 | Another Tab 10
210 | Another Tab 11
211 | Another Tab 12
212 | Another Tab 13
213 |
214 |
215 |
216 |
Remove First Item
217 |
218 |
219 |
220 |
Here is the Custom CSS that provides for the above example:
221 |
222 |
223 |
224 |
225 |
226 | .style1 .scroll_tab_left_button ::before {
227 | content : "";
228 | padding : 0px;
229 | }
230 |
231 | .style1 .scroll_tab_right_button ::before {
232 | content : "";
233 | padding : 0px;
234 | }
235 |
236 |
237 | .style1 div .scroll_tab_inner {
238 | height : 40px;
239 | background : url(../images/toolbar-bg.jpg) repeat-x;
240 | }
241 |
242 |
243 | .style1 div .scroll_tab_inner span {
244 | padding-left : 20px;
245 | padding-right : 20px;
246 | line-height : 40px;
247 | font-size : 14px;
248 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat -25px -40px;
249 | color : #FFFFFF;
250 | cursor : pointer;
251 | }
252 |
253 |
254 | .style1 div .scroll_tab_inner span .scroll_tab_first {
255 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat -40px -40px;
256 | }
257 |
258 |
259 | .style1 div .scroll_tab_inner span .scroll_tab_over {
260 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat -25px 0px !important;
261 | }
262 |
263 |
264 | .style1 div .scroll_tab_inner span .scroll_tab_first .scroll_tab_over {
265 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat -40px 0px !important;
266 | }
267 |
268 |
269 | .style1 div .scroll_tab_inner span .scroll_tab_left_finisher {
270 | padding : 0px;
271 | width : 10px;
272 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat 0px -160px;
273 | }
274 |
275 |
276 | .style1 div .scroll_tab_inner span .scroll_tab_left_finisher .scroll_tab_over {
277 | background-position : 0px -120px !important;
278 | }
279 |
280 |
281 | .style1 div .scroll_tab_inner span .scroll_tab_left_finisher .tab_selected {
282 | background-position : 0px -200px;
283 | }
284 |
285 |
286 | .style1 div .scroll_tab_inner span .scroll_tab_right_finisher {
287 | padding : 0px;
288 | width : 10px;
289 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat right -160px;
290 | }
291 |
292 |
293 | .style1 div .scroll_tab_inner span .scroll_tab_right_finisher .scroll_tab_over {
294 | background-position : right -120px !important;
295 | }
296 |
297 |
298 | .style1 div .scroll_tab_inner span .scroll_tab_right_finisher .tab_selected {
299 | background-position : right -200px;
300 | }
301 |
302 |
303 | .style1 .scroll_tab_left_button {
304 | height : 40px;
305 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat 0px -40px;
306 | }
307 |
308 |
309 | .style1 .scroll_tab_left_button .scroll_arrow_over {
310 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat 0px 0px;
311 | }
312 |
313 |
314 | .style1 .scroll_tab_left_button .scroll_arrow_disabled {
315 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat 0px -80px;
316 | }
317 |
318 |
319 | .style1 .scroll_tab_right_button {
320 | height : 40px;
321 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat -474px -40px;
322 | }
323 |
324 |
325 | .style1 .scroll_tab_right_button .scroll_arrow_over {
326 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat -474px 0px;
327 | }
328 |
329 |
330 | .style1 .scroll_tab_right_button .scroll_arrow_disabled {
331 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat -474px -80px;
332 | }
333 |
334 |
335 | .style1 div .scroll_tab_inner span .tab_selected {
336 | background : transparent url(../images/scroll_tab_bg.jpg) no-repeat -25px -80px;
337 | }
338 |
339 |
340 | .style1 div .scroll_tab_inner span .tab_selected .scroll_tab_first {
341 | background-position : -40px -200px;
342 | }
343 |
344 |
345 |
346 |
347 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
378 |
379 |
380 |
--------------------------------------------------------------------------------
/js/jquery.mousewheel.js:
--------------------------------------------------------------------------------
1 | /*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
2 | * Licensed under the MIT License (LICENSE.txt).
3 | *
4 | * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
5 | * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
6 | * Thanks to: Seamus Leahy for adding deltaX and deltaY
7 | *
8 | * Version: 3.0.6
9 | *
10 | * Requires: 1.2.2+
11 | */
12 |
13 | (function($) {
14 |
15 | var types = ['DOMMouseScroll', 'mousewheel'];
16 |
17 | if ($.event.fixHooks) {
18 | for ( var i=types.length; i; ) {
19 | $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;
20 | }
21 | }
22 |
23 | $.event.special.mousewheel = {
24 | setup: function() {
25 | if ( this.addEventListener ) {
26 | for ( var i=types.length; i; ) {
27 | this.addEventListener( types[--i], handler, false );
28 | }
29 | } else {
30 | this.onmousewheel = handler;
31 | }
32 | },
33 |
34 | teardown: function() {
35 | if ( this.removeEventListener ) {
36 | for ( var i=types.length; i; ) {
37 | this.removeEventListener( types[--i], handler, false );
38 | }
39 | } else {
40 | this.onmousewheel = null;
41 | }
42 | }
43 | };
44 |
45 | $.fn.extend({
46 | mousewheel: function(fn) {
47 | return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
48 | },
49 |
50 | unmousewheel: function(fn) {
51 | return this.unbind("mousewheel", fn);
52 | }
53 | });
54 |
55 |
56 | function handler(event) {
57 | var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
58 | event = $.event.fix(orgEvent);
59 | event.type = "mousewheel";
60 |
61 | // Old school scrollwheel delta
62 | if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }
63 | if ( orgEvent.detail ) { delta = -orgEvent.detail/3; }
64 |
65 | // New school multidimensional scroll (touchpads) deltas
66 | deltaY = delta;
67 |
68 | // Gecko
69 | if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
70 | deltaY = 0;
71 | deltaX = -1*delta;
72 | }
73 |
74 | // Webkit
75 | if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
76 | if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
77 |
78 | // Add event and delta to the front of the arguments
79 | args.unshift(event, delta, deltaX, deltaY);
80 |
81 | return ($.event.dispatch || $.event.handle).apply(this, args);
82 | }
83 |
84 | })(jQuery);
85 |
--------------------------------------------------------------------------------
/js/jquery.scrolltabs.js:
--------------------------------------------------------------------------------
1 | /**
2 | * SCROLL TABS
3 | *
4 | * JQuery Plugin to manage scrollable tabs. See the 'defaultOptions' data structure for available options for configuration. The plugin is configured jointly via
5 | * these Javascript options and CSS classes to style how it is displayed. Some of the CSS is set here in the javascript so that users will have minimal
6 | * configuration to make the tabs themselves work, and should only have to do configuration on how they want it styled.
7 | *
8 | * Known Limitations:
9 | * IE6 problems, it does not properly apply scrolling and therefore is always the 'full width.' Additionally, the multiple-class CSS styling does not work
10 | * properly in IE6. We can work around this in the future by apply distinct class stylings that represent all the combinations.
11 | *
12 | * Version: 2.0
13 | * Author: Josh Reed
14 | */
15 | (function($) {
16 | $.fn.scrollTabs = function(opts){
17 | var initialize = function(state){
18 | opts = $.extend({}, $.fn.scrollTabs.defaultOptions, opts);
19 |
20 | if($(this).prop('tagName').toLowerCase() === 'ul'){
21 | this.itemTag = 'li';
22 | } else {
23 | this.itemTag = 'span';
24 | }
25 |
26 | $(this).addClass('scroll_tabs_container');
27 | if($(this).css('position') === null || $(this).css('position') === 'static'){
28 | $(this).css('position','relative');
29 | }
30 |
31 | $(this.itemTag, this).last().addClass('scroll_tab_last');
32 | $(this.itemTag, this).first().addClass('scroll_tab_first');
33 |
34 | $(this).html("
"+$(this).html()+"
");
35 |
36 | $(".scroll_tab_left_button", this).append($(opts.left_arrow_content_html));
37 | $(".scroll_tab_right_button", this).append($(opts.right_arrow_content_html));
38 |
39 | $('.scroll_tab_inner > span.scroll_tab_left_finisher', this).css({
40 | 'display': 'none'
41 | });
42 |
43 | $('.scroll_tab_inner > span.scroll_tab_right_finisher', this).css({
44 | 'display': 'none'
45 | });
46 |
47 |
48 | var _this = this;
49 |
50 | $('.scroll_tab_inner', this).css({
51 | 'margin': '0px',
52 | 'overflow': 'hidden',
53 | 'white-space': 'nowrap',
54 | '-ms-text-overflow': 'clip',
55 | 'text-overflow': 'clip',
56 | 'font-size': '0px',
57 | 'position': 'absolute',
58 | 'top': '0px',
59 | 'left': opts.left_arrow_size + 'px',
60 | 'right': opts.right_arrow_size + 'px'
61 | });
62 |
63 | // If mousewheel function not present, don't utilize it
64 | if($.isFunction($.fn.mousewheel)){
65 | $('.scroll_tab_inner', this).mousewheel(function(event, delta){
66 | // Only do mousewheel scrolling if scrolling is necessary
67 | if($('.scroll_tab_right_button', _this).css('display') !== 'none'){
68 | this.scrollLeft -= (delta * 30);
69 | state.scrollPos = this.scrollLeft;
70 | event.preventDefault();
71 | }
72 | });
73 | }
74 |
75 | // Set initial scroll position
76 | $('.scroll_tab_inner', _this).animate({scrollLeft: state.scrollPos + 'px'}, 0);
77 |
78 | $('.scroll_tab_left_button', this).css({
79 | 'position': 'absolute',
80 | 'left': '0px',
81 | 'top': '0px',
82 | 'width': opts.left_arrow_size + 'px',
83 | 'cursor': 'pointer'
84 | });
85 |
86 | $('.scroll_tab_right_button', this).css({
87 | 'position': 'absolute',
88 | 'right': '0px',
89 | 'top': '0px',
90 | 'width': opts.right_arrow_size + 'px',
91 | 'cursor': 'pointer'
92 | });
93 |
94 | $('.scroll_tab_inner > '+_this.itemTag, _this).css({
95 | 'display': '-moz-inline-stack',
96 | 'display': 'inline-block',
97 | 'zoom':1,
98 | '*display': 'inline',
99 | '_height': '40px',
100 | '-webkit-user-select': 'none',
101 | '-khtml-user-select': 'none',
102 | '-moz-user-select': 'none',
103 | '-ms-user-select': 'none',
104 | '-o-user-select': 'none',
105 | 'user-select': 'none'
106 | });
107 |
108 |
109 | var size_checking = function(){
110 | var panel_width = $('.scroll_tab_inner', _this).outerWidth();
111 |
112 | if($('.scroll_tab_inner', _this)[0].scrollWidth > panel_width){
113 | $('.scroll_tab_right_button',_this).show();
114 | $('.scroll_tab_left_button',_this).show();
115 | $('.scroll_tab_inner',_this).css({left: opts.left_arrow_size + 'px', right: opts.right_arrow_size + 'px'});
116 | $('.scroll_tab_left_finisher',_this).css('display','none');
117 | $('.scroll_tab_right_finisher',_this).css('display','none');
118 |
119 | if($('.scroll_tab_inner', _this)[0].scrollWidth - panel_width == $('.scroll_tab_inner', _this).scrollLeft()){
120 | $('.scroll_tab_right_button', _this).addClass('scroll_arrow_disabled').addClass('scroll_tab_right_button_disabled');
121 | } else {
122 | $('.scroll_tab_right_button', _this).removeClass('scroll_arrow_disabled').removeClass('scroll_tab_right_button_disabled');
123 | }
124 | if ($('.scroll_tab_inner', _this).scrollLeft() == 0) {
125 | $('.scroll_tab_left_button', _this).addClass('scroll_arrow_disabled').addClass('scroll_tab_left_button_disabled');
126 | } else {
127 | $('.scroll_tab_left_button', _this).removeClass('scroll_arrow_disabled').removeClass('scroll_tab_left_button_disabled');
128 | }
129 | } else {
130 | $('.scroll_tab_right_button',_this).hide();
131 | $('.scroll_tab_left_button',_this).hide();
132 | $('.scroll_tab_inner',_this).css({left: '0px', right: '0px'});
133 |
134 | if($('.scroll_tab_inner > '+_this.itemTag+':not(.scroll_tab_right_finisher):not(.scroll_tab_left_finisher):visible', _this).length > 0){
135 | $('.scroll_tab_left_finisher',_this).css('display','inline-block');
136 | $('.scroll_tab_right_finisher',_this).css('display','inline-block');
137 | }
138 | }
139 | };
140 |
141 | size_checking();
142 |
143 | state.delay_timer = setInterval(function(){
144 | size_checking();
145 | }, 500);
146 |
147 | var press_and_hold_timeout;
148 |
149 | $('.scroll_tab_right_button', this).mousedown(function(e){
150 | e.stopPropagation();
151 | var scrollRightFunc = function(){
152 | var left = $('.scroll_tab_inner', _this).scrollLeft();
153 | state.scrollPos = Math.min(left + opts.scroll_distance,$('.scroll_tab_inner', _this)[0].scrollWidth - $('.scroll_tab_inner', _this).outerWidth());
154 | $('.scroll_tab_inner', _this).animate({scrollLeft: (left + opts.scroll_distance) + 'px'}, opts.scroll_duration);
155 | };
156 | scrollRightFunc();
157 |
158 | press_and_hold_timeout = setInterval(function(){
159 | scrollRightFunc();
160 | }, opts.scroll_duration);
161 | }).bind("mouseup mouseleave", function(){
162 | clearInterval(press_and_hold_timeout);
163 | }).mouseover(function(){
164 | $(this).addClass('scroll_arrow_over').addClass('scroll_tab_right_button_over');
165 | }).mouseout(function(){
166 | $(this).removeClass('scroll_arrow_over').removeClass('scroll_tab_right_button_over');
167 | });
168 |
169 | $('.scroll_tab_left_button', this).mousedown(function(e){
170 | e.stopPropagation();
171 | var scrollLeftFunc = function(){
172 | var left = $('.scroll_tab_inner', _this).scrollLeft();
173 | state.scrollPos = Math.max(left - opts.scroll_distance,0);
174 | $('.scroll_tab_inner', _this).animate({scrollLeft: (left - opts.scroll_distance) + 'px'}, opts.scroll_duration);
175 | };
176 | scrollLeftFunc();
177 |
178 | press_and_hold_timeout = setInterval(function(){
179 | scrollLeftFunc();
180 | }, opts.scroll_duration);
181 | }).bind("mouseup mouseleave", function(){
182 | clearInterval(press_and_hold_timeout);
183 | }).mouseover(function(){
184 | $(this).addClass('scroll_arrow_over').addClass('scroll_tab_left_button_over');
185 | }).mouseout(function(){
186 | $(this).removeClass('scroll_arrow_over').removeClass('scroll_tab_left_button_over');
187 | });
188 |
189 | $('.scroll_tab_inner > '+this.itemTag+(this.itemTag !== 'span' ? ', .scroll_tab_inner > span' : ''), this).mouseover(function(){
190 | $(this).addClass('scroll_tab_over');
191 | if($(this).hasClass('scroll_tab_left_finisher')){
192 | $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_first', _this).addClass('scroll_tab_over').addClass('scroll_tab_first_over');
193 | }
194 | if($(this).hasClass('scroll_tab_right_finisher')){
195 | $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_last', _this).addClass('scroll_tab_over').addClass('scroll_tab_last_over');
196 | }
197 | if($(this).hasClass('scroll_tab_first') || $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_last', _this).hasClass('scroll_tab_first')){
198 | $('.scroll_tab_inner > span.scroll_tab_left_finisher', _this).addClass('scroll_tab_over').addClass('scroll_tab_left_finisher_over');
199 | }
200 | if($(this).hasClass('scroll_tab_last') || $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_first', _this).hasClass('scroll_tab_last')){
201 | $('.scroll_tab_inner > span.scroll_tab_right_finisher', _this).addClass('scroll_tab_over').addClass('scroll_tab_right_finisher_over');
202 | }
203 | }).mouseout(function(){
204 | $(this).removeClass('scroll_tab_over');
205 | if($(this).hasClass('scroll_tab_left_finisher')){
206 | $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_first', _this).removeClass('scroll_tab_over').removeClass('scroll_tab_first_over');
207 | }
208 | if($(this).hasClass('scroll_tab_right_finisher')){
209 | $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_last', _this).removeClass('scroll_tab_over').removeClass('scroll_tab_last_over');
210 | }
211 | if($(this).hasClass('scroll_tab_first') || $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_last', _this).hasClass('scroll_tab_first')){
212 | $('.scroll_tab_inner > span.scroll_tab_left_finisher', _this).removeClass('scroll_tab_over').removeClass('scroll_tab_left_finisher_over');
213 | }
214 | if($(this).hasClass('scroll_tab_last') || $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_first', _this).hasClass('scroll_tab_last')){
215 | $('.scroll_tab_inner > span.scroll_tab_right_finisher', _this).removeClass('scroll_tab_over').removeClass('scroll_tab_right_finisher_over');
216 | }
217 | }).click(function(e){
218 | e.stopPropagation();
219 | $('.tab_selected',_this).removeClass('tab_selected scroll_tab_first_selected scroll_tab_last_selected scroll_tab_left_finisher_selected scroll_tab_right_finisher_selected');
220 | $(this).addClass('tab_selected');
221 |
222 | var context_obj = this;
223 | if($(this).hasClass('scroll_tab_left_finisher')){
224 | context_obj = $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_first', _this).addClass('tab_selected').addClass('scroll_tab_first_selected');
225 | }
226 | if($(this).hasClass('scroll_tab_right_finisher')){
227 | context_obj = $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_last', _this).addClass('tab_selected').addClass('scroll_tab_last_selected');
228 | }
229 | if($(this).hasClass('scroll_tab_first') || $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_last', _this).hasClass('scroll_tab_first')){
230 | $('.scroll_tab_inner > span.scroll_tab_left_finisher', _this).addClass('tab_selected').addClass('scroll_tab_left_finisher_selected');
231 | }
232 | if($(this).hasClass('scroll_tab_last') || $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_first', _this).hasClass('scroll_tab_last')){
233 | $('.scroll_tab_inner > span.scroll_tab_right_finisher', _this).addClass('tab_selected').addClass('scroll_tab_left_finisher_selected');
234 | }
235 |
236 | // "Slide" it into view if not fully visible.
237 | scroll_selected_into_view.call(_this, state);
238 |
239 | opts.click_callback.call(context_obj,e);
240 | });
241 |
242 | // Check to set the edges as selected if needed
243 | if($('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_first', _this).hasClass('tab_selected'))
244 | $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_left_finisher', _this).addClass('tab_selected').addClass('scroll_tab_left_finisher_selected');
245 | if($('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_last', _this).hasClass('tab_selected'))
246 | $('.scroll_tab_inner > '+_this.itemTag+'.scroll_tab_right_finisher', _this).addClass('tab_selected').addClass('scroll_tab_right_finisher_selected');
247 | };
248 |
249 | var scroll_selected_into_view = function(state){
250 | var _this = this;
251 |
252 | var selected_item = $('.tab_selected:not(.scroll_tab_right_finisher, .scroll_tab_left_finisher)', _this);
253 |
254 | var left = $('.scroll_tab_inner', _this).scrollLeft();
255 | var scroll_width = $('.scroll_tab_inner', _this).width();
256 | if(selected_item && typeof(selected_item) !== 'undefined' && selected_item.position() && typeof(selected_item.position()) !== 'undefined'){
257 | if(selected_item.position().left < 0){
258 | state.scrollPos = Math.max(left + selected_item.position().left + 1,0);
259 | $('.scroll_tab_inner', _this).animate({scrollLeft: (left + selected_item.position().left + 1) + 'px'}, opts.scroll_duration);
260 | } else if ((selected_item.position().left + selected_item.outerWidth()) > scroll_width){
261 | state.scrollPos = Math.min(left + ((selected_item.position().left + selected_item.outerWidth()) - scroll_width),$('.scroll_tab_inner', _this)[0].scrollWidth - $('.scroll_tab_inner', _this).outerWidth());
262 | $('.scroll_tab_inner', _this).animate({scrollLeft: (left + ((selected_item.position().left + selected_item.outerWidth()) - scroll_width)) + 'px'}, opts.scroll_duration);
263 | }
264 | }
265 | };
266 |
267 | var ret = [];
268 |
269 | this.each(function(){
270 | var backup = $(this).html();
271 |
272 | var state = {};
273 | state.scrollPos = 0;
274 | initialize.call(this, state);
275 |
276 | var context_obj = this;
277 |
278 | ret.push({
279 | domObject: context_obj,
280 | state: state,
281 | addTab: function(html, position){
282 | if(typeof(position) === 'undefined'){
283 | position = $('.scroll_tab_inner > '+context_obj.itemTag, context_obj).length - (context_obj.itemTag === 'span' ? 2 : 0);
284 | }
285 |
286 | $('.scroll_tab_inner > '+context_obj.itemTag+'.scroll_tab_last', context_obj).removeClass('scroll_tab_last');
287 | $('.scroll_tab_inner > '+context_obj.itemTag+'.scroll_tab_first', context_obj).removeClass('scroll_tab_first');
288 | backup = "";
289 | var count = 0;
290 | $('.scroll_tab_inner > '+context_obj.itemTag, context_obj).each(function(){
291 | if($(this).hasClass('scroll_tab_left_finisher') || $(this).hasClass('scroll_tab_right_finisher')) return true;
292 | if(position == count){
293 | backup += html;
294 | }
295 | backup += $(this).clone().wrap('').parent().html();
296 | count++;
297 | });
298 |
299 | if(position >= count)
300 | backup += html;
301 |
302 | this.destroy();
303 | initialize.call(context_obj, state);
304 | this.refreshFirstLast();
305 | },
306 | removeTabs: function(jquery_selector_str){
307 | $('.scroll_tab_left_finisher', context_obj).remove();
308 | $('.scroll_tab_right_finisher', context_obj).remove();
309 |
310 | $(jquery_selector_str, context_obj).remove();
311 |
312 | $('.scroll_tab_inner > '+context_obj.itemTag+'.scroll_tab_last', context_obj).removeClass('scroll_tab_last');
313 | $('.scroll_tab_inner > '+context_obj.itemTag+'.scroll_tab_first', context_obj).removeClass('scroll_tab_first');
314 |
315 | this.refreshState();
316 | },
317 | destroy: function(){
318 | clearInterval(state.delay_timer);
319 | $(context_obj).html(backup);
320 | $(context_obj).removeClass('scroll_tabs_container');
321 | },
322 | refreshState: function(){
323 | $('.scroll_tab_inner > '+context_obj.itemTag+'.scroll_tab_last', context_obj).removeClass('scroll_tab_last');
324 | $('.scroll_tab_inner > '+context_obj.itemTag+'.scroll_tab_first', context_obj).removeClass('scroll_tab_first');
325 | backup = $('.scroll_tab_inner',context_obj).html();
326 | this.destroy();
327 | initialize.call(context_obj, state);
328 | this.refreshFirstLast();
329 | },
330 | clearTabs: function(){
331 | backup = "";
332 | this.destroy();
333 | initialize.call(context_obj, state);
334 | this.refreshFirstLast();
335 | },
336 | refreshFirstLast: function(){
337 | var old_last_item = $('.scroll_tab_inner > '+context_obj.itemTag+'.scroll_tab_last', context_obj);
338 | var old_first_item = $('.scroll_tab_inner > '+context_obj.itemTag+'.scroll_tab_first', context_obj);
339 |
340 | old_last_item.removeClass('scroll_tab_last');
341 | old_first_item.removeClass('scroll_tab_first');
342 |
343 | if(old_last_item.hasClass('tab_selected'))
344 | $('.scroll_tab_inner > span.scroll_tab_right_finisher', context_obj).removeClass('tab_selected scroll_tab_right_finisher_selected');
345 | if(old_first_item.hasClass('tab_selected'))
346 | $('.scroll_tab_inner > span.scroll_tab_left_finisher', context_obj).removeClass('tab_selected scroll_tab_left_finisher_selected');
347 |
348 | if($('.scroll_tab_inner > '+context_obj.itemTag+':not(.scroll_tab_right_finisher):not(.scroll_tab_left_finisher):visible', context_obj).length > 0){
349 | var new_last_item = $('.scroll_tab_inner > '+context_obj.itemTag+':not(.scroll_tab_right_finisher):visible', context_obj).last();
350 | var new_first_item = $('.scroll_tab_inner > '+context_obj.itemTag+':not(.scroll_tab_left_finisher):visible', context_obj).first();
351 |
352 | new_last_item.addClass('scroll_tab_last');
353 | new_first_item.addClass('scroll_tab_first');
354 |
355 | if(new_last_item.hasClass('tab_selected'))
356 | $('.scroll_tab_inner > span.scroll_tab_right_finisher', context_obj).addClass('tab_selected').addClass('scroll_tab_right_finisher_selected');
357 | if(new_first_item.hasClass('tab_selected'))
358 | $('.scroll_tab_inner > span.scroll_tab_left_finisher', context_obj).addClass('tab_selected').addClass('scroll_tab_right_finisher_selected');
359 | } else {
360 | $('.scroll_tab_inner > span.scroll_tab_right_finisher', context_obj).hide();
361 | $('.scroll_tab_inner > span.scroll_tab_left_finisher', context_obj).hide();
362 | }
363 | },
364 | hideTabs: function(domObj){
365 | $(domObj, context_obj).css('display','none');
366 | this.refreshFirstLast();
367 | },
368 | showTabs: function(domObj){
369 | $(domObj, context_obj).css({
370 | 'display': '-moz-inline-stack',
371 | 'display': 'inline-block',
372 | '*display': 'inline'
373 | });
374 | this.refreshFirstLast();
375 | },
376 | scrollSelectedIntoView:function(){
377 | scroll_selected_into_view.call(context_obj, state);
378 | }
379 | });
380 | });
381 |
382 | if(this.length == 1){
383 | return ret[0];
384 | } else {
385 | return ret;
386 | }
387 | };
388 |
389 | $.fn.scrollTabs.defaultOptions = {
390 | scroll_distance: 300,
391 | scroll_duration: 300,
392 | left_arrow_size: 26,
393 | right_arrow_size: 26,
394 | left_arrow_content_html: '',
395 | right_arrow_content_html: '',
396 | click_callback: function(e){
397 | var val = $(this).attr('rel');
398 | if(val){
399 | window.location.href = val;
400 | }
401 | }
402 | };
403 | })(jQuery);
404 |
--------------------------------------------------------------------------------
/scrolltabs.jquery.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "scrolltabs",
3 | "title": "jQuery ScrollTabs",
4 | "description": "jQuery highly configurable plugin to handle scrolling tabs horizontally when not enough space is available.",
5 | "keywords": [
6 | "scroll",
7 | "tabs",
8 | "tabbed",
9 | "horizontal"
10 | ],
11 | "version": "2.0.0",
12 | "author": {
13 | "name": "Josh Reed"
14 | },
15 | "maintainers": [
16 | {
17 | "name": "Josh Reed"
18 | }
19 | ],
20 | "licenses": [
21 | {
22 | "type": "MIT",
23 | "url": "https://github.com/joshreed/jQuery-ScrollTabs/blob/2.0.0/LICENSE"
24 | }
25 | ],
26 | "homepage": "http://joshreed.github.io/jQuery-ScrollTabs/",
27 | "docs": "http://joshreed.github.io/jQuery-ScrollTabs/documentation.html",
28 | "download": "http://joshreed.github.io/jQuery-ScrollTabs/index.html",
29 | "dependencies": {
30 | "jquery": ">=1.7.1"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------