xxxxxxxxxx
1
<div class="scroll d-flex justify-content-center align-items-center h3" style="height: 100vh">
2
Scroll down
3
</div>
4
<canvas id="barChart"></canvas>
5
6
1
1
xxxxxxxxxx
1
//bar
2
var ctxB = document.getElementById("barChart").getContext('2d');
3
var myBarChart = new Chart(ctxB, {
4
type: 'horizontalBar',
5
data: {
6
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
7
datasets: [{
8
label: '# of Votes',
9
data: [0, 0, 0, 0, 0, 0],
10
backgroundColor: [
11
'rgba(255, 99, 132, 0.2)',
12
'rgba(54, 162, 235, 0.2)',
13
'rgba(255, 206, 86, 0.2)',
14
'rgba(75, 192, 192, 0.2)',
15
'rgba(153, 102, 255, 0.2)',
16
'rgba(255, 159, 64, 0.2)'
17
],
18
borderColor: [
19
'rgba(255,99,132,1)',
20
'rgba(54, 162, 235, 1)',
21
'rgba(255, 206, 86, 1)',
22
'rgba(75, 192, 192, 1)',
23
'rgba(153, 102, 255, 1)',
24
'rgba(255, 159, 64, 1)'
25
],
26
borderWidth: 1
27
}]
28
},
29
options: {
30
scales: {
31
xAxes: [{
32
ticks: {
33
beginAtZero: true
34
}
35
}]
36
}
37
}
38
});
39
40
// ----- intersection observer will run animation once it enters the viewport ---------
41
42
const options = {
43
rootMargin: '0px',
44
threshold: 0.5
45
}
46
47
const intersectionCallback = (entries) => {
48
entries.forEach(entry => {
49
if (entry.isIntersecting) {
50
myBarChart.data.datasets[0].data = myBarChart.data.datasets[0].data.map(() => {
51
return Math.floor(Math.random() * 10 + 1)
52
});
53
54
myBarChart.update();
55
observer.disconnect();
56
}
57
});
58
}
59
60
const observer = new IntersectionObserver(intersectionCallback, options);
61
62
const target = document.getElementById('barChart');
63
observer.observe(target);
64
65
// ------------ animating chart once on window load -------------
66
// $(document).ready(()=>{
67
// setTimeout(()=>{
68
// myBarChart.data.datasets[0].data = myBarChart.data.datasets[0].data.map(() => {
69
// return Math.floor(Math.random() * 10 + 1)
70
// });
71
72
// myBarChart.update();
73
// }, 500)
74
// })
75
76
77
// ------------ animating chart on scroll --------------
78
79
// let debounce = false;
80
81
// $(window).on('scroll', function(){
82
// if (debounce) return;
83
// debounce = true;
84
85
// myBarChart.data.datasets[0].data = myBarChart.data.datasets[0].data.map(() => {
86
// return Math.floor(Math.random() * 10)
87
// });
88
89
// const colorNumber = Math.floor(Math.random() * 255);
90
// myBarChart.data.datasets[0].backgroundColor = [
91
// `rgba(${colorNumber}, 99, ${colorNumber}, 0.2)`,
92
// `rgba(${colorNumber}, 162, ${colorNumber}, 0.2)`,
93
// `rgba(${colorNumber}, 206, ${colorNumber}, 0.2)`,
94
// `rgba(${colorNumber}, 192, ${colorNumber}, 0.2)`,
95
// `rgba(${colorNumber}, 102, ${colorNumber}, 0.2)`,
96
// `rgba(${colorNumber}, 159, ${colorNumber}, 0.2)`
97
// ]
98
99
// myBarChart.update();
100
101
// setTimeout(()=>{
102
// debounce = false;
103
// }, 500)
104
// })
105
Console errors: 0