👽🕋 Checkpoint
./confetti.js:7435365/2847 ./script.js:7435365/4233 ./index.html:7435365/336 ./style.css:7435365/767
This commit is contained in:
parent
e44cd7b3ad
commit
e78507a7cc
1
confetti.js
Normal file
1
confetti.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).ConfettiGenerator=t()}(this,function(){"use strict";return function(e){var i={target:"confetti-holder",max:80,size:1,animate:!0,props:["circle","square","triangle","line"],colors:[[165,104,246],[230,61,135],[0,199,228],[253,214,126]],clock:25,interval:null,rotate:!1,width:window.innerWidth,height:window.innerHeight};e&&(e.target&&(i.target=e.target),e.max&&(i.max=e.max),e.size&&(i.size=e.size),null!=e.animate&&(i.animate=e.animate),e.props&&(i.props=e.props),e.colors&&(i.colors=e.colors),e.clock&&(i.clock=e.clock),e.width&&(i.width=e.width),e.height&&(i.height=e.height),null!=e.rotate&&(i.rotate=e.rotate));var t=document.getElementById(i.target),a=t.getContext("2d"),r=[];function o(e,t){e||(e=1);var r=Math.random()*e;return t?Math.floor(r):r}var n=i.props.reduce(function(e,t){return e+(t.weight||1)},0);function s(){var e=i.props[function(){for(var e=Math.random()*n,t=0;t<i.props.length;++t){var r=i.props[t].weight||1;if(e<r)return t;e-=r}}()];return{prop:e.type?e.type:e,x:o(i.width),y:o(i.height),src:e.src,radius:o(4)+1,size:e.size,rotate:i.rotate,line:Math.floor(o(65)-30),angles:[o(10,!0)+2,o(10,!0)+2,o(10,!0)+2,o(10,!0)+2],color:i.colors[o(i.colors.length,!0)],rotation:o(360,!0)*Math.PI/180,speed:o(i.clock/7)+i.clock/30}}function l(e){switch(a.fillStyle=a.strokeStyle="rgba("+e.color+", "+(3<e.radius?.8:.4)+")",a.beginPath(),e.prop){case"circle":a.moveTo(e.x,e.y),a.arc(e.x,e.y,e.radius*i.size,0,2*Math.PI,!0),a.fill();break;case"triangle":a.moveTo(e.x,e.y),a.lineTo(e.x+e.angles[0]*i.size,e.y+e.angles[1]*i.size),a.lineTo(e.x+e.angles[2]*i.size,e.y+e.angles[3]*i.size),a.closePath(),a.fill();break;case"line":a.moveTo(e.x,e.y),a.lineTo(e.x+e.line*i.size,e.y+5*e.radius),a.lineWidth=2*i.size,a.stroke();break;case"square":a.save(),a.translate(e.x+15,e.y+5),a.rotate(e.rotation),a.fillRect(-15*i.size,-5*i.size,15*i.size,5*i.size),a.restore();break;case"svg":a.save();var t=new Image;t.src=e.src;var r=e.size||15;a.translate(e.x+r/2,e.y+r/2),e.rotate&&a.rotate(e.rotation),a.drawImage(t,-r/2*i.size,-r/2*i.size,r*i.size,r*i.size),a.restore()}}return{render:function(){t.width=i.width,t.height=i.height,r=[];for(var e=0;e<i.max;e++)r.push(s());return requestAnimationFrame(function e(){for(var t in a.clearRect(0,0,i.width,i.height),r)l(r[t]);!function(){for(var e=0;e<i.max;e++){var t=r[e];i.animate&&(t.y+=t.speed),t.rotate&&(t.rotation+=t.speed/35),(0<=t.speed&&i.height<t.y||t.speed<0&&t.y<0)&&(r[e]=t,r[e].x=o(i.width,!0),r[e].y=t.speed<0?parseFloat(i.height):-10)}}(),i.animate&&requestAnimationFrame(e)})},clear:function(){i.animate=!1,clearInterval(i.interval),requestAnimationFrame(function(){a.clearRect(0,0,t.width,t.height);var e=t.width;t.width=1,t.width=e})}}}});
|
@ -21,7 +21,9 @@
|
|||||||
<p id="isit"></p>
|
<p id="isit"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="glitchButton" style="position:fixed;top:20px;right:20px;"></div>
|
<div class="glitchButton" style="position:fixed; top:1vw; right:1vw;"></div>
|
||||||
<script src="https://button.glitch.me/button.js"></script>
|
<script src="https://button.glitch.me/button.js"></script>
|
||||||
|
|
||||||
|
<a id="pilink" href="#">π</a>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
51
script.js
51
script.js
@ -5,44 +5,45 @@ var birthday = {
|
|||||||
match: false,
|
match: false,
|
||||||
check: function() {
|
check: function() {
|
||||||
this.now = new Date();
|
this.now = new Date();
|
||||||
if (this.now.getDate() == this.day && this.now.getMonth() + 1 == this.month) this.activate()
|
if (this.now.getDate() == this.day && this.now.getMonth() + 1 == this.month)
|
||||||
else this.deactivate()
|
this.activate();
|
||||||
|
else this.deactivate();
|
||||||
},
|
},
|
||||||
activate: function() {
|
activate: function() {
|
||||||
document.getElementById('isit').innerHTML = "Yes!"
|
document.getElementById("isit").innerHTML = "Yes!";
|
||||||
elementClass.remove(document.getElementById('isit'), 'nope')
|
elementClass.remove(document.getElementById("isit"), "nope");
|
||||||
elementClass.add(document.getElementById('isit'), 'yep')
|
elementClass.add(document.getElementById("isit"), "yep");
|
||||||
confetti.render();
|
confetti.render();
|
||||||
},
|
},
|
||||||
deactivate: function() {
|
deactivate: function() {
|
||||||
document.getElementById('isit').innerHTML = "No"
|
document.getElementById("isit").innerHTML = "No";
|
||||||
elementClass.remove(document.getElementById('isit'), 'yep')
|
elementClass.remove(document.getElementById("isit"), "yep");
|
||||||
elementClass.add(document.getElementById('isit'), 'nope')
|
elementClass.add(document.getElementById("isit"), "nope");
|
||||||
|
|
||||||
confetti.clear();
|
confetti.clear();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
var confetti = {
|
var confetti = {
|
||||||
displayed: false,
|
displayed: false,
|
||||||
confetti: null,
|
confetti: null,
|
||||||
target: 'confetti-holder',
|
target: "confetti-holder",
|
||||||
max: null,
|
max: null,
|
||||||
size: 1,
|
size: 1,
|
||||||
animate: true,
|
animate: true,
|
||||||
props: ['circle', 'square', 'triangle', 'line'],
|
props: ["circle", "square", "triangle", "line"],
|
||||||
colors: [[165, 104, 246], [230, 61, 135], [0, 199, 228], [253, 214, 126]],
|
colors: [[165, 104, 246], [230, 61, 135], [0, 199, 228], [253, 214, 126]],
|
||||||
clock: 25,
|
clock: 25,
|
||||||
rotate: true,
|
rotate: true,
|
||||||
width: null,
|
width: null,
|
||||||
height: null,
|
height: null,
|
||||||
render: function() {
|
render: function() {
|
||||||
this.width = window.innerWidth
|
this.width = window.innerWidth;
|
||||||
this.height = window.innerHeight
|
this.height = window.innerHeight;
|
||||||
this.max = Math.floor(this.width * this.height / 1799.04)
|
this.max = Math.floor((this.width * this.height) / 1799.04);
|
||||||
if (this.confetti) this.confetti.clear();
|
if (this.confetti) this.confetti.clear();
|
||||||
|
|
||||||
this.confetti = new ConfettiGenerator(this)
|
this.confetti = new ConfettiGenerator(this);
|
||||||
this.confetti.render();
|
this.confetti.render();
|
||||||
this.displayed = true;
|
this.displayed = true;
|
||||||
},
|
},
|
||||||
@ -52,30 +53,36 @@ var confetti = {
|
|||||||
this.confetti.clear();
|
this.confetti.clear();
|
||||||
this.displayed = false;
|
this.displayed = false;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
var elementClass = {
|
var elementClass = {
|
||||||
has: function(e, c) {
|
has: function(e, c) {
|
||||||
return !!e.className.match(new RegExp('(\\s|^)' + c + '(\\s|$)'));
|
return !!e.className.match(new RegExp("(\\s|^)" + c + "(\\s|$)"));
|
||||||
},
|
},
|
||||||
add: function(e, c) {
|
add: function(e, c) {
|
||||||
if (!this.has(e, c)) e.className += " " + c;
|
if (!this.has(e, c)) e.className += " " + c;
|
||||||
},
|
},
|
||||||
remove: function(e, c) {
|
remove: function(e, c) {
|
||||||
if (this.has(e, c)) {
|
if (this.has(e, c)) {
|
||||||
var r = new RegExp('(\\s|^)' + c + '(\\s|$)');
|
var r = new RegExp("(\\s|^)" + c + "(\\s|$)");
|
||||||
e.className=e.className.replace(r, ' ');
|
e.className = e.className.replace(r, " ");
|
||||||
}
|
}
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
window.onload = function() {
|
window.onload = function() {
|
||||||
birthday.check();
|
birthday.check();
|
||||||
|
|
||||||
|
document.getElementById('pilink')
|
||||||
};
|
};
|
||||||
|
|
||||||
window.addEventListener('resize', function() {
|
window.addEventListener(
|
||||||
|
"resize",
|
||||||
|
function() {
|
||||||
if (confetti.displayed) confetti.render();
|
if (confetti.displayed) confetti.render();
|
||||||
}, false);
|
},
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
window.setInterval(function() {
|
window.setInterval(function() {
|
||||||
birthday.check();
|
birthday.check();
|
||||||
|
17
style.css
17
style.css
@ -31,6 +31,23 @@ body {
|
|||||||
font-size: 16vw;
|
font-size: 16vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pilink {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 1vw;
|
||||||
|
right: 1vw;
|
||||||
|
font-family: 'Times New Roman', serif;
|
||||||
|
font-size: 1.2vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pilink a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #6e7f80;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pilink a:hover {
|
||||||
|
color: #FF0000;
|
||||||
|
}
|
||||||
|
|
||||||
p.nope {
|
p.nope {
|
||||||
color: #888888;
|
color: #888888;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user