splitted up stylesheet and added lots of scaffolding to it. Style needs working.
[theme-danix.xyz.git] / static / js / main.js
CommitLineData
748286b5 1/*\r
2 Forty by HTML5 UP\r
3 html5up.net | @ajlkn\r
4 Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)\r
5*/\r
6\r
7(function($) {\r
8\r
9 var $window = $(window),\r
10 $body = $('body'),\r
11 $wrapper = $('#wrapper'),\r
12 $header = $('#header'),\r
13 $banner = $('#banner');\r
14\r
15 // Breakpoints.\r
16 breakpoints({\r
17 xlarge: ['1281px', '1680px' ],\r
18 large: ['981px', '1280px' ],\r
19 medium: ['737px', '980px' ],\r
20 small: ['481px', '736px' ],\r
21 xsmall: ['361px', '480px' ],\r
22 xxsmall: [null, '360px' ]\r
23 });\r
24\r
25 /**\r
26 * Applies parallax scrolling to an element's background image.\r
27 * @return {jQuery} jQuery object.\r
28 */\r
29 $.fn._parallax = (browser.name == 'ie' || browser.name == 'edge' || browser.mobile) ? function() { return $(this) } : function(intensity) {\r
30\r
31 var $window = $(window),\r
32 $this = $(this);\r
33\r
34 if (this.length == 0 || intensity === 0)\r
35 return $this;\r
36\r
37 if (this.length > 1) {\r
38\r
39 for (var i=0; i < this.length; i++)\r
40 $(this[i])._parallax(intensity);\r
41\r
42 return $this;\r
43\r
44 }\r
45\r
46 if (!intensity)\r
47 intensity = 0.25;\r
48\r
49 $this.each(function() {\r
50\r
51 var $t = $(this),\r
52 on, off;\r
53\r
54 on = function() {\r
55\r
56 $t.css('background-position', 'center 100%, center 100%, center 0px');\r
57\r
58 $window\r
59 .on('scroll._parallax', function() {\r
60\r
61 var pos = parseInt($window.scrollTop()) - parseInt($t.position().top);\r
62\r
63 $t.css('background-position', 'center ' + (pos * (-1 * intensity)) + 'px');\r
64\r
65 });\r
66\r
67 };\r
68\r
69 off = function() {\r
70\r
71 $t\r
72 .css('background-position', '');\r
73\r
74 $window\r
75 .off('scroll._parallax');\r
76\r
77 };\r
78\r
79 breakpoints.on('<=medium', off);\r
80 breakpoints.on('>medium', on);\r
81\r
82 });\r
83\r
84 $window\r
85 .off('load._parallax resize._parallax')\r
86 .on('load._parallax resize._parallax', function() {\r
87 $window.trigger('scroll');\r
88 });\r
89\r
90 return $(this);\r
91\r
92 };\r
93\r
94 // Play initial animations on page load.\r
95 $window.on('load', function() {\r
96 window.setTimeout(function() {\r
97 $body.removeClass('is-preload');\r
98 }, 100);\r
99 });\r
100\r
101 // Clear transitioning state on unload/hide.\r
102 $window.on('unload pagehide', function() {\r
103 window.setTimeout(function() {\r
104 $('.is-transitioning').removeClass('is-transitioning');\r
105 }, 250);\r
106 });\r
107\r
108 // Fix: Enable IE-only tweaks.\r
109 if (browser.name == 'ie' || browser.name == 'edge')\r
110 $body.addClass('is-ie');\r
111\r
112 // Scrolly.\r
113 $('.scrolly').scrolly({\r
114 offset: function() {\r
115 return $header.height() - 2;\r
116 }\r
117 });\r
118\r
119 // Tiles.\r
120 var $tiles = $('.tiles > article');\r
121\r
122 $tiles.each(function() {\r
123\r
124 var $this = $(this),\r
125 $image = $this.find('.image'), $img = $image.find('img'),\r
126 $link = $this.find('.link'),\r
127 x;\r
128\r
129 // Image.\r
130\r
131 // Set image.\r
132 $this.css('background-image', 'url(' + $img.attr('src') + ')');\r
133\r
134 // Set position.\r
135 if (x = $img.data('position'))\r
136 $image.css('background-position', x);\r
137\r
138 // Hide original.\r
139 $image.hide();\r
140\r
141 // Link.\r
142 if ($link.length > 0) {\r
143\r
144 $x = $link.clone()\r
145 .text('')\r
146 .addClass('primary')\r
147 .appendTo($this);\r
148\r
149 $link = $link.add($x);\r
150\r
151 $link.on('click', function(event) {\r
152\r
153 var href = $link.attr('href');\r
154\r
155 // Prevent default.\r
156 event.stopPropagation();\r
157 event.preventDefault();\r
158\r
159 // Target blank?\r
160 if ($link.attr('target') == '_blank') {\r
161\r
162 // Open in new tab.\r
163 window.open(href);\r
164\r
165 }\r
166\r
167 // Otherwise ...\r
168 else {\r
169\r
170 // Start transitioning.\r
171 $this.addClass('is-transitioning');\r
172 $wrapper.addClass('is-transitioning');\r
173\r
174 // Redirect.\r
175 window.setTimeout(function() {\r
176 location.href = href;\r
177 }, 500);\r
178\r
179 }\r
180\r
181 });\r
182\r
183 }\r
184\r
185 });\r
186\r
187 // Header.\r
188 if ($banner.length > 0\r
189 && $header.hasClass('alt')) {\r
190\r
191 $window.on('resize', function() {\r
192 $window.trigger('scroll');\r
193 });\r
194\r
195 $window.on('load', function() {\r
196\r
197 $banner.scrollex({\r
198 bottom: $header.height() + 10,\r
199 terminate: function() { $header.removeClass('alt'); },\r
200 enter: function() { $header.addClass('alt'); },\r
201 leave: function() { $header.removeClass('alt'); $header.addClass('reveal'); }\r
202 });\r
203\r
204 window.setTimeout(function() {\r
205 $window.triggerHandler('scroll');\r
206 }, 100);\r
207\r
208 });\r
209\r
210 }\r
211\r
212 // Banner.\r
213 $banner.each(function() {\r
214\r
215 var $this = $(this),\r
216 $image = $this.find('.image'), $img = $image.find('img');\r
217\r
218 // Parallax.\r
219 $this._parallax(0.275);\r
220\r
221 // Image.\r
222 if ($image.length > 0) {\r
223\r
224 // Set image.\r
225 $this.css('background-image', 'url(' + $img.attr('src') + ')');\r
226\r
227 // Hide original.\r
228 $image.hide();\r
229\r
230 }\r
231\r
232 });\r
233\r
234 // Menu.\r
235 var $menu = $('#menu'),\r
236 $menuInner;\r
237\r
238 $menu.wrapInner('<div class="inner"></div>');\r
239 $menuInner = $menu.children('.inner');\r
240 $menu._locked = false;\r
241\r
242 $menu._lock = function() {\r
243\r
244 if ($menu._locked)\r
245 return false;\r
246\r
247 $menu._locked = true;\r
248\r
249 window.setTimeout(function() {\r
250 $menu._locked = false;\r
251 }, 350);\r
252\r
253 return true;\r
254\r
255 };\r
256\r
257 $menu._show = function() {\r
258\r
259 if ($menu._lock())\r
260 $body.addClass('is-menu-visible');\r
261\r
262 };\r
263\r
264 $menu._hide = function() {\r
265\r
266 if ($menu._lock())\r
267 $body.removeClass('is-menu-visible');\r
268\r
269 };\r
270\r
271 $menu._toggle = function() {\r
272\r
273 if ($menu._lock())\r
274 $body.toggleClass('is-menu-visible');\r
275\r
276 };\r
277\r
278 $menuInner\r
279 .on('click', function(event) {\r
280 event.stopPropagation();\r
281 })\r
282 .on('click', 'a', function(event) {\r
283\r
284 var href = $(this).attr('href');\r
285\r
286 event.preventDefault();\r
287 event.stopPropagation();\r
288\r
289 // Hide.\r
290 $menu._hide();\r
291\r
292 // Redirect.\r
293 window.setTimeout(function() {\r
294 window.location.href = href;\r
295 }, 250);\r
296\r
297 });\r
298\r
299 $menu\r
300 .appendTo($body)\r
301 .on('click', function(event) {\r
302\r
303 event.stopPropagation();\r
304 event.preventDefault();\r
305\r
306 $body.removeClass('is-menu-visible');\r
307\r
308 })\r
309 .append('<a class="close" href="#menu">Close</a>');\r
310\r
311 $body\r
312 .on('click', 'a[href="#menu"]', function(event) {\r
313\r
314 event.stopPropagation();\r
315 event.preventDefault();\r
316\r
317 // Toggle.\r
318 $menu._toggle();\r
319\r
320 })\r
321 .on('click', function(event) {\r
322\r
323 // Hide.\r
324 $menu._hide();\r
325\r
326 })\r
327 .on('keydown', function(event) {\r
328\r
329 // Hide on escape.\r
330 if (event.keyCode == 27)\r
331 $menu._hide();\r
332\r
333 });\r
334\r
335})(jQuery);