用HTML5 Canvas创造视觉盛宴——动态彩色线条效果

这篇具有很好参考价值的文章主要介绍了用HTML5 Canvas创造视觉盛宴——动态彩色线条效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、程序代码

二、代码原理

三、运行效果


用HTML5 Canvas创造视觉盛宴——动态彩色线条效果,HTML,HTML5,Canvas,JavaScript,前端开发,Web开发

一、程序代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- 声明文档类型为XHTML 1.0 Transitional -->

<html xmlns="http://www.w3.org/1999/xhtml"> <!-- 定义文档命名空间为XHTML -->

<head>
 <title>视觉盛宴</title> <!-- 设置页面标题为“视觉盛宴” -->

 <script type="text/javascript">
 
window.onload = function () { // 当窗口加载完成时执行以下代码

	C = Math.cos; // 缓存Math对象的cos函数
	S = Math.sin; // 缓存Math对象的sin函数
	U = 0; // 设置变量U的初始值为0(用于记录鼠标位置)
	w = window; // 将window对象缓存在变量w中
	j = document; // 将document对象缓存在变量j中
	d = j.getElementById("c"); // 获取id为"c"的Canvas元素,并将其缓存在变量d中
	c = d.getContext("2d"); // 获取Canvas绘图上下文,并将其缓存在变量c中
	W = d.width = w.innerWidth; // 设置Canvas的宽度为窗口的宽度,并将其缓存在变量W中
	H = d.height = w.innerHeight; // 设置Canvas的高度为窗口的高度,并将其缓存在变量H中
	c.fillRect(0, 0, W, H); // 在Canvas上绘制一个黑色的矩形,覆盖整个画布(默认)

	c.globalCompositeOperation = "lighter"; // 设置全局合成操作为"lighter",即颜色叠加模式
	c.lineWidth = 0.2; // 设置线条宽度为0.2
	c.lineCap = "round"; // 设置线条的端点样式为圆形

	var bool = 0, t = 0; // 定义两个变量bool和t,初始值分别为0

	d.onmousemove = function (e) { // 当鼠标在Canvas上移动时执行以下代码

		if(window.T) { // 如果变量T存在,则执行以下代码

			if(D==9) { D=Math.random()*15; f(1); } // 如果变量D等于9,则将变量D设置为一个0到15之间的随机数,并调用函数f(1)

			clearTimeout(T); // 清除计时器T

		}

		X = e.pageX; // 获取鼠标的X坐标,并将其缓存在变量X中
		Y = e.pageY; // 获取鼠标的Y坐标,并将其缓存在变量Y中
		a=0; // 将变量a的值设置为0
		b=0; // 将变量b的值设置为0 
		A = X, // 将变量A的值设置为鼠标的X坐标
		B = Y; // 将变量B的值设置为鼠标的Y坐标
		R=(e.pageX/W * 999>>0)/999; // 计算半径R,根据鼠标的X坐标和窗口宽度的比例计算得出
		r=(e.pageY/H * 999>>0)/999; // 计算半径r,根据鼠标的Y坐标和窗口高度的比例计算得出
		U=e.pageX/H * 360 >>0; // 计算角度U,根据鼠标的X坐标和窗口高度的比例计算得出,并取整数部分
		D=9; // 将变量D的值设置为9
		g = 360 * Math.PI / 180; // 将变量g的值设置为360度对应的弧度值
		T = setInterval(f = function (e) { // 创建一个定时器T,每16毫秒执行一次函数f

			c.save(); // 保存当前的绘图状态

			c.globalCompositeOperation = "source-over"; // 设置合成操作为"source-over",即覆盖模式

			if(e!=1) { // 如果传入的参数不等于1,则执行以下代码

				c.fillStyle = "rgba(0,0,0,0.02)"; // 设置填充颜色为半透明黑色

				c.fillRect(0, 0, W, H); // 在Canvas上绘制一个黑色的矩形,覆盖整个画布(默认)

			}

			c.restore(); // 恢复之前保存的绘图状态

			i = 25; while(i --) { // 循环25次执行以下代码

				c.beginPath(); // 开始一个新的路径

				if(D > 450 || bool) { // 如果变量D大于450或bool为真,则执行以下代码

					if(!bool) { // 如果bool为假,则执行以下代码

						bool = 1; // 将bool设置为真

					}

					if(D < 0.1) { // 如果变量D小于0.1,则执行以下代码

						bool = 0; // 将bool设置为假

					}

					t -= g; // 减小角度t的值

					D -= 0.1; // 减小半径D的值

				}

				if(!bool) { // 如果bool为假,则执行以下代码

					t += g; // 增加角度t的值

					D += 0.1; // 增加半径D的值

				}

				q = (R / r - 1) * t; // 计算变量q的值,用于创建hypotrochoid(参考:http://en.wikipedia.org/wiki/Hypotrochoid)

				x = (R - r) * C(t) + D * C(q) + (A + (X - A) * (i / 25)) + (r - R); // 计算x坐标的值,根据hypotrochoid公式计算得出

				y = (R - r) * S(t) - D * S(q) + (B + (Y - B) * (i / 25)); // 计算y坐标的值,根据hypotrochoid公式计算得出

				if (a) { // 如果变量a的值存在,则执行以下代码

					c.moveTo(a, b); // 将当前绘图点移动到变量a和b所表示的位置

					c.lineTo(x, y) // 绘制一条直线到坐标(x, y)

				}

				c.strokeStyle = "hsla(" + (U % 360) + ",100%,50%,0.75)"; // 设置线条颜色为根据角度U计算得出的彩虹色

				c.stroke(); // 绘制线条

				a = x; // 将变量a的值设置为x坐标的值

				b = y; // 将变量b的值设置为y坐标的值

			}

			U -= 0.5; // 减小角度U的值

			A = X; // 将变量A的值设置为鼠标的X坐标

			B = Y; // 将变量B的值设置为鼠标的Y坐标

		}, 16); // 定时器每16毫秒执行一次函数f

	}

	j.onkeydown = function(e) { a=b=0; R += 0.05 } // 当按下键盘时执行以下代码,将变量a和b的值都设为0,并将半径R增加0.05

	d.onmousemove({pageX:300, pageY:290}) // 模拟鼠标移动事件,设置pageX为300,pageY为290

}

</script>

</head>

<body>
<canvas id="c"></canvas> <!-- 创建一个id为"c"的Canvas元素 -->
</body>

</html>

二、代码原理

该代码利用Canvas的绘图功能和数学函数,创建了一个动态的彩色线条效果,能够根据鼠标的移动和键盘的操作呈现不同的视觉效果。它使用了数学函数来计算线条的坐标和角度,并根据鼠标位置和窗口大小进行动态调整。代码首先获取Canvas元素,并设置其宽度和高度为窗口的宽度和高度。然后设置绘图上下文的属性,如颜色叠加模式、线条宽度和端点样式。在鼠标移动事件中,根据鼠标的位置计算出各种参数,包括半径、角度和颜色。然后使用循环和数学函数绘制彩色线条,线条的位置和颜色会随着时间和鼠标移动而变化。

  1. 声明文档类型为XHTML 1.0 Transitional。
  2. 定义文档命名空间为XHTML。
  3. 设置页面标题为“视觉盛宴”。
  4. <head>标签内包含了一个JavaScript脚本。
  5. JavaScript脚本中,使用了一些全局变量和函数。
  6. window.onload事件处理函数会在窗口加载完成后执行。
  7. 在函数中,缓存了一些常用的对象和元素,如Math对象、window对象、document对象和Canvas元素。
  8. 设置了Canvas的宽高为窗口的宽高。
  9. 使用Canvas的上下文进行绘制操作。
  10. 创建了一个鼠标移动事件处理函数,当鼠标在Canvas上移动时执行一些操作。
  11. 创建了一个定时器,每16毫秒执行一次函数f
  12. 函数f中,保存了当前的绘图状态,并设置了合成操作和样式。
  13. 使用while循环绘制一些形状,并根据鼠标位置和其他参数计算出坐标值。
  14. 更新一些变量的值。
  15. 在按键事件处理函数中,更新了一些变量的值。
  16. 模拟了一次鼠标移动事件。

三、运行效果

用HTML5 Canvas创造视觉盛宴——动态彩色线条效果,HTML,HTML5,Canvas,JavaScript,前端开发,Web开发

用HTML5 Canvas创造视觉盛宴——动态彩色线条效果,HTML,HTML5,Canvas,JavaScript,前端开发,Web开发

用HTML5 Canvas创造视觉盛宴——动态彩色线条效果,HTML,HTML5,Canvas,JavaScript,前端开发,Web开发

用HTML5 Canvas创造视觉盛宴——动态彩色线条效果,HTML,HTML5,Canvas,JavaScript,前端开发,Web开发文章来源地址https://www.toymoban.com/news/detail-829670.html

