chrg.nl/assets/js/index.js

103 lines
3.2 KiB
JavaScript

/**
* Main JS file for Casper behaviours
*/
/* globals jQuery, document */
(function ($, undefined) {
"use strict";
var $document = $(document);
$document.ready(function () {
var $postContent = $(".post-content");
$postContent.fitVids();
$(".scroll-up").arctic_scroll();
var scrollTarget = (window.innerHeight * 0.30);
// Don't hide this earlier (in CSS) for SEO reasons
$('.hidden-content').hide();
// On scroll, check if the height is passed, and if so, trigger.
$(document).scroll(function(e){
if ($document.width() > 767) {
if (window.scrollY >= scrollTarget) {
$('#scroll-arrow').hide(200);
$('.hidden-content').fadeIn(100);
} else if (window.scrollY < scrollTarget) {
$('.hidden-content').fadeOut(200);
$('#scroll-arrow').show(200);
}
}
});
$(window).resize(function() {resizeHeader();});
resizeHeader();
function resizeHeader() {
var hide = true;
if ($('#scroll-arrow').is(':visible')) {
hide = false;
} else if ($(window).width() > 767) {
$('#scroll-arrow').show();
}
var overhang = $(window).height() - $('.top-content').outerHeight();
var height = $('.hidden-content').height();
var calculated = 200;
if ($(window).width() > 767) {
calculated = (height - overhang + ($(window).height() * 0.2));
} else if ($('.hidden-content').is(":visible")) {
calculated = (height - overhang + ($(window).height() * 0.5));
}
$('.below-header').height(calculated);
if (hide) {
$('#scroll-arrow').hide();
}
}
$('.mobile-button').click(function() {
$('.hidden-content').fadeIn(100);
resizeHeader();
})
});
// Arctic Scroll by Paul Adam Davis
// https://github.com/PaulAdamDavis/Arctic-Scroll
$.fn.arctic_scroll = function (options) {
var defaults = {
elem: $(this),
speed: 500
},
allOptions = $.extend(defaults, options);
allOptions.elem.click(function (event) {
event.preventDefault();
var $this = $(this),
$htmlBody = $('html, body'),
offset = ($this.attr('data-offset')) ? $this.attr('data-offset') : false,
position = ($this.attr('data-position')) ? $this.attr('data-position') : false,
toMove;
if (offset) {
toMove = parseInt(offset);
$htmlBody.stop(true, false).animate({scrollTop: ($(this.hash).offset().top + toMove) }, allOptions.speed);
} else if (position) {
toMove = parseInt(position);
$htmlBody.stop(true, false).animate({scrollTop: toMove }, allOptions.speed);
} else {
$htmlBody.stop(true, false).animate({scrollTop: ($(this.hash).offset().top) }, allOptions.speed);
}
});
};
})(jQuery);