just show your love,useing a backgroud by http://codepen.io/iamfrontender/details/yNVPeX
Created
January 1, 2019 14:02
-
-
Save qinfengge/e6b698d9f6eed077d32f33aeee30ac6a to your computer and use it in GitHub Desktop.
The programmer's romantic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> | |
<title></title> | |
</head> | |
<body> | |
<div class="container"> | |
<div class="content"> | |
<canvas id="universe"></canvas> | |
<canvas id="canvas"></canvas> | |
<div id="footer" class="fadeInUp"> | |
<svg id="scene" x="0px" y="0px" width="1600px" height="315px"> | |
<path id="ground" d="M0,316.4209c0,0,157.7119-35.416,469-56c7.3833-0.4883,23.7876-3.5488,31.3335-4.0166 | |
c3.7681-0.2334,19.4302,0.9424,28.3335,0.3506c17.1494-1.1396,30.9072-4.2734,38.333-4.6836 | |
c7.5972-0.4189,18.4058,0.3799,27.6665-0.9834c5.7075-0.8408,10.1318-4.042,14.9248-4.2705 | |
c7.8369-0.373,24.5693,3.6084,34.4087,4.2705c11.0586,0.7432,15.2656-1.8135,24.3335-2.1523c10.0576-0.376,20.4629,1.3867,28.6665,0 | |
c3.5957-0.6074,4.4194,0.4209,7.7227-0.7715c1.4927-0.5391,5.8179-3.5693,6.9438-4.2432c3.8335,0.667,6.1426-1.0732,9.917-1.167 | |
c2.2739-0.0566,3.9673-0.9072,6.249-0.9609c2.2725-0.0537,5.5547-1.2383,7.8345-1.2881c2.25-0.0498,3.498,1.0352,5.7554,0.9883 | |
c2.9648-0.0615,7.9341,0.3164,10.9111,0.2607c2.2461-0.042,2.4976-0.5195,4.7505-0.5586c2.9663-0.0518,2.1045-0.5615,5.0825-0.6074 | |
c1.5811-0.0244,6.9976,0.4131,8.582,0.3896c0.8887-0.0127,2.6113,0.373,3.5015,0.3604c1.5527-0.0215,2.2739-0.4404,3.8296-0.4609 | |
c1.416-0.0186,2.0854-0.8555,3.5039-0.873c1.0835-0.0127,2.9155,0.7939,4.0005,0.7813c1.1104-0.0127,3.5542,0.4805,4.666,0.4688 | |
c1.3047-0.0137,1.2773-0.5332,2.584-0.5459c1.415-0.0137,1.165-0.4414,2.5825-0.4541c0.916-0.0078,3.499,0.3984,4.416,0.3906 | |
c1.499-0.0127,1.833,0.6221,3.3345,0.6104c1.3296-0.0098,3.8267-0.666,5.1587-0.6748c1.3335-0.0088,2.8389-0.6514,4.1743-0.6592 | |
c1.3335-0.0078,2.4971,0.6191,3.8325,0.6123c2.5518-0.0127,7.3579,0.3965,9.9175,0.3877c5.3169-0.0176,5.5796-0.4063,10.9297-0.4063 | |
c1.8379,0,6.7031,1.3184,8.3203,1.2402c2.1055-0.1016,3.7139-1.6572,5.5283-1.7969c3.9541-0.3037,7.3262-0.5732,10.5986-0.2598 | |
c6.248,0.5977,12.1973-0.8125,21.207-0.7539c1.7266,0.0107,15.7813,3.085,17.5,3.0977c3.4014,0.0254,6.6191-1.3398,9.9971-1.3066 | |
c4.1221,0.041,8.2275,1.2529,12.3369,1.3066c2.0752,0.0273,4.1543-1.1084,6.2314-1.0771c3.3662,0.0498,4.5547,1.0166,7.9346,1.0771 | |
c2.1104,0.0381,6.4063-0.834,8.5264-0.792c2.7021,0.0537,4.4766-1.6729,7.2002-1.6113c2.9277,0.0654,7.6465,3.1641,10.6074,3.2393 | |
c4.8359,0.123,8.8809-0.9854,13.832-0.8359c2.5029,0.0752,11.8818,2.0498,14.375,2.1289c1.8398,0.0586,2.499-1.2188,4.334-1.1582 | |
c2.1689,0.0713,4.5049,1.209,6.666,1.2832c2.6699,0.0908,4.3398-0.916,6.998-0.8203c3.3379,0.1201,6.0566,1.3193,9.377,1.4453 | |
c4.001,0.1514,4.7764-1.1602,8.75-1c3.1836,0.1289,16.834,1.9912,20,2.125c4.0059,0.1699,4.0029-0.9004,7.9814-0.7227 | |
c6.8594,0.3076,7.9102,1.7656,14.6855,2.0977c8.916,0.4365,23.5254-0.2432,32.293,0.2344 | |
c6.7168,0.3662,13.3896,0.7432,20.0186,1.1318C1458.8545,268.4941,1680,316.4209,1680,316.4209H0z" /> | |
<path id="stone1" d="M680.3335,250.7549c7.3335,0.333,13.6665-1.2549,6-6.4609s-14.333-7.1221-18.6665,0.8359 | |
S680.3335,250.7549,680.3335,250.7549z" /> | |
<path id="stone2" d="M750.5,243.1709c3.25,0,2.5-3.707-1.75-4.2285s-5,3.7285-3,4.2285S750.5,243.1709,750.5,243.1709z" /> | |
<path id="stone3" d="M988.4893,243.8242c2.8857,0.3467,4.8438,1.2627,3.0107-2.0703s-7.3955,1.3555-5.2031,1.7129 | |
S988.4893,243.8242,988.4893,243.8242z" /> | |
<path id="stone4" d="M697,248.9355c2.0142-0.2021,2.1665-2.0156,1-2.1816s-9.1543,1.8398-5.9937,2.6699S697,248.9355,697,248.9355z" /> | |
<g id="greens" transform="translate(850, 180)"> | |
<g> | |
<path d="M36.3877,59.4268C33.0576,18.9482,6.4658,4.522,6.4658,4.522s22.4834,16.1426,24.4414,54.2251 | |
C32.8657,96.8311,36.3877,59.4268,36.3877,59.4268z" /> | |
<path d="M41.8496,83.1641C31.1572,43.98,2.3711,34.6738,2.3711,34.6738s25.063,11.7471,33.9668,48.8271 | |
C45.2441,120.5791,41.8496,83.1641,41.8496,83.1641z" /> | |
<path d="M31.3955,60.7207C23.7139,25.7979,2.5381,16.9541,2.5381,16.9541s18.4165,10.9277,24.7925,43.9502 | |
C33.7061,93.9258,31.3955,60.7207,31.3955,60.7207z" /> | |
<path d="M40.4517,62.0068C47.9473,21.6187,25.4009,0.1914,25.4009,0.1914s18.0098,21.9634,9.7896,59.6357 | |
C26.9722,97.499,40.4517,62.0068,40.4517,62.0068z" /> | |
<path d="M41.9414,69.4316c13.0313-38.9565-6.3218-63.3062-6.3218-63.3062s14.7856,24.251,1.4141,60.4185 | |
C23.6621,102.709,41.9414,69.4316,41.9414,69.4316z" /> | |
<path d="M29.4976,87.9092c27.4097-30.5938,19.2993-60.6226,19.2993-60.6226s3.958,28.1255-22.6606,56.0249 | |
C-0.4775,111.2109,29.4976,87.9092,29.4976,87.9092z" /> | |
<animateTransform attributeName="transform" type="skewX" values="0;10;0" begin="0s" dur="5.5s" fill="freeze" repeatCount="indefinite" /> | |
<animateMotion type="translate" values="0,0;-10,0;0,0" begin="0s" dur="5.5s" fill="freeze" repeatCount="indefinite" /> | |
</g> | |
<g> | |
<path d="M34.9995,60.4189C56.0713,30.6665,46.1133,5.4014,46.1133,5.4014S52.2559,29.4746,31.6235,56.79 | |
C10.9917,84.1035,34.9995,60.4189,34.9995,60.4189z" /> | |
<path d="M36.3047,64.5391c28.4629-23.4443,25.3262-51.189,25.3262-51.189s-0.293,25.4971-27.6851,46.6538 | |
C6.5552,81.1631,36.3047,64.5391,36.3047,64.5391z" /> | |
<path d="M33.0449,70.502c31.4424-19.2637,32.1875-47.1748,32.1875-47.1748s-3.8291,25.208-33.897,42.3584 | |
C1.271,82.833,33.0449,70.502,33.0449,70.502z" /> | |
<path d="M13.8237,76.0244c36.5039-5.2158,48.2563-30.543,48.2563-30.543S48.5693,67.1045,14.168,70.9248 | |
C-20.2324,74.749,13.8237,76.0244,13.8237,76.0244z" /> | |
<animateTransform attributeName="transform" type="skewX" values="0;15;0" begin="0s" dur="5s" fill="freeze" repeatCount="indefinite" /> | |
<animateMotion type="translate" values="0,0;-15,0;0,0" begin="0s" dur="5s" fill="freeze" repeatCount="indefinite" /> | |
</g> | |
</g> | |
<g id="sign" transform="translate(700, 180)"> | |
<polygon points="21.2168,1.1143 20.6665,1.5459 19.7593,1.4473 19.229,1.4209 18.9707,1.6274 18.6665,1.9004 17.6865,1.9219 | |
37.3516,87.8877 40.8828,87.0791 " /> | |
<polygon points="45.4111,9.5537 2.4258,18.7158 1.563,18.498 1.4585,17.2114 0.8291,15.583 0.9165,14.3364 0.0908,12.6548 | |
0.2085,12.0864 -0.1924,11.5308 -0.3296,9.271 43.3408,-0.0376 43.4766,0.5015 43.334,0.9629 43.6533,1.2046 43.8232,1.8784 | |
43.8965,2.7754 44.2217,3.459 44.625,5.0576 45.041,7.5459 45.2637,7.5962 45.6191,9.0073 " /> | |
<polygon points="47.0078,20.8545 4.2368,29.5503 3.5933,28.5903 3.3965,26.9746 2.4683,24.5137 2.8398,24.1372 2.2676,23.7847 | |
1.9834,22.7563 2.2417,22.3394 1.7388,21.8706 1.2627,20.1426 44.8281,11.2852 45.082,12.4014 45.0723,12.9517 45.3281,13.481 | |
45.752,15.3369 46.0273,17.7524 46.4219,18.2803 " /> | |
<polygon points="47.666,31.168 4.7803,39.4023 4.251,37.4004 4.4429,36.1895 3.6465,35.1123 3.0142,32.7178 3.2754,32.1025 | |
2.7461,31.7046 2.2676,29.8945 45.9268,21.5107 46.0762,22.2007 45.9512,22.8423 46.2783,23.1372 46.6777,24.9795 46.5234,25.4795 | |
47.3027,27.8667 47.8086,30.2017 " /> | |
</g> | |
<g id="boy_1_"> | |
<g id="boy"> | |
<path d="M800.7324,167.6929c0,0-7.9688-6.5039-9.7197-8.041c-1.751-1.5366-7.9331-6.5039-8.7197-13.0435 | |
c-0.7861-6.5396,6.0752-15.188,17.7969-16.1885c11.7207-1.0005,12.9727,1.0366,14.1514,2.7163 | |
c1.1787,1.6792,5.7178,11.1494,5.0752,18.6538c-0.6445,7.5049-5.6826,10.1133-9.7559,13.3652 | |
C805.4863,168.4072,800.7324,167.6929,800.7324,167.6929z" /> | |
<path d="M810.7031,169.2109c-1.0723-1.3037-1.3574-2.9556-1.1426-4.0645c0.2139-1.1084-8.041,0.1128-8.8281,2.542 | |
c1.6445,1.6787,0.751,3.146-0.5,4.1108c-1.25,0.9648-1.6797,1.502-1.9297,1.8237c0.0361,0.5361,0,0.9653,0,0.9653 | |
s-1.4297,1.7153-2.2871,6.5396s-0.6787,6.79-0.9648,8.3267c-0.2852,1.5366-1.4648,5.9678-1.751,10.292s0,4.5742,0,4.5742 | |
s1.251,1.7153,1.1436,4.0742s-1.2705,5.6099-1.2705,5.6099s0.2344,1.8945,1.8779,2.252c1.6445,0.3574,2.3594-0.6436,2.3594-0.6436 | |
s1.0713,1.3223,1.75,4.0742c0.6797,2.752,0.6436,6.79,1.8945,7.9688c1.251,1.1797,1.6074,0.3223,1.6074,0.3223 | |
s0.4648,3.3975-0.9277,6.6855c-1.3945,3.2881-4.1465,6.7568-4.1465,6.7568h11.0781c0,0,1.5723-3.5234-7.1113-2.2363 | |
c3.252-4.0742,3.8955-6.1934,4.0391-11.125c1.8223,0.5,4.252,0.6738,4.9316-0.3271c0.5352,1.3223,2.4297,2.1787,3.3584,1.7139 | |
c-0.2139,3.7168-1.0713,12.1846-1.0713,12.1846l9.0049,0.2852c0,0-0.751-3.2168-6.29-1.4307 | |
c1.001-6.7891,1.3584-11.5068,1.3584-11.5068s1.3584,0.1074,1.8584-0.3926c0.5-0.501,0.6787-5.3252-0.4648-9.9346 | |
c-1.1436-4.6104-0.5-4.4678-0.5-4.4678s1.75-0.8213,1.5-2.8584s-0.8574-3.6807-1.5352-5.5391 | |
c0.4639-0.1074,1-0.7861-0.6797-2.7158c-0.2148-2.5015-0.9648-6.3242-0.6436-7.6465s0.2148-2.8232-0.1787-4.3599 | |
c0-2.4302,0.7148-13.1509-1.25-17.0103c-1.9658-3.8594-2.5371-3.5737-2.5371-3.5737S812.5977,169.0142,810.7031,169.2109z" /> | |
</g> | |
<g transform="translate(783, 122)"> | |
<g> | |
<path d="M35.3506,17.9644c2.9834-3.71,5.9824-15.2095-3.1846-18.3765c2.668,3.833,1.168,5.6665,1.168,5.6665 | |
S32,1.2549,28.666-0.4121c1.5,3.1665,0,5,0,5S20.5,8.9209,24.5,13.2544S35.3506,17.9644,35.3506,17.9644z" /> | |
<animateTransform attributeName="transform" type="skewX" values="0;30;0" begin="0s" dur="4s" fill="freeze" repeatCount="indefinite" /> | |
<animateMotion type="translate" values="0,0;-10,0;0,0" begin="0s" dur="4s" fill="freeze" repeatCount="indefinite" /> | |
</g> | |
<g> | |
<path d="M27.125,6.2334c-1.8125-0.625-2.0625-1.9375-4.375-2.25c1,0.8125,1.125,1.6875,1.125,1.6875S21.5,4.3584,19.0625,3.9834 | |
c1.3125,0.75,2,1.875,2,1.875s-3.25-0.75-5.875-0.75c1.125,0.3125,1.125,0.6875,1.125,0.6875S10.75,5.8584,8.6875,7.4834 | |
c1,0.125,0.9375,0.6714,0.9375,0.6714s-4.25,1.5786-5.375,3.7661c0.875-0.4375-0.8125,1.8125-0.8125,1.8125s0.75,1.375-0.3125,1.125 | |
S0.5,14.1084,0.5,12.5459c-0.5,2.1875,0.6924,2.5767,1.4375,3.3125c-0.0625,1-0.9375,2.6494-1.25,2.106s0.8594,0.4282,0.0547,2.4731 | |
c-0.8047,2.0459-1.1533,3.7432-0.5103,6.5195s2.7056,4.5264,3.5181,6.2139s0.5-1.6875,0.5-1.6875L27.125,6.2334z" /> | |
</g> | |
</g> | |
</g> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<audio src="http://o95ue5pb2.bkt.clouddn.com/3.mp3" id="mp3" loop="loop"></audio> | |
</body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || | |
window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; | |
var starDensity = .216; | |
var speedCoeff = .05; | |
var width; | |
var height; | |
var starCount; | |
var circleRadius; | |
var circleCenter; | |
var first = true; | |
var giantColor = '180,184,240'; | |
var starColor = '226,225,142'; | |
var cometColor = '226,225,224'; | |
var canva = document.getElementById('universe'); | |
var stars = []; | |
windowResizeHandler(); | |
window.addEventListener('resize', windowResizeHandler, false); | |
createUniverse(); | |
function createUniverse() { | |
universe = canva.getContext('2d'); | |
for (var i = 0; i < starCount; i++) { | |
stars[i] = new Star(); | |
stars[i].reset(); | |
} | |
draw(); | |
} | |
function draw() { | |
universe.clearRect(0, 0, width, height); | |
var starsLength = stars.length; | |
for (var i = 0; i < starsLength; i++) { | |
var star = stars[i]; | |
star.move(); | |
star.fadeIn(); | |
star.fadeOut(); | |
star.draw(); | |
} | |
window.requestAnimationFrame(draw); | |
} | |
function Star() { | |
this.reset = function() { | |
this.giant = getProbability(3); | |
this.comet = this.giant || first ? false : getProbability(10); | |
this.x = getRandInterval(0, width - 10); | |
this.y = getRandInterval(0, height); | |
this.r = getRandInterval(1.1, 2.6); | |
this.dx = getRandInterval(speedCoeff, 6 * speedCoeff) + (this.comet + 1 - 1) * speedCoeff * getRandInterval(50, 120) + speedCoeff * 2; | |
this.dy = -getRandInterval(speedCoeff, 6 * speedCoeff) - (this.comet + 1 - 1) * speedCoeff * getRandInterval(50, 120); | |
this.fadingOut = null; | |
this.fadingIn = true; | |
this.opacity = 0; | |
this.opacityTresh = getRandInterval(.2, 1 - (this.comet + 1 - 1) * .4); | |
this.do = getRandInterval(0.0005, 0.002) + (this.comet + 1 - 1) * .001; | |
}; | |
this.fadeIn = function() { | |
if (this.fadingIn) { | |
this.fadingIn = this.opacity > this.opacityTresh ? false : true; | |
this.opacity += this.do; | |
} | |
}; | |
this.fadeOut = function() { | |
if (this.fadingOut) { | |
this.fadingOut = this.opacity < 0 ? false : true; | |
this.opacity -= this.do / 2; | |
if (this.x > width || this.y < 0) { | |
this.fadingOut = false; | |
this.reset(); | |
} | |
} | |
}; | |
this.draw = function() { | |
universe.beginPath(); | |
if (this.giant) { | |
universe.fillStyle = 'rgba(' + giantColor + ',' + this.opacity + ')'; | |
universe.arc(this.x, this.y, 2, 0, 2 * Math.PI, false); | |
} else if (this.comet) { | |
universe.fillStyle = 'rgba(' + cometColor + ',' + this.opacity + ')'; | |
universe.arc(this.x, this.y, 1.5, 0, 2 * Math.PI, false); | |
//comet tail | |
for (var i = 0; i < 30; i++) { | |
universe.fillStyle = 'rgba(' + cometColor + ',' + (this.opacity - (this.opacity / 20) * i) + ')'; | |
universe.rect(this.x - this.dx / 4 * i, this.y - this.dy / 4 * i - 2, 2, 2); | |
universe.fill(); | |
} | |
} else { | |
universe.fillStyle = 'rgba(' + starColor + ',' + this.opacity + ')'; | |
universe.rect(this.x, this.y, this.r, this.r); | |
} | |
universe.closePath(); | |
universe.fill(); | |
}; | |
this.move = function() { | |
this.x += this.dx; | |
this.y += this.dy; | |
if (this.fadingOut === false) { | |
this.reset(); | |
} | |
if (this.x > width - (width / 4) || this.y < 0) { | |
this.fadingOut = true; | |
} | |
}; | |
(function() { | |
setTimeout(function() { | |
first = false; | |
}, 50) | |
})() | |
} | |
function getProbability(percents) { | |
return ((Math.floor(Math.random() * 1000) + 1) < percents * 10); | |
} | |
function getRandInterval(min, max) { | |
return (Math.random() * (max - min) + min); | |
} | |
function windowResizeHandler() { | |
width = window.innerWidth; | |
height = window.innerHeight; | |
starCount = width * starDensity; | |
// console.log(starCount) | |
circleRadius = (width > height ? height / 2 : width / 2); | |
circleCenter = { | |
x: width / 2, | |
y: height / 2 | |
} | |
canva.setAttribute('width', width); | |
canva.setAttribute('height', height); | |
} | |
var Clock = (function() { | |
var canvas, | |
ctx, | |
bgGrad = true, | |
gradient, | |
height = 400, | |
key = { | |
up: false, | |
shift: false | |
}, | |
particles = [], | |
// particleColor = 'hsla(0, 0%, 100%, 0.3)', | |
mouse = { | |
x: 0, | |
y: 0 | |
}, | |
press = false, | |
quiver = true, | |
texts = ["蔚蓝星空下","男孩独自坐望","星海闪烁","仿佛在问","为什么你一个人","我在等一个人","一个女孩","这个女孩","真没什么好的","性格很倔强","脾气又不好","还很强势","但男孩觉得","这都是表面","在他的眼中","女孩任性起来","耍起混来的时候","真的很可爱","可是","就是这样的她","也非常的脆弱","也有","伤心难过的时候","而男孩","看着她","想要做一千件事","让她开心起来","却总是放下","已经攥紧的拳头","空荡荡","因为男孩知道","女孩心中有个人","那是一座女孩","筑起的城堡","男孩走不近","只能呆呆望着","其实他也知道","这样很傻","但是放下","却做不到","在城堡外","继续等待","男孩再次抬头","望向星空","嘿","女孩","我能成为","你的星星吗","小小的星光","不过分炙热","不会灼伤你","让你耍赖","给你依赖","给你幸福","等待着你","Always"], | |
text = texts[0], | |
textNum = 0, | |
textSize = 60, | |
valentine = false, | |
msgTime = 100, | |
updateColor = true, | |
width = 420; | |
var FRAME_RATE = 60, | |
MIN_WIDTH = 0, | |
MIN_HEIGHT = 0, | |
PARTICLE_NUM = 1200, | |
RADIUS = Math.PI * 2; | |
var defaultStyles = function() { | |
// textSize = 36; | |
// particleColor = 'rgba(226,225,142, 0.7)'; | |
}; | |
var draw = function(p) { | |
ctx.fillStyle = 'rgba(226,225,142, ' + p.opacity + ')'; | |
ctx.beginPath(); | |
ctx.arc(p.x, p.y, p.size, 0, RADIUS, true); | |
ctx.closePath(); | |
ctx.fill(); | |
}; | |
var loop = function() { | |
ctx.clearRect(0, 0, width, height); | |
// textSize = 36; | |
ctx.fillStyle = "rgb(255, 255, 255)"; | |
ctx.textBaseline = "middle"; | |
ctx.font = textSize + "px 'Avenir', 'Helvetica Neue', 'Arial', 'sans-serif'"; | |
ctx.fillText(text, (width - ctx.measureText(text).width) * 0.5, height * 0.5); | |
var imgData = ctx.getImageData(0, 0, width, height); | |
ctx.clearRect(0, 0, width, height); | |
for (var i = 0, l = particles.length; i < l; i++) { | |
var p = particles[i]; | |
p.inText = false; | |
} | |
particleText(imgData); | |
}; | |
var pad = function(number) { | |
return ('0' + number).substr(-2); | |
}; | |
var particleText = function(imgData) { | |
var pxls = []; | |
for (var w = width; w > 0; w -= 3) { | |
for (var h = 0; h < width; h += 3) { | |
var index = (w + h * (width)) * 4; | |
if (imgData.data[index] > 1) { | |
pxls.push([w, h]); | |
} | |
} | |
} | |
var count = pxls.length; | |
var j = parseInt((particles.length - pxls.length) / 2, 10) | |
if (j < 0) { | |
j = 0; | |
} | |
for (var i = 0; i < pxls.length && j < particles.length; i++, j++) { | |
try { | |
var p = particles[j], | |
X, | |
Y; | |
if (quiver) { | |
X = (pxls[count - 1][0]) - (p.px + Math.random() * 5); | |
Y = (pxls[count - 1][1]) - (p.py + Math.random() * 5); | |
} else { | |
X = (pxls[count - 1][0]) - p.px; | |
Y = (pxls[count - 1][1]) - p.py; | |
} | |
var T = Math.sqrt(X * X + Y * Y); | |
var A = Math.atan2(Y, X); | |
var C = Math.cos(A); | |
var S = Math.sin(A); | |
p.x = p.px + C * T * p.delta; | |
p.y = p.py + S * T * p.delta; | |
p.px = p.x; | |
p.py = p.y; | |
p.inText = true; | |
p.fadeIn(); | |
draw(p); | |
if (key.up === true) { | |
p.size += 0.3; | |
} else { | |
var newSize = p.size - 0.5; | |
if (newSize > p.origSize && newSize > 0) { | |
p.size = newSize; | |
} else { | |
p.size = m.origSize; | |
} | |
} | |
} catch (e) { | |
} | |
count--; | |
} | |
for (var i = 0; i < particles.length; i++) { | |
var p = particles[i]; | |
if (!p.inText) { | |
// p.px = p.mx; | |
// p.py = p.my; | |
// p.opacity = 1; | |
p.fadeOut(); | |
var X = p.mx - p.px; | |
Y = p.my - p.py; | |
var T = Math.sqrt(X * X + Y * Y); | |
var A = Math.atan2(Y, X); | |
var C = Math.cos(A); | |
var S = Math.sin(A); | |
p.x = p.px + C * T * p.delta / 2; | |
p.y = p.py + S * T * p.delta / 2; | |
p.px = p.x; | |
p.py = p.y; | |
draw(p); | |
} | |
} | |
}; | |
var setDimensions = function() { | |
// width = window.innerWidth; | |
// height = window.innerHeight; | |
canvas.width = window.innerWidth >= 420 ? 420 : width; | |
canvas.height = window.innerHeight >= 150 ? 150 : height; | |
width = canvas.width; | |
height = canvas.height; | |
canvas.style.position = 'absolute'; | |
canvas.style.left = '0px'; | |
canvas.style.top = '0px'; | |
canvas.style.bottom = '0px'; | |
canvas.style.right = '0px'; | |
canvas.style.marginTop = window.innerHeight * .15 + 'px'; | |
}; | |
var setGradient = function(gradientStops) { | |
gradient = ctx.createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, width); | |
for (var position in gradientStops) { | |
var color = gradientStops[position]; | |
gradient.addColorStop(position, color); | |
} | |
}; | |
/** | |
* Public Methods | |
*/ | |
return { | |
init: function(canvasID) { | |
canvas = document.getElementById(canvasID); | |
if (canvas === null || !canvas.getContext) { | |
return; | |
} | |
ctx = canvas.getContext("2d"); | |
setDimensions(); | |
this.event(); | |
for (var i = 0; i < PARTICLE_NUM; i++) { | |
particles[i] = new Particle(canvas); | |
} | |
setInterval(loop, FRAME_RATE); | |
}, | |
event: function() { | |
var end = false; | |
console.log(texts.length) | |
document.addEventListener('click', function(e) { | |
textNum++; | |
if (textNum >= texts.length) { | |
textNum--; | |
end =true; | |
return; | |
} | |
text = texts[textNum]; | |
console.log(textNum) | |
}, false); | |
} | |
}; | |
})(); | |
var Particle = function(canvas) { | |
var range = Math.random() * 180 / Math.PI, | |
spread = canvas.height / 4, | |
size = Math.random() * 1.2; | |
this.delta = 0.15; | |
this.x = 0; | |
this.y = 0; | |
this.px = (canvas.width / 2) + ((Math.random() - 0.5) * canvas.width); | |
this.py = (canvas.height * 0.5) + ((Math.random() - 0.5) * spread); | |
this.mx = this.px; | |
this.my = this.py; | |
this.velocityX = Math.floor(Math.random() * 10) - 5; | |
this.velocityY = Math.floor(Math.random() * 10) - 5; | |
this.size = size; | |
this.origSize = size; | |
this.inText = false; | |
this.opacity = 0; | |
this.do = 0.02; | |
this.opacityTresh = 0.98 | |
this.fadingOut = true; | |
this.fadingIn = true; | |
this.fadeIn = function() { | |
this.fadingIn = this.opacity > this.opacityTresh ? false : true; | |
if (this.fadingIn) { | |
this.opacity += this.do; | |
}else{ | |
this.opacity = 1; | |
} | |
}; | |
this.fadeOut = function() { | |
this.fadingOut = this.opacity < 0 ? false : true; | |
if (this.fadingOut) { | |
this.opacity -= 0.06; | |
if(this.opacity<0){ | |
this.opacity = 0 | |
} | |
}else{ | |
this.opacity = 0 | |
} | |
}; | |
}; | |
mp3.play(); | |
setTimeout(function() { | |
Clock.init('canvas'); | |
}, 2000) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
html, | |
body { | |
padding: 0px; | |
margin: 0px; | |
width: 100%; | |
height: 100%; | |
position: fixed; | |
} | |
body { | |
display: -webkit-box; | |
display: -webkit-flex; | |
display: -ms-flexbox; | |
display: flex; | |
-webkit-box-pack: center; | |
-webkit-justify-content: center; | |
-ms-flex-pack: center; | |
justify-content: center; | |
-webkit-box-align: center; | |
-webkit-align-items: center; | |
-ms-flex-align: center; | |
align-items: center; | |
-webkit-filter: contrast(120%); | |
filter: contrast(120%); | |
background-color: black; | |
} | |
.container { | |
width: 100%; | |
height: 100%; | |
background-image: radial-gradient(1600px at 70% 120%, rgba(33, 39, 80, 1) 10%, #020409 100%); | |
} | |
.content { | |
width: inherit; | |
height: inherit; | |
} | |
#universe { | |
width: 100%; | |
height: 100%; | |
} | |
#footerContent { | |
font-family: sans-serif; | |
font-size: 110%; | |
color: rgba(200, 220, 255, .3); | |
width: 100%; | |
position: fixed; | |
bottom: 0px; | |
padding: 20px; | |
text-align: center; | |
z-index: 20; | |
} | |
#footer { | |
position: absolute; | |
bottom: 0px; | |
height: 300px; | |
width: 100%; | |
} | |
#scene { | |
height: 100%; | |
position: absolute; | |
left: 50%; | |
margin-left: -800px; | |
} | |
a { | |
text-decoration: none; | |
color: rgba(200, 220, 255, 1); | |
opacity: .4; | |
-webkit-transition: opacity .4s ease; | |
transition: opacity .4s ease; | |
} | |
a:hover { | |
opacity: 1; | |
} | |
/*-----------------------------音乐-------------------------------------*/ | |
#music { | |
position: absolute; | |
width: 24px; | |
height: 24px; | |
right: 8px; | |
top: 8px; | |
z-index: 99; | |
} | |
.music { | |
width: 100%; | |
height: 100%; | |
background: url("http://statics.xiaoenai.com/v4/job/music.png") no-repeat center center; | |
background-size: 24px 24px; | |
z-index: 10; | |
position: relative | |
} | |
.play { | |
animation: rotate 1.2s linear infinite; | |
-webkit-animation: rotate 1.2s linear infinite | |
} | |
#music>span { | |
color: #fff; | |
position: absolute; | |
left: -60px; | |
top: 0; | |
line-height: 24px; | |
font-size: 14px; | |
opacity: 0; | |
-webkit-transition: all 0.3s linear; | |
transition: all 0.3s linear | |
} | |
#music>span.zshow { | |
left: -30px; | |
opacity: 1 | |
} | |
@keyframes rotate { | |
0% { | |
transform: rotate(0) | |
} | |
100% { | |
transform: rotate(360deg) | |
} | |
} | |
@-webkit-keyframes rotate { | |
0% { | |
-webkit-transform: rotate(0) | |
} | |
100% { | |
-webkit-transform: rotate(360deg) | |
} | |
} | |
/*box*/ | |
#box { | |
color: #fff; | |
position: absolute; | |
bottom: 30%; | |
left: 50%; | |
margin-left: -96px; | |
z-index: 100; | |
transform: rotate(-12deg); | |
-webkit-transform: rotate(-12deg); | |
font-size: 12px; | |
} | |
.txt { | |
color: hsla(0, 0%, 0%, 0); | |
text-shadow: #fff 0 0 10px; | |
transition: text-shadow 2s cubic-bezier(0, 1, 0, 1); | |
} | |
@-moz-document url-prefix() { | |
.txt { | |
text-shadow: #fff 0 0 20px; | |
} | |
} | |
/* FF fix */ | |
.fadeInUp { | |
-webkit-animation: fadeInUp 3s .2s ease both; | |
-moz-animation: fadeInUp 3s .2s ease both; | |
} | |
@-webkit-keyframes fadeInUp { | |
0% { | |
opacity: 0; | |
-webkit-transform: translateY(100px) | |
} | |
100% { | |
opacity: 1; | |
-webkit-transform: translateY(0) | |
} | |
} | |
@-moz-keyframes fadeInUp { | |
0% { | |
opacity: 0; | |
-moz-transform: translateY(100px) | |
} | |
100% { | |
opacity: 1; | |
-moz-transform: translateY(0) | |
} | |
} | |
#canvas{ | |
margin: 200px auto; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment