新年倒计时源码html+js
先上源代码,其中涉及的附件在下面有下载:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>~皇家元林提醒您:2021新年倒计时~</title>
<style>
@font-face {
font-family: "vipheyinyejingshuzi";
src: url("vipheyinyejingshuzi.woff2") format("woff2"),
url("vipheyinyejingshuzi.woff") format("woff"),
url("vipheyinyejingshuzi.ttf") format("truetype"),
url("vipheyinyejingshuzi.eot") format("embedded-opentype");
font-weight: normal;
font-style: normal;
}
:root {
font-family:'vipheyinyejingshuzi';
font-weight: bold;
}
html,
body {
font-size: 100%;
width: 100%;
height: 100%;
padding: 0;
margin: 0;
background: rgb(119, 13, 13);
background: radial-gradient(
circle,
rgba(119, 13, 13, 0.92) 64%,
rgba(0, 0, 0, 0.6) 100%
);
overflow:hidden;
}
a{
text-decoration:none;
color:#d99c3b;
}
canvas {
width: 100%;
height: 100%;
position:absolute;
left:0;
top:0;
}
.label {
background: url("6368077651977322227241996.png");
background-clip: text;
-webkit-background-clip: text;
color: transparent;
animation: moveBg 150s linear infinite;
}
@keyframes moveBg {
0% {
background-position: 0% 30%;
}
100% {
background-position: 1000% 500%;
}
}
.middle {
margin: 0 auto;
transform: translate(0, 0);
text-align: center;
user-select: none;
font-size: 3rem;
position:relative;
top:20%;
bottom:20%;
}
.time {
color: #d99c3b;
text-transform: uppercase;
display: flex;
justify-content: center;
}
.time div{
font-size: 6rem;
}
.time span {
padding: 0 14px;
font-size: 3rem;
}
@media only screen and (max-width: 768px) {
.middle {
font-size: 1.1rem;
}
.time div{
font-size: 4rem;
}
.time span {
padding: 0 16px;
font-size: 2rem;
}
}
</style>
</head>
<body>
<div class="middle">
<p><a href="https://hilau.com/" target="_blank">hilau.com</a></p>
<h1 class="label">2021新年倒计时</h1>
<div class="time">
<span>
<div id="d">
00
</div>
天 </span> <span>
<div id="h">
00
</div>
小时 </span> <span>
<div id="m">
00
</div>
分钟 </span> <span>
<div id="s">
00
</div>
秒 </span>
</div>
</div>
<script>
class Snowflake {
constructor() {
this.x = 0;
this.y = 0;
this.vx = 0;
this.vy = 0;
this.radius = 0;
this.alpha = 0;
this.reset();
}
reset() {
this.x = this.randBetween(0, window.innerWidth);
this.y = this.randBetween(0, -window.innerHeight);
this.vx = this.randBetween(-3, 3);
this.vy = this.randBetween(2, 5);
this.radius = this.randBetween(1, 4);
this.alpha = this.randBetween(0.1, 0.9);
}
randBetween(min, max) {
return min + Math.random() * (max - min);
}
update() {
this.x += this.vx;
this.y += this.vy;
if (this.y + this.radius > window.innerHeight) {
this.reset();
}
}
}
class Snow {
constructor() {
this.canvas = document.createElement("canvas");
this.ctx = this.canvas.getContext("2d");
document.body.appendChild(this.canvas);
window.addEventListener("resize", () => this.onResize());
this.onResize();
this.updateBound = this.update.bind(this);
requestAnimationFrame(this.updateBound);
this.createSnowflakes();
}
onResize() {
this.width = window.innerWidth;
this.height = window.innerHeight;
this.canvas.width = this.width;
this.canvas.height = this.height;
}
createSnowflakes() {
const flakes = window.innerWidth / 4;
this.snowflakes = [];
for (let s = 0; s < flakes; s++) {
this.snowflakes.push(new Snowflake());
}
}
update() {
this.ctx.clearRect(0, 0, this.width, this.height);
for (let flake of this.snowflakes) {
flake.update();
this.ctx.save();
this.ctx.fillStyle = "#FFF";
this.ctx.beginPath();
this.ctx.arc(flake.x, flake.y, flake.radius, 0, Math.PI * 2);
this.ctx.closePath();
this.ctx.globalAlpha = flake.alpha;
this.ctx.fill();
this.ctx.restore();
}
requestAnimationFrame(this.updateBound);
}
}
new Snow();
////////////////////////////////////////////////////////////
// Simple CountDown Clock
const comingdate = new Date("Feb 12, 2021 00:00:00");
const d = document.getElementById("d");
const h = document.getElementById("h");
const m = document.getElementById("m");
const s = document.getElementById("s");
const countdown = setInterval(() => {
const now = new Date();
const des = comingdate.getTime() - now.getTime();
const days = Math.floor(des / (1000 * 60 * 60 * 24));
const hours = Math.floor((des % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const mins = Math.floor((des % (1000 * 60 * 60)) / (1000 * 60));
const secs = Math.floor((des % (1000 * 60)) / 1000);
d.innerHTML = getTrueNumber(days);
h.innerHTML = getTrueNumber(hours);
m.innerHTML = getTrueNumber(mins);
s.innerHTML = getTrueNumber(secs);
if (this.x <= 0) clearInterval(this.x);
}, 1000);
const getTrueNumber = x => (x < 10 ? "0" + x : x);
</script>
</body>
</html>
声明:本文采用 BY-NC-SA 协议进行授权,如无注明均为原创,转载请注明转自 你好!刘
本文地址:新年倒计时源码html+js
本文地址:新年倒计时源码html+js
发表评论