android系统定制开发HTML跳动爱心代码|最近很火的爱心代码你还没收到吗

android系统定制开发最近很火的跳动爱心代码HTML实现可DIY


看效果


点个赞吧,养成好习惯
不想动手的小伙伴可以直接👇👇
直接提取
DIY版----提取码: f30q

使用说明

  • 主体代码来源于网络,让我们为原作者点赞👍
  • 我用css3的animate和@keyframes帧动画加了一个跳动效果
.heart {    animation: heart 1s infinite ease-in-out;}@keyframes heart {    0%,    100% {        transform: rotate(-2deg) scale(1);    }    50% {        transform: rotate(2deg) scale(1.12);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 可自行修改爱心颜色
context.fillStyle = "#dc4b61";//自定义爱心颜色
  • 1
  • 修改基础参数
var settings = {    particles: {        length: 520, // 爱心数量        duration: 5, // 数值变大向内收缩        velocity: 100, // 移动速度        effect: 0.75, //正值外发散        size: 60, // 大小    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • DIY输入自定义文字实现
    • 我用了一个简单的输入框和按钮实现
input {    font-size: 1.375rem;    color: #ff437b;	/*这里修改文字颜色*/    text-align: center;    background: none;}<div class="text_box">    <input type="text" id="text" placeholder="送给你的那个[Ta]️">    <button id="btn" onclick="fn()">❤️</button></div><script>    function fn() {        var a1 = document.querySelector('#text');        var btn = document.querySelector('#btn');        a1.style.border = 'none';        btn.parentNode.removeChild(btn);//点击爱心后移除元素    }</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 其他效果背景/文字/图片 就看大家自由发挥了

源代码部分

<!DOCTYPE html><html lang="zh">	<head>		<meta charset="UTF-8">		<meta http-equiv="X-UA-Compatible" content="IE=edge">		<title>DIY跳动爱心</title>		<style>			* {				padding: 0;				margin: 0;			}			body {				height: 600px;				padding: 0;				margin: 0;				background: #000;				display: flex;				justify-content: center;				align-items: center;			}			.container {				width: 500px;				height: 500px;				position: relative;			}			canvas {				z-index: 99;				position: absolute;				width: 500px;				height: 500px;			}			.text_box {				text-align: center;				position: absolute;				font-size: 1.125rem;				top: 36%;				left: 22%;				color: #ff437b;				z-index: 100;			}			input {				font-size: 1.375rem;				color: #ff437b;				text-align: center;				background: none;			}			button {				font-size: 1.375rem;				border: none;				border-radius: 4px;			}			input::input-placeholder {				color: #dc4b61;			}			input::-webkit-input-placeholder {				color: #dc4b61;			}			.heart {				animation: heart 1s infinite ease-in-out;			}			@keyframes heart {				0%,				100% {					transform: rotate(-2deg) scale(1);				}				50% {					transform: rotate(2deg) scale(1.12);				}			}		</style>	</head>	<body>		<div id="jsi-cherry-container" class="container ">			<!-- 爱心 -->			<canvas id="pinkboard" class="container heart"> </canvas>			<!-- 输入你需要的文字 -->			<div class="text_box">				<input type="text" id="text" placeholder="送给你的那个[Ta]️">				<button id="btn" onclick="fn()">❤️</button>			</div>		</div>	</body>	<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>	<script>		function fn() {			var a1 = document.querySelector('#text');			var btn = document.querySelector('#btn');			a1.style.border = 'none';			btn.parentNode.removeChild(btn);			console.log("点关注不迷路!");		}	</script>	<script>		/*		 * Settings		 */		var settings = {			particles: {				length: 500, // maximum amount of particles				duration: 2, // particle duration in sec				velocity: 100, // particle velocity in pixels/sec				effect: -0.75, // play with this for a nice effect				size: 30, // particle size in pixels			},		};		(function() {			var b = 0;			var c = ["ms", "moz", "webkit", "o"];			for (var a = 0; 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(0, 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);				};			}		})();		/*		 * Point class		 */		var Point = (function() {			function Point(x, y) {				this.x = typeof x !== "undefined" ? x : 0;				this.y = typeof y !== "undefined" ? y : 0;			}			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;		})();		/*		 * Particle class		 */		var Particle = (function() {			function Particle() {				this.position = new Point();				this.velocity = new Point();				this.acceleration = new Point();				this.age = 0;			}			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 = 0;			};			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;		})();		/*		 * ParticlePool class		 */		var ParticlePool = (function() {			var particles,				firstActive = 0,				firstFree = 0,				duration = settings.particles.duration;			function ParticlePool(length) {				// create and populate particle pool				particles = new Array(length);				for (var i = 0; i < particles.length; i++)					particles[i] = new Particle();			}			ParticlePool.prototype.add = function(x, y, dx, dy) {				particles[firstFree].initialize(x, y, dx, dy);				// handle circular queue				firstFree++;				if (firstFree == particles.length) firstFree = 0;				if (firstActive == firstFree) firstActive++;				if (firstActive == particles.length) firstActive = 0;			};			ParticlePool.prototype.update = function(deltaTime) {				var i;				// update active particles				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 = 0; i < firstFree; i++) particles[i].update(deltaTime);				}				// remove inactive particles				while (					particles[firstActive].age >= duration &&					firstActive != firstFree				) {					firstActive++;					if (firstActive == particles.length) firstActive = 0;				}			};			ParticlePool.prototype.draw = function(context, image) {				// draw active particles				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 = 0; i < firstFree; i++) particles[i].draw(context, image);				}			};			return ParticlePool;		})();		/*		 * Putting it all together		 */		(function(canvas) {			var context = canvas.getContext("2d"),				particles = new ParticlePool(settings.particles.length),				particleRate =				settings.particles.length / settings.particles.duration, // particles/sec				time;			// get point on heart with -PI <= t <= PI			function pointOnHeart(t) {				return new Point(					160 * Math.pow(Math.sin(t), 3),					130 * Math.cos(t) -					50 * Math.cos(2 * t) -					20 * Math.cos(3 * t) -					10 * Math.cos(4 * t) +					25				);			}			// creating the particle image using a dummy canvas			var image = (function() {				var canvas = document.createElement("canvas"),					context = canvas.getContext("2d");				canvas.width = settings.particles.size;				canvas.height = settings.particles.size;				// helper function to create the path				function to(t) {					var point = pointOnHeart(t);					point.x =						settings.particles.size / 2 +						(point.x * settings.particles.size) / 350;					point.y =						settings.particles.size / 2 -						(point.y * settings.particles.size) / 350;					return point;				}				// create the path				context.beginPath();				var t = -Math.PI;				var point = to(t);				context.moveTo(point.x, point.y);				while (t < Math.PI) {					t += 0.01; // baby steps!					point = to(t);					context.lineTo(point.x, point.y);				}				context.closePath();				// create the fill				context.fillStyle = "#dc4b61";				context.fill();				// create the image				var image = new Image();				image.src = canvas.toDataURL();				return image;			})();			// render that thing!			function render() {				// next animation frame				requestAnimationFrame(render);				// update time				var newTime = new Date().getTime() / 1000,					deltaTime = newTime - (time || newTime);				time = newTime;				// clear canvas				context.clearRect(0, 0, canvas.width, canvas.height);				// create new particles				var amount = particleRate * deltaTime;				for (var i = 0; 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					);				}				// update and draw particles				particles.update(deltaTime);				particles.draw(context, image);			}			// handle (re-)sizing of the canvas			function onResize() {				canvas.width = canvas.clientWidth;				canvas.height = canvas.clientHeight;			}			window.onresize = onResize;			// delay rendering bootstrap			setTimeout(function() {				onResize();				render();			}, 10);		})(document.getElementById("pinkboard"));	</script></html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385

分享结束,快去试试吧🎉🎉🎉

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发