【七夕特效】 -- 满屏爱心

63 篇文章 0 订阅
订阅专栏
33 篇文章 1 订阅
订阅专栏
19 篇文章 0 订阅
订阅专栏

Canvas简介:

Canvas是HTML5的一个新特性,canvas又叫做画板。我们可以在canvas上绘制我们需要的图形。anvas本身是一个HTML元素,需要HTML元素的配合高度和宽度属性而定义出的一块可绘制区域,定义区域之后使用JavaScript的脚本绘制图像的HTML元素。

作用:它可以基本的绘制图形,进一步的制作照片,绘制动画,更进一步可以处理和渲染视频。

canvas有两个属性,一个是宽度(width),一个是高度(height)。宽度和高度可以使用内联的属性,如下所示:

    <canvas width="300px" height="150px" id="canvas">
        This is Canvas
        <img src="./backup.jpg" alt=""> 
    </canvas>

注意:低版本浏览器可能会不支持,且结尾的</canvas>标签不可省略。

没有设置宽高的画布默认width=300px;height=150px;

Canvas小案例:

满屏爱心滚动出现效果:

 实现代码如下;

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>七夕520爱心表白</title>
	<style>
		*{margin:0; padding:0;}
		body{ background-color: #1E1E1E; 		}
	</style>
</head>
<body>

	<canvas id="drawHeart"></canvas>

	<script>
		var hearts = [];
		var canvas = document.getElementById('drawHeart');
		var wW = window.innerWidth;
		var wH = window.innerHeight;
		// 创建画布
		var ctx = canvas.getContext('2d');
		// 创建图片对象
		var heartImage = new Image();
		heartImage.src = 'img/heart.svg';
		var num = 100;

		init();

		window.addEventListener('resize', function(){
			 wW = window.innerWidth;
			 wH = window.innerHeight;
		});
		// 初始化画布大小
		function init(){
			canvas.width = wW;
			canvas.height = wH;
			for(var i = 0; i < num; i++){
				hearts.push(new Heart(i%5));
			}
			requestAnimationFrame(render);
		}

		function getColor(){
			var val = Math.random() * 10;
			if(val > 0 && val <= 1){
				return '#00f';
			} else if(val > 1 && val <= 2){
				return '#f00';
			} else if(val > 2 && val <= 3){
				return '#0f0';
			} else if(val > 3 && val <= 4){
				return '#368';
			} else if(val > 4 && val <= 5){
				return '#666';
			} else if(val > 5 && val <= 6){
				return '#333';
			} else if(val > 6 && val <= 7){
				return '#f50';
			} else if(val > 7 && val <= 8){
				return '#e96d5b';
			} else if(val > 8 && val <= 9){
				return '#5be9e9';
			} else {
				return '#d41d50';
			}
		}

		function getText(){
			var val = Math.random() * 10;
			if(val > 1 && val <= 3){
				return 'always';
			} else if(val > 3 && val <= 5){
				return 'zzy';
			} else if(val > 5 && val <= 8){
				return 'taylor swift';
			} else{
				return 'I Love You';
			}
		}

		function Heart(type){
			this.type = type;
			// 初始化生成范围
			this.x = Math.random() * wW;
			this.y = Math.random() * wH;

			this.opacity = Math.random() * .5 + .5;

			// 偏移量
			this.vel = {
				x: (Math.random() - .5) * 5,
				y: (Math.random() - .5) * 5
			}

			this.initialW = wW * .5;
			this.initialH = wH * .5;
			// 缩放比例
			this.targetScale = Math.random() * .15 + .02; // 最小0.02
			this.scale = Math.random() * this.targetScale;

			// 文字位置
			this.fx = Math.random() * wW;
			this.fy = Math.random() * wH;
			this.fs = Math.random() * 10;
			this.text = getText();

			this.fvel = {
				x: (Math.random() - .5) * 5,
				y: (Math.random() - .5) * 5,
				f: (Math.random() - .5) * 2
			}
		}

		Heart.prototype.draw = function(){
			ctx.save();
			ctx.globalAlpha = this.opacity;
			ctx.drawImage(heartImage, this.x, this.y, this.width, this.height);
			ctx.scale(this.scale + 1, this.scale + 1);
  			if(!this.type){
  				// 设置文字属性
				ctx.fillStyle = getColor();
	  			ctx.font = 'italic ' + this.fs + 'px sans-serif';
	  			// 填充字符串
	  			ctx.fillText(this.text, this.fx, this.fy);
  			}
			ctx.restore();
		}
		Heart.prototype.update = function(){
			this.x += this.vel.x;
			this.y += this.vel.y;

			if(this.x - this.width > wW || this.x + this.width < 0){
				// 重新初始化位置
				this.scale = 0;
				this.x = Math.random() * wW;
				this.y = Math.random() * wH;
			}
			if(this.y - this.height > wH || this.y + this.height < 0){
				// 重新初始化位置
				this.scale = 0;
				this.x = Math.random() * wW;
				this.y = Math.random() * wH;
			}

			// 放大
			this.scale += (this.targetScale - this.scale) * .1;
			this.height = this.scale * this.initialH;
			this.width = this.height * 1.4;

			// -----文字-----
			this.fx += this.fvel.x;
			this.fy += this.fvel.y;
			this.fs += this.fvel.f;

			if(this.fs > 50){
				this.fs = 2;
			}

			if(this.fx - this.fs > wW || this.fx + this.fs < 0){
				// 重新初始化位置
				this.fx = Math.random() * wW;
				this.fy = Math.random() * wH;
			}
			if(this.fy - this.fs > wH || this.fy + this.fs < 0){
				// 重新初始化位置
				this.fx = Math.random() * wW;
				this.fy = Math.random() * wH;
			}
		}

		function render(){
			ctx.clearRect(0, 0, wW, wH);
			for(var i = 0; i < hearts.length; i++){
				hearts[i].draw();
				hearts[i].update();
			}
			requestAnimationFrame(render);
		}
	</script>
</body>
</html>

将以下代码命名为    heart.svg  与上面的html存放在同一级文件目录中即可打开运行。

<svg xmlns="http://www.w3.org/2000/svg" width="473.8px" height="408.6px" viewBox="0 0 473.8 408.6"><path fill="#d32932" d="M404.6,16.6C385.4,6.1,363.5,0,340,0c-41.5,0-78.5,18.9-103,48.5C212.3,18.9,175.3,0,133.8,0 c-23.3,0-45.3,6.1-64.5,16.6C27.9,39.5,0,83.4,0,133.9c0,14.4,2.4,28.3,6.6,41.2C29.6,278.4,237,408.6,237,408.6 s207.2-130.2,230.2-233.5c4.3-12.9,6.6-26.8,6.6-41.2C473.8,83.4,445.9,39.6,404.6,16.6z"/></svg>

爱心弹幕----使用HTML+CSS+JS等实现(效果+源码)】| 系统架构师 面试题:在进行系统架构设计时,如何选择适合的技术栈和编程语言?
追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光
08-03 1580
效果 源码 爱心弹幕.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>爱心</title> <style> *{margin:0; padding:0;} body{ background-color: #1E1E1E; } </style> </head> <body&g
html花瓣特效代码,网页上漂浮的花瓣
weixin_39555320的博客
06-07 1803
网页上漂浮的花瓣[ 发布者:在远方┊来源:本站整理┊时间:2006-08-19┊浏览:人次 ]该特效用到的图片:网页特效观止|JsCode.CN|---网页上漂浮的花瓣var no = 6; // snow numbervar speed = 12; // smaller number moves the snow fastervar snowflake = "http://www.jscode....
情人节程序员用HTML网页表白【生日快乐动画】HTML+CSS+JavaScript HTML5七夕情人节表白网页源码
最新发布
HTML网页设计 专注大学生网页设计
06-19 920
1 网页简介:基于HTML+CSS+JavaScript 制作七夕情人节表白网页、生日祝福、七夕告白、 求婚、浪漫爱情3D相册、炫酷代码,快来制作一款高端的表白网页送(他/她)浪漫的告白,制作修改简单,可自行更换背景音乐,文字和图片即可使用等任意html编辑软件进行运行及修改编辑等操作)。
cmd的自动心形表白
11-22
CMD之前文章的文件弄错了。现在我把它发在这里。关注我,支付C币就可以下载。快来下载吧!只用支付1个C币!!!
HTML5七夕情人节表白网页制作【粉色樱花雨3D相册】HTML+CSS+JavaScript
HTML网页设计
07-21 1万+
1 网页简介:基于 ,快来制作一款高端的表白网页送(他/她)浪漫的告白,制作修改简单,可自行更换背景音乐,文字和图片即可使用2.网页编辑:任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad++ 等任意html编辑软件进行运行及修改编辑等操作)。代码如下(示例):以下仅展示部分代码供参考~ 2.CSS代码 三、精彩专栏推荐: 看到这里了就 【点赞,好评,收藏】 三连 支持下吧,你的支持是我创作的动力。HTM
HTML基础案例之鲜花满屋
09-12
HTML中基础的静态页面制作,例子是以一个鲜花店的网页作为例子。
html动态爱心代码【一】(附源码)
热门推荐
weixin_74268571的博客
08-22 1万+
HTML动态爱心特效代码,内含完整源码,可以记事本简单开发
Canvas-七夕爱心祝福特效
08-16
【Canvas-七夕爱心祝福特效】是一个利用HTML5的Canvas元素和JavaScript技术打造的互动特效,主要用于在七夕节这样的浪漫节日中展示动态的心形图案,为节日增添温馨氛围。Canvas是HTML5的一个重要组成部分,它允许...
七夕礼物-让屏幕开满玫瑰花
08-12
这个程序显然是一种利用编程技术实现的创意表达方式,尤其是在节日时作为礼物分享,它能够让用户的电脑屏幕显示出满屏的玫瑰花,营造出浪漫的氛围。 首先,我们要理解的是“屏幕动画效果”的实现。这通常涉及到图形...
前端表白特效-情不知何起,却一往情深-从何问起呢(七夕表白特效CSDN@追光者♂)
08-22
这是近期完成的一个通过前端技术实现的---七夕表白特效,资源中包含完整的可执行文件(亦含完整注释),欢迎大家下载交流和学习。内容已经在博客中记录。另外,主页专栏“Python从入门到人工智能”持续更新中,也...
html5七夕情人节送花动画特效.zip
07-04
HTML5七夕情人节送花动画特效是一个利用现代Web技术,特别是HTML5,为庆祝中国传统节日七夕情人节而设计的一种互动体验。此动画效果通过JavaScript(JS)编程语言和相关的Web API来实现,旨在为用户呈现一种浪漫且...
七夕表白网页源代码合集
09-19
马上就快要到七夕了,珍藏了很久的表白网页源代码,华丽的网页效果加上动听的音乐,我相信你的他(她)一定会被你感动的。
易语言七夕表白源码-易语言
06-13
【易语言七夕表白源码】是一个以易语言编写的程序源代码,主要适用于游戏娱乐领域,特别是那些希望在七夕这个特殊的节日里通过个性化方式表达爱意的人。易语言是中国自主研发的一种简单易学的编程语言,其设计目标是...
Python实现发射爱心代码,Python情人节520表白代码
2301_76484015的博客
02-11 1337
Python实现发射爱心代码,Python情人节520表白代码
html5点赞仿抖音,仿抖音之——点赞动画
weixin_30636329的博客
06-21 1563
我这里做的是一个仿抖音点赞的动画,监听双击事件,在双击位置添加图片,对其进行一系列的缩放、移动、旋转、透明度的动画从而达到效果。效果图:制作思路:1.将该ViewGroup的事件通过touch方法传递给创建的SimpleOnGestureListener,将双击事件回调给onDoubleTap方法。2.在双击的坐标位置,添加一个ImageView,并设置大小和正确的左上边距。3.观察抖音点赞动画,...
直播点击心效果
施主请别摸老衲的脸
04-16 2083
&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;直播点击心效果&lt;/title&gt; &lt;style type="text/css"&gt; html, body { height: 100%;
撩妹/撩仔代码
Null - 滨
02-14 3226
撩妹/撩仔代码 @Null - 滨 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="icon" type="image/x-icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA2klEQVQ4T62TUQ6CMAyG2/GCByA
cmd表白代码雨_微信表白代码大全,微信表白代码大全2020
weixin_39928003的博客
11-07 5765
微信表白代码大全,相信很多小伙伴们不知道微信暗中表白的代码,下面就让小编给大家带来微信表白代码大全2020,一起来看看吧。 微信表白代码大全,微信表白代码大全2020 1.发送xoxO(会出现满屏亲亲) 2.发送mi manchi(会出现满屏小星星) 3.发送ohh(翻译:留在我身边) ...
樱花飞舞
diejian7742的博客
02-28 7436
<!doctype html> <html> <head> <meta charset="utf-8"> <title>樱花漫天飞舞</title> </head> <style> body { padding:0; margin:0; overflow:hidden; ...
520表白html5爱心代码
05-31
520表白HTML5爱心代码是一种用于表达爱意的特殊方式,它可以通过网页展示出一颗或多颗爱心,并且可以添加自定义的文字内容。以下是基本的实现方式: 1. 在网页上添加一个画布元素(Canvas)。 2. 使用JavaScript绘制一个或多个爱心形状,并且添加动画效果使得爱心能够移动或变化。 3. 通过CSS样式控制爱心的颜色、大小等属性。 4. 在HTML页面中添加相应的文字内容。 以下是一个简单的520表白HTML5爱心代码实现: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>520表白HTML5爱心代码</title> <style> canvas { position: absolute; top: 0; left: 0; z-index: -1; } </style> </head> <body> <canvas id="canvas"></canvas> <h1>我爱你,520!</h1> <script> var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); var width = window.innerWidth; var height = window.innerHeight; canvas.width = width; canvas.height = height; function random(min, max) { return Math.random() * (max - min) + min; } function drawHeart(x, y, size) { context.beginPath(); context.moveTo(x, y); context.bezierCurveTo(x + size / 2, y - size / 2, x + size, y + size / 2, x, y + size); context.bezierCurveTo(x - size, y + size / 2, x - size / 2, y - size / 2, x, y); context.fillStyle = 'rgb(' + Math.floor(random(0, 255)) + ',' + Math.floor(random(0, 255)) + ',' + Math.floor(random(0, 255)) + ')'; context.fill(); context.closePath(); } function animateHeart() { requestAnimationFrame(animateHeart); drawHeart(random(0, width), random(0, height), random(10, 100)); } animateHeart(); </script> </body> </html> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【七夕特效】 -- 满屏爱心 30452
  • gitee使用教程--初学者【超易懂】 7249
  • 【七夕情人节特效】-- canvas实现满屏爱心 3161
  • 【JavaScript】-- 利用JS实现全选/取消全选 3126
  • Vue入门【二】-- watch侦听器之普通监听与深度监听 2928

分类专栏

  • vue 15篇
  • 前端 63篇
  • webpack 1篇
  • CSS 19篇
  • ES6 5篇
  • TypeScript 2篇
  • JavaScript 33篇
  • Ajax 2篇
  • HTML5 4篇
  • 算法 1篇
  • jQuery 1篇

最新评论

  • 【七夕特效】 -- 满屏爱心

    m0_63755691: 他导入svg文件的路径不对

  • 【七夕特效】 -- 满屏爱心

    m0_63755691: 在他的基础上把HTML代码中的heartImage.src='img/heart.svg'; 改成heartimage.src='heart.svg'; 最终的意思是把img/heart.svg改成heart.svg

  • 【七夕特效】 -- 满屏爱心

    m0_74047135: 都是错的

  • 【七夕特效】 -- 满屏爱心

    m0_74109472: 可以换背景照片嘛

  • 【七夕特效】 -- 满屏爱心

    愛 / 滥 / 時: 第一个随便怎么命名,后缀是html,第二个就是你说的那个

大家在看

  • 大规模语言模型从理论到实践 大语言模型预训练数据
  • python+flask计算机毕业设计开放实验室网上预约系统(程序+开题+论文) 962
  • 基于微信小程序+SpringBoot+Vue的校园自助打印系统(带1w+文档) 181
  • 大规模语言模型从理论到实践 高效模型微调
  • 大规模语言模型从理论到实践 提示学习和语境学习 1194

最新文章

  • 【Vue】-- ♡关于vue的那些面试题♡
  • 【webpack】-- 基本模块化打包流程
  • 【axios】-- 一文带你入门axios
2022年79篇

目录

目录

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司网络优化网站降权邯郸网站优化地方广州快速关键词排名软件武汉站外网站优化菜鸟优化的网站黄山网站优化排名需要多少钱重庆怎么学关键词排名优化技巧网站 优化解读易速达关键词快速排名选用云速捷淮阴专业seo网站优化费用西安医疗关键词排名滨州网站优化价格盐城网站排名优化软件公司拉萨网站排名优化合川网站优化改版和平区网站优化推广济源搜索引擎关键词排名厂家南宁网站seo网站优化上海seo网站优化定制汕尾网站搜索优化冀州网站优化排名商丘优化网站排名哪家有实力泗水网站优化价格西安网站排名优化在哪里做网站制作优化qt冖云速捷舞钢关键词排名优化软件企业网站该如何建设和推广优化陕西企业关键词自然排名价格三门峡搜狗关键词排名优化技巧关键词和产品排名歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化