-
Notifications
You must be signed in to change notification settings - Fork 1
/
script.js
82 lines (75 loc) · 2.02 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
$(document).ready(function() {
/**
* Responde a cambio de url
*/
$.address.change(function(e) {
var id = e.value.replace(/^\//, '');
if (id == '') {
id = 'page-0';// default page
}
activeLinkTo(id);
});
/**
* Activa el link a la página indicada
*/
function activeLinkTo(id) {
// actualizar estilos de links del menú
$('#menu')
.find('a.active').removeClass('active').end()
.find('a[href*="' + id + '"]').addClass('active');
}
/**
* Comportamiento de los enlaces del menú
*/
$('a.scrollto').click(function(e) {
e.preventDefault();
var id = $(this).attr('href').replace(/#/, '');
var top = Math.floor( $('#' + id).offset().top );
$.address.value(id);
$('html, body').stop().animate({
scrollTop: top
});
return false;
});
/**
* Crea un array con info de las páginas
*/
var pages = [];
function initPages() {
var windowHeight = $(window).height();
$('.page').each(function(i, el) {
var top = Math.floor($(el).offset().top);
var id = $(el).attr('id');
pages[i] = {'id': id, 'top': top};
$(this).css({'min-height': windowHeight});
});
//console.log(pages);
}
initPages();
/**
* Devuelve el mayor pages[] cuyo pages[].top
* sea menor al especificado.
*/
function getPageForTop(top) {
var result = pages[0];
for (i in pages) {
if (pages[i].top > top) {
break;
} else {
result = pages[i];
}
}
return result;
}
/**
* Comportamiento de la ventana
*/
var headerHeight = $('#header').height();console.log($(window).height());
$(window).scroll(function(){ // responde al scroll
var top = $(window).scrollTop() + headerHeight;// compensa #header offset
var id = getPageForTop(top).id; //console.log('top:' + top + ' scroll: ' + id);
$.address.value(id);
}).resize(function() { // responde al resize
initPages();
});
});