竹笋

首页 » 问答 » 问答 » HTML实战把爱心代码放进自己网站是
TUhjnbcbe - 2023/6/30 20:27:00

最近电视剧《点燃我温暖你》的火热播出,剧中学霸男主李珣的炫酷爱心代码也迅速活出了圈,作为一个爱动手实践的我来说,已经把代码打完了。

也欢迎大家一起来开发更好看的样式或者动态效果吧!

网页效果:

HTML运行之后的网页效果图

源代码:

!

DOCTYPE

HTML

PUBLIC

"-//W3C//DTDHTML4.0Transitional//EN"

HTML

HEAD

TITLE

Love

/

TITLE

META

NAME

=

"Generator"

CONTENT

=

"EditPlus"

META

NAME

=

"Author"

CONTENT

=

""

META

NAME

=

"Keywords"

CONTENT

=

""

META

NAME

=

"Description"

CONTENT

=

""

style

html

,

body

{

height

:

%

;

padding

:

;

margin

:

;

background

:

#

;

}

canvas

{

position

:

absolute

;

width

:

%

;

height

:

%

;

}

/

style

style

type

=

"text/css"

div

{

color

:

#ea80b0

;

font-size

:

5rem

;

font-family

:STXingkai;

/*text-shadow:pxplum,pxplum,pxplum,pxplum;*/

}

.box

{

position

:

absolute

;

top

:

50%

;

left

:

35%

;

-webkit-transform

:

translateY

(

-50%

);

-ms-transform

:

translateY

(

-50%

);

-o-transform

:

translateY

(

-50%

);

transform

:

translateY

(

-50%

);

}

/

style

/

HEAD

BODY

canvas

id

=

"pinkboard"

/

canvas

script

/*

*Settings

*/

var

settings

={

particles

:

{

length

:

,

//maximumamountofparticles

duration

:

2

,

//particledurationinsec

velocity

:

,

//particlevelocityinpixels/sec

effect

:

-

0.75

,

//playwiththisforaniceeffect

size

:

30

,

//particlesizeinpixels

},

};

/*

*RequestAnimationFramepolyfillbyErikMller

*/

(

function

(){

var

b

=

;

var

c

=[

"ms"

,

"moz"

,

"webkit"

,

"o"

];

for

(

var

a

=

;

a

c

.

length

!

window

.

requestAnimationFrame

;++

a

){

window

.

requestAnimationFrame

=

window

[

c

[

a

]+

"RequestAnimationFrame"

];

window

.

cancelAnimationFrame

=

window

[

c

[

a

]+

"CancelAnimationFrame"

]

window

[

c

[

a

]+

"CancelRequestAnimationFrame"

]}

if

(!

window

.

requestAnimationFrame

){

window

.

requestAnimationFrame

=

function

(

h

,

e

){

var

d

=

new

Date

().

getTime

();

var

f

=

Math

.

max

(

,

16

-(

d

-

b

));

var

g

=

window

.

setTimeout

(

function

(){

h

(

d

+

f

)},

f

);

b

=

d

+

f

;

return

g

}}

if

(!

window

.

cancelAnimationFrame

){

window

.

cancelAnimationFrame

=

function

(

d

){

clearTimeout

(

d

)}}}());

/*

*Pointclass

*/

var

Point

=(

function

(){

function

Point

(

x

,

y

){

this

.

x

=(

typeof

x

!==

undefined

)?

x

:

;

this

.

y

=(

typeof

y

!==

undefined

)?

y

:

;

}

Point

.

prototype

.

clone

=

function

(){

return

new

Point

(

this

.

x

,

this

.

y

);

};

Point

.

prototype

.

length

=

function

(

length

){

if

(

typeof

length

==

undefined

)

return

Math

.

sqrt

(

this

.

x

*

this

.

x

+

this

.

y

*

this

.

y

);

this

.

normalize

();

this

.

x

*=

length

;

this

.

y

*=

length

;

return

this

;

};

Point

.

prototype

.

normalize

=

function

(){

var

length

=

this

.

length

();

this

.

x

/=

length

;

this

.

y

/=

length

;

return

this

;

};

return

Point

;

})();

/*

*Particleclass

*/

var

Particle

=(

function

(){

function

Particle

(){

this

.

position

=

new

Point

();

this

.

velocity

=

new

Point

();

this

.

acceleration

=

new

Point

();

this

.

age

=

;

}

Particle

.

prototype

.

initialize

=

function

(

x

,

y

,

dx

,

dy

){

this

.

position

.

x

=

x

;

this

.

position

.

y

=

y

;

this

.

velocity

.

x

=

dx

;

this

.

velocity

.

y

=

dy

;

this

.

acceleration

.

x

=

dx

*

settings

.

particles

.

effect

;

this

.

acceleration

.

y

=

dy

*

settings

.

particles

.

effect

;

this

.

age

=

;

};

Particle

.

prototype

.

update

=

function

(

deltaTime

){

this

.

position

.

x

+=

this

.

velocity

.

x

*

deltaTime

;

this

.

position

.

y

+=

this

.

velocity

.

y

*

deltaTime

;

this

.

velocity

.

x

+=

this

.

acceleration

.

x

*

deltaTime

;

this

.

velocity

.

y

+=

this

.

acceleration

.

y

*

deltaTime

;

this

.

age

+=

deltaTime

;

};

Particle

.

prototype

.

draw

=

function

(

context

,

image

){

function

ease

(

t

){

return

(--

t

)*

t

*

t

+

1

;

}

var

size

=

image

.

width

*

ease

(

this

.

age

/

settings

.

particles

.

duration

);

context

.

globalAlpha

=

1

-

this

.

age

/

settings

.

particles

.

duration

;

context

.

drawImage

(

image

,

this

.

position

.

x

-

size

/

2

,

this

.

position

.

y

-

size

/

2

,

size

,

size

);

};

return

Particle

;

})();

/*

*ParticlePoolclass

*/

var

ParticlePool

=(

function

(){

var

particles

,

firstActive

=

,

firstFree

=

,

duration

=

settings

.

particles

.

duration

;

function

ParticlePool

(

length

){

//createandpopulateparticlepool

particles

=

new

Array

(

length

);

for

(

var

i

=

;

i

particles

.

length

;

i

++)

particles

[

i

]=

new

Particle

();

}

ParticlePool

.

prototype

.

add

=

function

(

x

,

y

,

dx

,

dy

){

particles

[

firstFree

].

initialize

(

x

,

y

,

dx

,

dy

);

//handlecircularqueue

firstFree

++;

if

(

firstFree

==

particles

.

length

)

firstFree

=

;

if

(

firstActive

==

firstFree

)

firstActive

++;

if

(

firstActive

==

particles

.

length

)

firstActive

=

;

};

ParticlePool

.

prototype

.

update

=

function

(

deltaTime

){

var

i

;

//updateactiveparticles

if

(

firstActive

firstFree

){

for

(

i

=

firstActive

;

i

firstFree

;

i

++)

particles

[

i

].

update

(

deltaTime

);

}

if

(

firstFree

firstActive

){

for

(

i

=

firstActive

;

i

particles

.

length

;

i

++)

particles

[

i

].

update

(

deltaTime

);

for

(

i

=

;

i

firstFree

;

i

++)

particles

[

i

].

update

(

deltaTime

);

}

//removeinactiveparticles

while

(

particles

[

firstActive

].

age

=

duration

firstActive

!=

firstFree

){

firstActive

++;

if

(

firstActive

==

particles

.

length

)

firstActive

=

;

}

};

ParticlePool

.

prototype

.

draw

=

function

(

context

,

image

){

//drawactiveparticles

if

(

firstActive

firstFree

){

for

(

i

=

firstActive

;

i

firstFree

;

i

++)

particles

[

i

].

draw

(

context

,

image

);

}

if

(

firstFree

firstActive

){

for

(

i

=

firstActive

;

i

particles

.

length

;

i

++)

particles

[

i

].

draw

(

context

,

image

);

for

(

i

=

;

i

firstFree

;

i

++)

particles

[

i

].

draw

(

context

,

image

);

}

};

return

ParticlePool

;

})();

/*

*Puttingitalltogether

*/

(

function

(

canvas

){

var

context

=

canvas

.

getContext

(

2d

),

particles

=

new

ParticlePool

(

settings

.

particles

.

length

),

particleRate

=

settings

.

particles

.

length

/

settings

.

particles

.

duration

,

//particles/sec

time

;

//getpointonheartwith-PI=t=PI

function

pointOnHeart

(

t

){

return

new

Point

(

*

Math

.

pow

(

Math

.

sin

(

t

),

3

),

*

Math

.

cos

(

t

)-

50

*

Math

.

cos

(

2

*

t

)-

20

*

Math

.

cos

(

3

*

t

)-

10

*

Math

.

cos

(

4

*

t

)+

25

);

}

//creatingtheparticleimageusingadummycanvas

var

image

=(

function

(){

var

canvas

=

document

.

createElement

(

canvas

),

context

=

canvas

.

getContext

(

2d

);

canvas

.

width

=

settings

.

particles

.

size

;

canvas

.

height

=

settings

.

particles

.

size

;

//helperfunctiontocreatethepath

function

to

(

t

){

var

point

=

pointOnHeart

(

t

);

point

.

x

=

settings

.

particles

.

size

/

2

+

point

.

x

*

settings

.

particles

.

size

/

;

point

.

y

=

settings

.

particles

.

size

/

2

-

point

.

y

*

settings

.

particles

.

size

/

;

return

point

;

}

//createthepath

context

.

beginPath

();

var

t

=-

Math

.

PI

;

var

point

=

to

(

t

);

context

.

moveTo

(

point

.

x

,

point

.

y

);

while

(

t

Math

.

PI

){

t

+=

0.01

;

//babysteps!

point

=

to

(

t

);

context

.

lineTo

(

point

.

x

,

point

.

y

);

}

context

.

closePath

();

//createthefill

context

.

fillStyle

=

#ea80b0

;

context

.

fill

();

//createtheimage

var

image

=

new

Image

();

image

.

src

=

canvas

.

toDataURL

();

return

image

;

})();

//renderthatthing!

function

render

(){

//nextanimationframe

requestAnimationFrame

(

render

);

//updatetime

var

newTime

=

new

Date

().

getTime

()/

0

,

deltaTime

=

newTime

-(

time

newTime

);

time

=

newTime

;

//clearcanvas

context

.

clearRect

(

,

,

canvas

.

width

,

canvas

.

height

);

//createnewparticles

var

amount

=

particleRate

*

deltaTime

;

for

(

var

i

=

;

i

amount

;

i

++){

var

pos

=

pointOnHeart

(

Math

.

PI

-

2

*

Math

.

PI

*

Math

.

random

());

var

dir

=

pos

.

clone

().

length

(

settings

.

particles

.

velocity

);

particles

.

add

(

canvas

.

width

/

2

+

pos

.

x

,

canvas

.

height

/

2

-

pos

.

y

,

dir

.

x

,-

dir

.

y

);

}

//updateanddrawparticles

particles

.

update

(

deltaTime

);

particles

.

draw

(

context

,

image

);

}

//handle(re-)sizingofthecanvas

function

onResize

(){

canvas

.

width

=

canvas

.

clientWidth

;

canvas

.

height

=

canvas

.

clientHeight

;

}

window

.

onresize

=

onResize

;

//delayrenderingbootstrap

setTimeout

(

function

(){

onResize

();

render

();

},

10

);

})(

document

.

getElementById

(

pinkboard

));

/

script

!--名字--

div

class

=

"box"

/

div

/

BODY

/

HTML

欢迎

1
查看完整版本: HTML实战把爱心代码放进自己网站是