到了这里,关于用HTML5 Canvas创造视觉盛宴——动态彩色线条效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【HTML5】 canvas 绘制图形

    canvas 标签:可用于在网页上绘制图形(使用 JavaScript 在网页上绘制图像) 画布是一个矩形区域,通过控制其每一像素绘制路径、矩形、圆形、字符以及添加图像。 创建一个 canvas :width 和 height 是必备属性,id 是为了在 js 中获取改元素。 在 js 中绘制 canvas 2.0、方法属性 co

    2024年01月18日
    浏览(48)
  • html5学习笔记14-Canvas 图形

    https://www.runoob.com/html/html5-canvas.html Canvas 参考手册. https://www.runoob.com/tags/ref-canvas.html HTML5 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. 标签只是图形容器,您必须使用脚本来绘制图形。 你可以通过多种方法使用 canvas 绘制路径,盒、圆、字符以及添加图像。 创建一

    2024年02月11日
    浏览(54)
  • 关于HTML5画布canvas的功能

    一、画布的使用 1、首先创建一个画布(canvas) canvas id=”myCanvas” width=”200” height=”100” style=”border:1px solid #000000”/canvas 2、使用JavaScript来绘制图像 script Var c=document.getElementByID(“myCanvas”)//得到画布 Var ctx=c.getContext(“2d”);//得到画笔 Cxt.fillStyle=”#FF0000”;//填充颜色 Cxt

    2024年02月06日
    浏览(48)
  • 编程笔记 html5&css&js 032 HTML Canvas

    Canvas画布,就是可以用来画画的地方,不是用户在浏览器上画图,而是会javascript画图。这区别于直接载入一张图片,是可以根据需要进行绘制。 HTML canvas 元素用于通过脚本(通常是 JavaScript)动态地绘制图形。 canvas 元素只是图形的容器。您必须使用脚本来绘制实际的图形。

    2024年01月23日
    浏览(70)
  • HTML5 Canvas和Svg:哪个简单且好用?

    HTML5 Canvas 和 SVG 都是基于标准的 HTML5 技术,可用于创建令人惊叹的图形和视觉体验。 首先,让我们花几句话介绍HTML5 Canvas和SVG。 Canvas(通过 标签使用)是一个 HTML 元素,用于在用户计算机屏幕上动态绘制图形(线条、条形、图形等)。不过,canvas 元素只是信息的容器,绘图

    2024年02月13日
    浏览(52)
  • 情人节定制:HTML5 Canvas全屏七夕爱心表白特效

    “这个世界乱糟糟的而你干干净净可以悬在我心上做太阳和月亮。”,七夕节表白日,你要错过吗?如果你言辞不善,羞于开口的话,可以使用 html5 canvas 制作浪漫的七夕爱心表白动画特效,全屏的爱心和表白语,了解一下!  🌹 最后,祝天下有情人终成眷属 🌹

    2024年02月11日
    浏览(46)
  • HTML5 2d canvas 库 —— Fabric.js 和 Konva.js

    原生 canvas 的操作主要基于上下文,需要使用者自己从0开始去实现一些基本功能,比较复杂。而 canvas 库文件则封装好了许多便利的对象,使得用户可以在比较高级的层面上进行绘制。 Fabric.js 官网:Fabric.js Javascript Canvas Library Konva.js 官网:Konva 中文文档 中文API 优点: 比较老

    2024年02月12日
    浏览(34)
  • ❤️创意网页:HTML5 Canvas技术实现绚丽多彩的烟花特效教程

    ✨ 博主: 命运之光   🌸 专栏: Python星辰秘典 🐳 专栏: web开发(简单好用又好看) ❤️ 专栏: Java经典程序设计 ☀️ 博主的其他文章: 点击进入博主的主页 前言: 欢迎踏入我的Web项目专栏,一段神奇而令人陶醉的数字世界! 🌌 在这里,我将带您穿越时空,揭开属于

    2024年02月16日
    浏览(40)
  • HTML5 Canvas API制作一个简单的猜字单机游戏

    这篇文章主要介绍了借助HTML5 Canvas API制作一个简单的猜字单机游戏的实例分享,游戏中每局会自动生成一个字母,玩家按键盘来猜测该字母是哪一个,需要的朋友可以参考下 HTML代码 !doctype html   html lang=\\\"en\\\"       head           meta charset=\\\"utf-8\\\" /           script 

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包