94 lines
2.2 KiB
JavaScript
94 lines
2.2 KiB
JavaScript
|
$(document).ready(function() {
|
||
|
|
||
|
// Variables
|
||
|
var $codeSnippets = $('.code-example-body'),
|
||
|
$nav = $('.navbar'),
|
||
|
$body = $('body'),
|
||
|
$window = $(window),
|
||
|
$popoverLink = $('[data-popover]'),
|
||
|
navOffsetTop = $nav.offset().top,
|
||
|
$document = $(document),
|
||
|
entityMap = {
|
||
|
"&": "&",
|
||
|
"<": "<",
|
||
|
">": ">",
|
||
|
'"': '"',
|
||
|
"'": ''',
|
||
|
"/": '/'
|
||
|
}
|
||
|
|
||
|
function init() {
|
||
|
$window.on('scroll', onScroll)
|
||
|
$window.on('resize', resize)
|
||
|
$popoverLink.on('click', openPopover)
|
||
|
$document.on('click', closePopover)
|
||
|
$('a[href^="#"]').on('click', smoothScroll)
|
||
|
buildSnippets();
|
||
|
}
|
||
|
|
||
|
function smoothScroll(e) {
|
||
|
e.preventDefault();
|
||
|
$(document).off("scroll");
|
||
|
var target = this.hash,
|
||
|
menu = target;
|
||
|
$target = $(target);
|
||
|
$('html, body').stop().animate({
|
||
|
'scrollTop': $target.offset().top-40
|
||
|
}, 0, 'swing', function () {
|
||
|
window.location.hash = target;
|
||
|
$(document).on("scroll", onScroll);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function openPopover(e) {
|
||
|
e.preventDefault()
|
||
|
closePopover();
|
||
|
var popover = $($(this).data('popover'));
|
||
|
popover.toggleClass('open')
|
||
|
e.stopImmediatePropagation();
|
||
|
}
|
||
|
|
||
|
function closePopover(e) {
|
||
|
if($('.popover.open').length > 0) {
|
||
|
$('.popover').removeClass('open')
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$("#button").click(function() {
|
||
|
$('html, body').animate({
|
||
|
scrollTop: $("#elementtoScrollToID").offset().top
|
||
|
}, 2000);
|
||
|
});
|
||
|
|
||
|
function resize() {
|
||
|
$body.removeClass('has-docked-nav')
|
||
|
navOffsetTop = $nav.offset().top
|
||
|
onScroll()
|
||
|
}
|
||
|
|
||
|
function onScroll() {
|
||
|
if(navOffsetTop < $window.scrollTop() && !$body.hasClass('has-docked-nav')) {
|
||
|
$body.addClass('has-docked-nav')
|
||
|
}
|
||
|
if(navOffsetTop > $window.scrollTop() && $body.hasClass('has-docked-nav')) {
|
||
|
$body.removeClass('has-docked-nav')
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function escapeHtml(string) {
|
||
|
return String(string).replace(/[&<>"'\/]/g, function (s) {
|
||
|
return entityMap[s];
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function buildSnippets() {
|
||
|
$codeSnippets.each(function() {
|
||
|
var newContent = escapeHtml($(this).html())
|
||
|
$(this).html(newContent)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
|
||
|
init();
|
||
|
|
||
|
});
|