Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/curttimson/hugo-theme-massively.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/main.js')
-rw-r--r--assets/js/main.js258
1 files changed, 258 insertions, 0 deletions
diff --git a/assets/js/main.js b/assets/js/main.js
new file mode 100644
index 0000000..fe372ee
--- /dev/null
+++ b/assets/js/main.js
@@ -0,0 +1,258 @@
+/*
+ Massively by HTML5 UP
+ html5up.net | @ajlkn
+ Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
+*/
+
+(function($) {
+
+ var $window = $(window),
+ $body = $('body'),
+ $wrapper = $('#wrapper'),
+ $header = $('#header'),
+ $nav = $('#nav'),
+ $main = $('#main'),
+ $navPanelToggle, $navPanel, $navPanelInner;
+
+ // Breakpoints.
+ breakpoints({
+ default: ['1681px', null ],
+ xlarge: ['1281px', '1680px' ],
+ large: ['981px', '1280px' ],
+ medium: ['737px', '980px' ],
+ small: ['481px', '736px' ],
+ xsmall: ['361px', '480px' ],
+ xxsmall: [null, '360px' ]
+ });
+
+ /**
+ * Applies parallax scrolling to an element's background image.
+ * @return {jQuery} jQuery object.
+ */
+ $.fn._parallax = function(intensity) {
+
+ var $window = $(window),
+ $this = $(this);
+
+ if (this.length == 0 || intensity === 0)
+ return $this;
+
+ if (this.length > 1) {
+
+ for (var i=0; i < this.length; i++)
+ $(this[i])._parallax(intensity);
+
+ return $this;
+
+ }
+
+ if (!intensity)
+ intensity = 0.25;
+
+ $this.each(function() {
+
+ var $t = $(this),
+ $bg = $('<div class="bg"></div>').appendTo($t),
+ on, off;
+
+ on = function() {
+
+ $bg
+ .removeClass('fixed')
+ .css('transform', 'matrix(1,0,0,1,0,0)');
+
+ $window
+ .on('scroll._parallax', function() {
+
+ var pos = parseInt($window.scrollTop()) - parseInt($t.position().top);
+
+ $bg.css('transform', 'matrix(1,0,0,1,0,' + (pos * intensity) + ')');
+
+ });
+
+ };
+
+ off = function() {
+
+ $bg
+ .addClass('fixed')
+ .css('transform', 'none');
+
+ $window
+ .off('scroll._parallax');
+
+ };
+
+ // Disable parallax on ..
+ if (browser.name == 'ie' // IE
+ || browser.name == 'edge' // Edge
+ || window.devicePixelRatio > 1 // Retina/HiDPI (= poor performance)
+ || browser.mobile) // Mobile devices
+ off();
+
+ // Enable everywhere else.
+ else {
+
+ breakpoints.on('>large', on);
+ breakpoints.on('<=large', off);
+
+ }
+
+ });
+
+ $window
+ .off('load._parallax resize._parallax')
+ .on('load._parallax resize._parallax', function() {
+ $window.trigger('scroll');
+ });
+
+ return $(this);
+
+ };
+
+ // Play initial animations on page load.
+ $window.on('load', function() {
+ window.setTimeout(function() {
+ $body.removeClass('is-preload');
+ }, 100);
+ });
+
+ // Scrolly.
+ $('.scrolly').scrolly();
+
+ // Background.
+ $wrapper._parallax(0.925);
+
+ // Nav Panel.
+
+ // Toggle.
+ $navPanelToggle = $(
+ '<a href="#navPanel" id="navPanelToggle">Menu</a>'
+ )
+ .appendTo($wrapper);
+
+ // Change toggle styling once we've scrolled past the header.
+ $header.scrollex({
+ bottom: '5vh',
+ enter: function() {
+ $navPanelToggle.removeClass('alt');
+ },
+ leave: function() {
+ $navPanelToggle.addClass('alt');
+ }
+ });
+
+ // Panel.
+ $navPanel = $(
+ '<div id="navPanel">' +
+ '<nav>' +
+ '</nav>' +
+ '<a href="#navPanel" class="close"></a>' +
+ '</div>'
+ )
+ .appendTo($body)
+ .panel({
+ delay: 500,
+ hideOnClick: true,
+ hideOnSwipe: true,
+ resetScroll: true,
+ resetForms: true,
+ side: 'right',
+ target: $body,
+ visibleClass: 'is-navPanel-visible'
+ });
+
+ // Get inner.
+ $navPanelInner = $navPanel.children('nav');
+
+ // Move nav content on breakpoint change.
+ var $navContent = $nav.children();
+
+ breakpoints.on('>medium', function() {
+
+ // NavPanel -> Nav.
+ $navContent.appendTo($nav);
+
+ // Flip icon classes.
+ $nav.find('.icons, .icon')
+ .removeClass('alt');
+
+ });
+
+ breakpoints.on('<=medium', function() {
+
+ // Nav -> NavPanel.
+ $navContent.appendTo($navPanelInner);
+
+ // Flip icon classes.
+ $navPanelInner.find('.icons, .icon')
+ .addClass('alt');
+
+ });
+
+ // Hack: Disable transitions on WP.
+ if (browser.os == 'wp'
+ && browser.osVersion < 10)
+ $navPanel
+ .css('transition', 'none');
+
+ // Intro.
+ var $intro = $('#intro');
+
+ if ($intro.length > 0) {
+
+ // Hack: Fix flex min-height on IE.
+ if (browser.name == 'ie') {
+ $window.on('resize.ie-intro-fix', function() {
+
+ var h = $intro.height();
+
+ if (h > $window.height())
+ $intro.css('height', 'auto');
+ else
+ $intro.css('height', h);
+
+ }).trigger('resize.ie-intro-fix');
+ }
+
+ // Hide intro on scroll (> small).
+ breakpoints.on('>small', function() {
+
+ $main.unscrollex();
+
+ $main.scrollex({
+ mode: 'bottom',
+ top: '25vh',
+ bottom: '-50vh',
+ enter: function() {
+ $intro.addClass('hidden');
+ },
+ leave: function() {
+ $intro.removeClass('hidden');
+ }
+ });
+
+ });
+
+ // Hide intro on scroll (<= small).
+ breakpoints.on('<=small', function() {
+
+ $main.unscrollex();
+
+ $main.scrollex({
+ mode: 'middle',
+ top: '15vh',
+ bottom: '-15vh',
+ enter: function() {
+ $intro.addClass('hidden');
+ },
+ leave: function() {
+ $intro.removeClass('hidden');
+ }
+ });
+
+ });
+
+ }
+
+})(jQuery); \ No newline at end of file