前言
–
我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷
导语
–
歌谣 歌谣 新的一年就要到了 你一定有很多想许下的愿望吧 类似于许愿墙这种的,可以实现一下吗 说时迟 这是快 就开始了许愿墙的一个制作 耗时…不断改造…升级…当然还可以更好,其他就靠兄弟们自由发挥了
效果预览
功能要点介绍
1雪花飘落的代码是js控制的,可自行修改
2许愿墙的贴纸是for循环控制的,可自行修改
3文字是datas数组控制的,可以自行修改
代码部分
雪花逻辑部分(index.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 + 672);
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() {
console.log(this.width, ‘width’);
console.log(this.height, ‘height’);
this.width = window.innerWidth;
this.height = window.innerHeight;
this.canvas.width = this.width;
this.canvas.height = this.height + 672;
}
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();
逻辑文件 (script.js)
//转换时间格式
function formatDated(date) {
var date = new Date(date);
var YY = date.getFullYear() + ‘-’;
var MM = (date.getMonth() + 1 < 10 ? ‘0’ +
(date.getMonth() + 1) : date.getMonth() + 1) + ‘-’;
var DD = (date.getDate() < 10 ? ‘0’ +
(date.getDate()) :
date.getDate());
var hh = (date.getHours() < 10 ? ‘0’ +
date.getHours() :
date.getHours()) + ‘:’;
var mm = (date.getMinutes() < 10 ? ‘0’ +
date.getMinutes() :
date.getMinutes()) + ‘:’;
var ss = (date.getSeconds() < 10 ? ‘0’ +
date.getSeconds() : date.getSeconds());
return YY + MM + DD +" "+hh + mm + ss;
}
function timeChange(){
var datas =[]
var idList=0;
var timer= setInterval(() => {
//控制文字的说明
for( i=0;i<2;i++){
datas.push({
id:idList,
name:“歌谣”,
content:" 在过往的岁月中,我遇到了形形色色的人和事情。有的人坚持,有的人放弃。有的人逆袭,有的人失败。最好的种树是十年前其次是现在。很高兴遇到你,愿你的人生多姿多彩,幸福绵绵,好事连连。歌谣很棒谢谢你的一键三连",
time:formatDated(new Date())
})
}
idList++
console.log(idList,“idList”)
if(idList==5){
clearInterval(timer)
}
var content = document.getElementById(“content”);
var zIndex = 1;
for (var i = 0; i < datas.length; i++) {
var data = datas[i];
var div = document.createElement(“div”);
div.className = “tip1”;
div.id = “cc” + data.id;
content.appendChild(div);
//设置随机数
let num=parseInt(Math.random()*10000)
div.innerHTML = ‘
-
‘
第’+num+‘条’+ data.time + ‘’ -
‘
×’ -
‘
’ -
‘’
-
‘
’ -
data.content
-
‘’
-
‘
’ -
‘
’ -
‘’
-
‘’
-
‘
’ + data.name + ‘’ -
‘
’ -
‘’;
// 控制贴纸的位置
var x = parseInt(Math.random() * 1500)+200;
var y = parseInt(Math.random() * 700);
div.style.left = x + “px”;
div.style.top = y + “px”;
div.onclick = function () {
zIndex++;
this.style.zIndex = zIndex;
};
var closeDiv = div.children[0];
closeDiv.ondblclick = function () {
this.parentNode.style.display = “none”;
};
var x = closeDiv.children[1];
x.onclick = function () {
this.parentNode.parentNode.style.display = “none”;
};
}
},2000)
}
window.onload = timeChange;
样式部分(style.css)
body {
margin: 0 auto;
padding: 0px;
font-size: 12px;
background: url(…/images/bg.gif) repeat center 36px;
text-align: center;
background-color: #c30230;
}
#content .tip1, #content .tip2, #content .tip3, #content
.tip4, #content .tip5, #content .tip6, #content .tip7, #content .tip8 {
position: absolute;
width: 227px;
left: 200px;
top: 100px;
}
#content .tip1 .tip_h {
background: url(…/images/tip1_h.gif) no-repeat left top;
}
#content .tip1 .tip_h, #content .tip2 .tip_h, #content .tip3 .tip_h,
#content .tip4 .tip_h, #content .tip5 .tip_h, #content .tip6 .tip_h,
#content .tip7 .tip_h, #content .tip8 .tip_h {
width: 227px;
padding-top: 45px;
height: 23px;
text-align: left;
cursor: move;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里获取!
零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
[外链图片转存中…(img-4czkxeKm-1712881987555)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里获取!
[外链图片转存中…(img-HT4Nt7La-1712881987556)]
[外链图片转存中…(img-ZDmaakaD-1712881987556)]