html5-dana-front/assets/js/main.js

174 lines
3.5 KiB
JavaScript
Raw Permalink Normal View History

2024-11-08 11:58:19 +00:00
/*
Highlights 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'),
$html = $('html');
// Breakpoints.
breakpoints({
large: [ '981px', '1680px' ],
medium: [ '737px', '980px' ],
small: [ '481px', '736px' ],
xsmall: [ null, '480px' ]
});
// Play initial animations on page load.
$window.on('load', function() {
window.setTimeout(function() {
$body.removeClass('is-preload');
}, 100);
});
// Touch mode.
if (browser.mobile) {
var $wrapper;
// Create wrapper.
$body.wrapInner('<div id="wrapper" />');
$wrapper = $('#wrapper');
// Hack: iOS vh bug.
if (browser.os == 'ios')
$wrapper
.css('margin-top', -25)
.css('padding-bottom', 25);
// Pass scroll event to window.
$wrapper.on('scroll', function() {
$window.trigger('scroll');
});
// Scrolly.
$window.on('load.hl_scrolly', function() {
$('.scrolly').scrolly({
speed: 1500,
parent: $wrapper,
pollOnce: true
});
$window.off('load.hl_scrolly');
});
// Enable touch mode.
$html.addClass('is-touch');
}
else {
// Scrolly.
$('.scrolly').scrolly({
speed: 1500
});
}
// Header.
var $header = $('#header'),
$headerTitle = $header.find('header'),
$headerContainer = $header.find('.container');
// Make title fixed.
if (!browser.mobile) {
$window.on('load.hl_headerTitle', function() {
breakpoints.on('>medium', function() {
$headerTitle
.css('position', 'fixed')
.css('height', 'auto')
.css('top', '50%')
.css('left', '0')
.css('width', '100%')
.css('margin-top', ($headerTitle.outerHeight() / -2));
});
breakpoints.on('<=medium', function() {
$headerTitle
.css('position', '')
.css('height', '')
.css('top', '')
.css('left', '')
.css('width', '')
.css('margin-top', '');
});
$window.off('load.hl_headerTitle');
});
}
// Scrollex.
breakpoints.on('>small', function() {
$header.scrollex({
terminate: function() {
$headerTitle.css('opacity', '');
},
scroll: function(progress) {
// Fade out title as user scrolls down.
if (progress > 0.5)
x = 1 - progress;
else
x = progress;
$headerTitle.css('opacity', Math.max(0, Math.min(1, x * 2)));
}
});
});
breakpoints.on('<=small', function() {
$header.unscrollex();
});
// Main sections.
$('.main').each(function() {
var $this = $(this),
$primaryImg = $this.find('.image.primary > img'),
$bg,
options;
// No primary image? Bail.
if ($primaryImg.length == 0)
return;
// Create bg and append it to body.
$bg = $('<div class="main-bg" id="' + $this.attr('id') + '-bg"></div>')
.css('background-image', (
'url("assets/css/images/overlay.png"), url("' + $primaryImg.attr('src') + '")'
))
.appendTo($body);
// Scrollex.
$this.scrollex({
mode: 'middle',
delay: 200,
top: '-10vh',
bottom: '-10vh',
init: function() { $bg.removeClass('active'); },
enter: function() { $bg.addClass('active'); },
leave: function() { $bg.removeClass('active'); }
});
});
})(jQuery);