class Flower{
constructor(s, a1, a2){
let l = pow(random(), 2)*size;
let l2 = random();
this.l2 = l2;
this.x = cos(a1)(l + l2size/2);
this.y = sin(a1)(l + l2size/2);
this.hue = random();
this.goalX = this.x;
this.goalY = this.y;
this.dx = 10;
this.dy = 10;
this.s = s*(l2*.5 + .5);
this.a = a1;
this.squash = 1 - (l/size)*.8;
this.weights = [];
for (let i = 0; i < 5; i++){
this.weights[i] = random()*.5 + .5;
}
}
update(){
this.x += this.dx;
this.y += this.dy;
this.dx *= .95;
this.dy *= .95;
let mx = (width/2 + this.x) - mouseX;
let my = (height/2 + this.y) - mouseY;
let d = dist(width/2 + this.x, height/2 + this.y, mouseX, mouseY);
let a = atan2(my, mx);
if (d > 1){
this.dx += cos(a)*size/d;
this.dy += sin(a)*size/d;
}
this.x = (this.goalX + this.x)/2;
this.y = (this.goalY + this.y)/2;
}
renderStem(){
pushPop(() => {
noFill();
strokeWeight(this.l2*2 + 1);
stroke(.35, 1, this.l2*.5 + .5);
translate(this.x, size);
let a = PI;
if (this.x <= 0) a += PI/2;
arc(0, 0, this.x*2, (this.y)2 - size2, a, a+PI/2);
})
}
render(){
pushPop(() => {
noStroke();
fill(this.l2*.2 + .8);
translate(this.x, this.y);
rotate(this.a);
scale(this.s*this.squash, this.s);
for (let j = 0; j < 2; j++)
for (let i = 0; i < 5; i++){
let a = i*TAU/5;
let s = this.weights[i];
let b = (this.l2*.2 + .8)(s.1 + .9)
fill(this.hue, .1*this.l2, b);
if (j == 0){
s += .05;
fill(0);
}
ellipse(cos(a).7s, sin(a).7s, 1);
}
fill(0);
ellipse(0, 0, .7*(this.weights[0] + .05));
fill(.15, 1, 1*(this.l2*.2 + .8));
ellipse(0, 0, .7*this.weights[0]);
})
}
}
function setup (){
pixelDensity(1);
createCanvas();
colorMode(HSB, 1, 1, 1);
windowResized();
}
function init(){
flowers = [];
for (let i = 0; i < 50; i++){
flowers.push(
new Flower(random(20) + 20, random(PI*.8) + PI + PI*.1)
);
}
flowers = flowers.sort((a, b) => a.s - b.s);
}
function draw(){
background(0);
translate(width/2, height/2);
flowers.map(f => f.update());
flowers.map(f => f.renderStem());
flowers.map(f => f.render());
}
function windowResized(){
resizeCanvas(windowWidth, windowHeight);
init();
}
let pushPop = f => {push();f();pop();}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

结尾
正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。
以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。
g" />
结尾
正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。
以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。