Html+Css+js实现春节倒计时效果,学习前端开发的步骤

  • {

margin: 0;

padding: 0;

font-family: ‘Poppins’, sans-serif;

}

@media screen and (min-width: 1025px) {

body {

background: rgb(129, 155, 190) url(…/image/geyao1.jpg);

background-attachment: fixed;

background-size: cover;

-webkit-background-size: cover;

-o-background-size: cover;

}

.container {

position: absolute;

top: 80px;

left: 100px;

right: 100px;

bottom: 80px;

background-size: cover;

-webkit-background-size: cover;

-o-background-size: cover;

display: flex;

justify-content: center;

align-items: center;

flex-direction: column;

box-shadow: 0 50px 50px rgba(0, 0, 0, 0.8),

0 0 0 100px rgba(0, 0, 0, 0.3);

}

.container h2 {

text-align: center;

font-size: 10em;

line-height: 0.7em;

color: #ffffff;

margin-top: -80px;

}

.container h2 span {

display: block;

font-weight: 300;

letter-spacing: 6px;

font-size: 0.2em;

}

.countdown {

display: flex;

margin-top: 50px;

}

.countdown div {

position: relative;

width: 100px;

height: 100px;

line-height: 100px;

text-align: center;

background: #333;

color: #fff;

margin: 0 15px;

font-size: 3em;

font-weight: 500;

border-radius: 10px 10px 0 0;

}

.countdown div:before {

content: ‘’;

position: absolute;

bottom: -30px;

left: 0;

width: 100%;

height: 35px;

background: #b00000;

color: #ffffff;

font-size: 0.35em;

line-height: 35px;

font-weight: 300;

border-radius: 0 0 10px 10px;

}

.countdown #day:before {

content: ‘天’;

}

.countdown #hour:before {

content: ‘时’;

}

.countdown #minute:before {

content: ‘分’;

}

.countdown #second:before {

content: ‘秒’;

}

}

canvas {

width: 100%;

height: 100%;

}

::-webkit-scrollbar {

display: none;

}

#btn{

margin: 40px;

width: 100px;

height: 30px;

background: pink;

text-align: center;

color: darkred;

line-height: 30px;

}

js部分


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();

var stop = false;

function show_runtime() {

var newDay = ‘2022/2/1 00:00:00’;

var countDate = new Date(newDay);

var now = new Date().getTime();

gap = countDate - now;

var second = 1000;

var minute = second * 60;

var hour = minute * 60;

var day = hour * 24;

var d = Math.floor(gap / day);

var h = Math.floor((gap % day) / hour);

var m = Math.floor((gap % hour) / minute);

var s = Math.floor((gap % minute) / second);

if ((d, h, m, s < 0)) {

stop = true;

} else {

document.getElementById(‘day’).innerText = d;

document.getElementById(‘hour’).innerText = h;

document.getElementById(‘minute’).innerText = m;

document.getElementById(‘second’).innerText = s;

}

}

function newyear() {

document.getElementById(‘title’).innerText = ‘Happy Spring Festival’;

document.getElementById(‘day’).innerText = ‘春’;

document.getElementById(‘hour’).innerText = ‘节’;

document.getElementById(‘minute’).innerText = ‘快’;

document.getElementById(‘second’).innerText = ‘乐’;

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

react和vue的比较

相同
1)vitual dom
2)组件化
3)props,单一数据流

不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

mg-C7FRA0zI-1712490698002)]

react和vue的比较

相同
1)vitual dom
2)组件化
3)props,单一数据流

不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

[外链图片转存中…(img-9X58j0Yt-1712490698003)]

[外链图片转存中…(img-FeXgD4Ia-1712490698003)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-VpMyuW5L-1712490698003)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值