/* JS Document */
|
|
|
|
/******************************
|
|
|
|
[Table of Contents]
|
|
|
|
1. Vars and Inits
|
|
2. Set Header
|
|
3. Init Menu
|
|
4. Init Parallax
|
|
5. Init Progress Bars
|
|
6. Init Accordions
|
|
7. Init Loaders
|
|
8. Init Milestones
|
|
|
|
|
|
******************************/
|
|
|
|
$(document).ready(function()
|
|
{
|
|
"use strict";
|
|
|
|
/*
|
|
|
|
1. Vars and Inits
|
|
|
|
*/
|
|
|
|
var ctrl = new ScrollMagic.Controller();
|
|
var header = $('.header');
|
|
var menuActive = false;
|
|
var hamb = $('.hamburger_container');
|
|
var menu = $('.fs_menu_container');
|
|
var hambIcon = $('.hamburger_icon');
|
|
|
|
setHeader();
|
|
|
|
$(window).on('resize', function()
|
|
{
|
|
setHeader();
|
|
});
|
|
|
|
$(document).on('scroll', function()
|
|
{
|
|
setHeader();
|
|
});
|
|
|
|
initMenu();
|
|
initParallax();
|
|
initProgressBars();
|
|
initAccordions();
|
|
initLoaders();
|
|
initMilestones();
|
|
|
|
/*
|
|
|
|
2. Set Header
|
|
|
|
*/
|
|
|
|
function setHeader()
|
|
{
|
|
if(window.innerWidth < 992)
|
|
{
|
|
if($(window).scrollTop() > 100)
|
|
{
|
|
header.css({'height':"80"});
|
|
}
|
|
else
|
|
{
|
|
header.css({'height':"110"});
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if($(window).scrollTop() > 100)
|
|
{
|
|
header.css({'height':"80"});
|
|
}
|
|
else
|
|
{
|
|
header.css({'height':"110"});
|
|
}
|
|
}
|
|
if(window.innerWidth > 991 && menuActive)
|
|
{
|
|
closeMenu();
|
|
}
|
|
}
|
|
|
|
/*
|
|
|
|
3. Init Menu
|
|
|
|
*/
|
|
|
|
function initMenu()
|
|
{
|
|
if($('.hamburger_container').length)
|
|
{
|
|
hamb.on('click', function()
|
|
{
|
|
if(!menuActive)
|
|
{
|
|
openMenu();
|
|
}
|
|
else
|
|
{
|
|
closeMenu();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function openMenu()
|
|
{
|
|
menu.addClass('active');
|
|
setTimeout(function()
|
|
{
|
|
hambIcon.addClass('active');
|
|
},500);
|
|
menuActive = true;
|
|
}
|
|
|
|
function closeMenu()
|
|
{
|
|
menu.removeClass('active');
|
|
setTimeout(function()
|
|
{
|
|
hambIcon.removeClass('active');
|
|
},500);
|
|
menuActive = false;
|
|
}
|
|
|
|
/*
|
|
|
|
4. Init Parallax
|
|
|
|
*/
|
|
|
|
function initParallax()
|
|
{
|
|
if($('.prlx_parent').length && $('.prlx').length)
|
|
{
|
|
var elements = $('.prlx_parent');
|
|
|
|
elements.each(function()
|
|
{
|
|
var ele = this;
|
|
var bcg = $(ele).find('.prlx');
|
|
|
|
var slideParallaxScene = new ScrollMagic.Scene({
|
|
triggerElement: ele,
|
|
triggerHook: 1,
|
|
duration: "200%"
|
|
})
|
|
.setTween(TweenMax.from(bcg, 1, {y: '-30%', ease:Power0.easeNone}))
|
|
.addTo(ctrl);
|
|
});
|
|
}
|
|
}
|
|
|
|
/*
|
|
|
|
5. Init Progress Bars
|
|
|
|
*/
|
|
|
|
function initProgressBars()
|
|
{
|
|
if($('.skill_bars').length)
|
|
{
|
|
var bars = $('.skill_bars');
|
|
|
|
bars.each(function()
|
|
{
|
|
var ele = $(this);
|
|
var elePerc = ele.data('perc');
|
|
var eleName = '#' + ele.attr('id');
|
|
|
|
var statsScene = new ScrollMagic.Scene({
|
|
triggerElement: this,
|
|
triggerHook: 'onEnter',
|
|
reverse:false
|
|
})
|
|
.on('start', function()
|
|
{
|
|
var pbar = new ProgressBar.Line(eleName,
|
|
{
|
|
strokeWidth: 0.5,
|
|
easing: 'easeInOut',
|
|
duration: 1400,
|
|
color: '#ff4200',
|
|
trailColor: '#f0f0f0',
|
|
trailWidth: 1,
|
|
svgStyle: {display: 'block', width: '100%', height: '100%'},
|
|
text: {
|
|
style: {
|
|
// Text color.
|
|
// Default: same as stroke color (options.color)
|
|
fontFamily: 'Open Sans',
|
|
letterSpacing: '0.3em',
|
|
textAlign: 'right',
|
|
fontSize: '11px',
|
|
width: '48px',
|
|
color: '#1c1c1c',
|
|
position: 'absolute',
|
|
left: 'calc' + '(' + (elePerc * 100) + '% - 48px' + ')',
|
|
top: '17px',
|
|
padding: 0,
|
|
margin: 0,
|
|
transform: null
|
|
},
|
|
autoStyleContainer: false
|
|
},
|
|
from: {color: '#00bcd5'},
|
|
to: {color: '#00bcd5'},
|
|
step: function(state, bar) {
|
|
bar.setText(Math.round(bar.value() * 100) + ' %');
|
|
}
|
|
});
|
|
pbar.animate(elePerc);
|
|
})
|
|
.addTo(ctrl);
|
|
})
|
|
}
|
|
}
|
|
|
|
/*
|
|
|
|
6. Init Accordions
|
|
|
|
*/
|
|
|
|
function initAccordions()
|
|
{
|
|
if($('.accordion').length)
|
|
{
|
|
var accs = $('.accordion');
|
|
|
|
accs.each(function()
|
|
{
|
|
var acc = $(this);
|
|
|
|
acc.on('click', function()
|
|
{
|
|
acc.toggleClass('active');
|
|
|
|
var panel = $(acc.next());
|
|
var panelH = panel.prop('scrollHeight') + "px";
|
|
|
|
if(panel.css('max-height') == "0px")
|
|
{
|
|
panel.css('max-height', panel.prop('scrollHeight') + "px");
|
|
}
|
|
else
|
|
{
|
|
panel.css('max-height', "0px");
|
|
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
/*
|
|
|
|
7. Init Loaders
|
|
|
|
*/
|
|
|
|
function initLoaders()
|
|
{
|
|
if($('.loader').length)
|
|
{
|
|
var loaders = $('.loader');
|
|
|
|
loaders.each(function()
|
|
{
|
|
var loader = this;
|
|
var endValue = $(loader).data('perc');
|
|
|
|
var loaderScene = new ScrollMagic.Scene({
|
|
triggerElement: this,
|
|
triggerHook: 'onEnter',
|
|
reverse:false
|
|
})
|
|
.on('start', function()
|
|
{
|
|
var bar = new ProgressBar.Circle(loader,
|
|
{
|
|
color: '#aaa',
|
|
// This has to be the same size as the maximum width to
|
|
// prevent clipping
|
|
strokeWidth: 4,
|
|
trailWidth: 1.6,
|
|
easing: 'easeInOut',
|
|
duration: 1400,
|
|
text:
|
|
{
|
|
autoStyleContainer: false
|
|
},
|
|
from:{ color: '#ff4200', width: 2 },
|
|
to: { color: '#ff4200', width: 2 },
|
|
// Set default step function for all animate calls
|
|
step: function(state, circle)
|
|
{
|
|
circle.path.setAttribute('stroke', state.color);
|
|
circle.path.setAttribute('stroke-width', state.width);
|
|
|
|
var value = Math.round(circle.value() * 100);
|
|
if (value === 0)
|
|
{
|
|
circle.setText('0%');
|
|
}
|
|
else
|
|
{
|
|
circle.setText(value + "%");
|
|
}
|
|
}
|
|
});
|
|
bar.text.style.fontFamily = '"Open Sans", sans-serif';
|
|
bar.text.style.fontSize = '36px';
|
|
bar.text.style.fontWeight = '600';
|
|
bar.text.style.color = "#1c1c1c";
|
|
|
|
|
|
bar.animate(endValue); // Number from 0.0 to 1.0
|
|
})
|
|
.addTo(ctrl);
|
|
});
|
|
}
|
|
}
|
|
|
|
/*
|
|
|
|
8. Init Milestones
|
|
|
|
*/
|
|
|
|
function initMilestones()
|
|
{
|
|
if($('.milestone_counter').length)
|
|
{
|
|
var milestoneItems = $('.milestone_counter');
|
|
|
|
milestoneItems.each(function(i)
|
|
{
|
|
var ele = $(this);
|
|
var endValue = ele.data('end-value');
|
|
var eleValue = ele.text();
|
|
|
|
var milestoneScene = new ScrollMagic.Scene({
|
|
triggerElement: this,
|
|
triggerHook: 'onEnter',
|
|
reverse:false
|
|
})
|
|
.on('start', function()
|
|
{
|
|
var counter = {value:eleValue};
|
|
var counterTween = TweenMax.to(counter, 4,
|
|
{
|
|
value: endValue,
|
|
roundProps:"value",
|
|
ease: Circ.easeOut,
|
|
onUpdate:function()
|
|
{
|
|
document.getElementsByClassName('milestone_counter')[i].innerHTML = counter.value;
|
|
}
|
|
});
|
|
})
|
|
.addTo(ctrl);
|
|
});
|
|
}
|
|
}
|
|
});
|