canvas-vue彩色丝带展示 目录

文章目录

  • 前言
  • 推荐阅读
  • 原版代码
  • 自用版本
  • 结果展示

前言

  • 着重点在:位置的选择和色彩的选择

推荐阅读

  • 绘制随机不规则三角彩条——小谈EvanYou个人主页的实现
  • Evan You

原版代码

  • 暴力美学
<canvas></canvas>
<script>
// 事件的定义
// 如果使用触摸屏,当滚动时,将会阻止事件发生
document.addEventListener('touchmove', event => event.preventDefault());// 获取canvas画板对象,并进行基础设置的赋值
var c = document.getElementsByTagName('canvas')[0],x = c.getContext('2d'),pr = window.devicePixelRatio || 1,w = window.innerWidth,h = window.innerHeight,f = 90,q,m = Math,r = 0,u = m.PI*2,v = m.cos,z = m.random// canvas画板的长宽设置
c.width = w*pr
c.height = h*pr// 对画板里的内容进行放大
x.scale(pr, pr)
// 图像透明度设置
x.globalAlpha = 0.6// 清理出空间供绘图使用
function i(){x.clearRect(0,0,w,h)//三角形的起始坐标// f为初始值q=[{x:0,y:h*.7+f},{x:0,y:h*.7-f}]//第二个三角形的横坐标在范围内,就开始绘图while(q[1].x<w+f) d(q[0], q[1])
}function d(i,j){   // 开始绘画x.beginPath()// 连线两顶点x.moveTo(i.x, i.y)x.lineTo(j.x, j.y)// 求取第3个顶点var k = j.x + (z()*2-0.25)*f,n = y(j.y)x.lineTo(k, n)x.closePath()r-=u/-50x.fillStyle = '#'+(v(r)*127+128<<16 | v(r+u/3)*127+128<<8 | v(r+u/3*2)*127+128).toString(16)x.fill()q[0] = q[1]q[1] = {x:k,y:n}
}function y(p){var t = p + (z()*2-1.1)*freturn (t>h||t<0) ? y(p) : t
}document.onclick = i
document.ontouchstart = i
i()</script>

自用版本

  • 符合个人使用习惯
<canvas></canvas>
<script>
document.addEventListener('touchmove', event => event.preventDefault());let ctx = document.getElementsByTagName('canvas')[0],c = ctx.getContext('2d'),basePixel = window.devicePixelRatio || 1,width = window.innerWidth,height = window.innerHeight,startOffset = 90,coordinateArr,startRadius = 0,radius = Math.PI * 2;ctx.width = width * basePixel,
ctx.height = height * basePixel;c.scale(basePixel, basePixel),
c.globalAlpha = 0.6;// 事件调用
// 点击重绘和拖动重绘
document.onclick = initialPotray;
document.ontouchstart = initialPotray;
// 如果没有事件发生,初始绘制
initialPotray();function initialPotray(){c.clearRect(0,0,width,height);// first// 基于0.7height的位置对称coordinateArr = [    {x:0, y: height * .7 + startOffset},{x:0, y: height * .7 - startOffset}];// 让最后一个点跑出去,不至于最后狭小while(coordinateArr[1].x < width + startOffset) drawTraingleImage(coordinateArr[0],coordinateArr[1]);
}function drawTraingleImage(coor1,coor2){c.beginPath();c.moveTo(coor1.x, coor1.y);c.lineTo(coor2.x, coor2.y);// x取值在x2+[-22.5,157.5],如果大于宽度,跳出循环// y在y2+[-22.5,157.5]之间,如果大于高度,重新抽取let coor3 = {x: coor2.x + (Math.random()*2 - 0.25) * startOffset,y: reCalculate(coor2.y)};c.lineTo(coor3.x, coor3.y);c.closePath();startRadius -= radius / -50;// RGB转换// 内容数字可改c.fillStyle = '#' + (Math.cos(startRadius)*127 + 128<<16 |Math.cos(startRadius + radius/3)*127 + 128<<8 |Math.cos(startRadius + radius/3 * 2)*127 + 128).toString(16);c.fill();// 更换坐标coordinateArr[0] = coordinateArr[1],coordinateArr[1] = coor3;
}function reCalculate(yNum){let tmp = yNum + (Math.random()*2 - 1.1) * startOffset;return (tmp > height || tmp < 0) ? reCalculate(yNum) : tmp;
}</script>

结果展示


canvas-vue彩色丝带展示相关推荐

  1. canvas将彩色图片变为灰度图片理解问题

    一.问题发现 在阅读<JavaScript DOM 编程艺术>时,文中运用canvas将彩色图片变成灰度图片,有一部分代码段不太理解. 二.问题解决 getImageData方法返回每一个 ...

  2. vue大屏展示高度自适应

    vue大屏展示获取当前屏幕盖度 <template><div ref="bigshow"><!--大屏内容 --></div> &l ...

  3. vue实现人员展示页面

    vue实现人员展示页面 功能描述 实现人员展示 实现无限滚动添加 display.vue <template><div class="display">&l ...

  4. Vue 实现全景图展示

    Vue 实现全景图展示 全景图需要用鱼眼相机拍(720度),手机拍出来的会有折痕 下载依赖 npm install three --save npm install photo-sphere-view ...

  5. Vue 彩色头像|一个有趣的头像生成器 附源码

    前言 这是一款矢量风格的头像生成器,您可以搭配不同的素材组件,生成属于您自己的个性化头像. 介绍 您可能感兴趣的功能: 可视化组件配置栏 随机生成头像 重做/撤消 国际化 批量生成多个头像 在线体验 ...

  6. web前端:canvas动画彩色气泡,原生js类直播间点赞效果实现

    1.气泡事件-随机位置/颜色梦幻全屏 1.less * {margin: 0;padding: 0;}html {height: 100%;overflow: hidden;body {height: ...

  7. ArcGIS API+Canvas +Vue框架 制作前端地图打印功能

    将ArcGIS Pro 桌面打印制图功能搬到前端页面上 实现BS端打印制图功能 简介 地图框 冲突 拖拽 放大缩小 标题 图例 图例储存 图例获取 图例摆放 比例尺 scale属性 格式化 指北针 预 ...

  8. vue+three.js展示nrrd+vtk3D模型-vue框架集成(下)

    nrrd3D模型文件.vtk3D模型文件vue如何使用 话不多说,直接上图 小白的坎坷路程 网上资源视频关于nrrd模型和vtk模型是真的少,公司都没有接触过这方面,职场小白, 累死了要.大家有同感可 ...

  9. Vue关于pdf展示问题——第三方电子签章不能正常展示

    在项目开发过程中,如果我们只需要展示pdf,那么我们可以选择vue-pdf,可以查看我之前的一篇:https://blog.csdn.net/AnnaF/article/details/1058660 ...

最新文章

  1. JAVA的OPENGL,JOGL入门实例----不断变色的点阵 (源代码)
  2. python数据分析方向_python数据分析方向,面试题解答
  3. python原始web与django框架 mvc模式开发
  4. Linux中ifcfg-eth0配置参数解释
  5. 利用java求积分(定积分和无穷限积分)
  6. 施密特正交化_夜思 | 为什么非实对称矩阵对应的特征向量不能施密特正交化?...
  7. 智慧交通综合管理平台建设方案
  8. 欧洲语言框架A1到C2,法语等级 A1、A2、B1、B2、C1、C2
  9. 瑞星杀毒软件网络版2012支持Web日志访问
  10. 计算机系统时间在哪改,win10系统日期时间在哪里修改?win10修改电脑时间的方法...
  11. 变量的存储类别 extern static atuo register
  12. 查看elasticserc版本_Elasticsearch版本和客户端介绍
  13. P3110 [USACO14DEC]驮运Piggy Back-最短路,spfa
  14. java中 输入地址,查询经纬度坐标实例
  15. ppt怎么制作抖音快手快闪效果的倒计时动画?
  16. 我花了一个五一终于搞懂了OpenLDAP
  17. 看完电影 Sicko和 Fahrenheit 9-11 多遍的感想
  18. 织梦DEDECMS 整合Kindeditor编辑器美化版nkeditor版可H5多图上传摒弃SWF上传
  19. php 代付功能_PHP之RSA2加密解密(接入微众银行代付功能过程中使用)
  20. 请求各位大神 只有微信头像和昵称怎么查到微信号

热门文章

  1. TCP协议-TCP服务特点和头部结构
  2. 【网络安全】还在担心网络诈骗?让OneDNS替你揽下一切
  3. 大数据和云计算技术周报(第101期)
  4. 【清橙 A1206】小Z的袜子(莫队算法)
  5. 那些让我印象深刻的bug--02
  6. jQuery源码分析系列目录
  7. python画余弦曲线_使用python画圆以及正弦余弦曲线
  8. 程序员,隐藏的段子手
  9. k8s健康检查(七)
  10. 华为认证云服务工程师(HCIA-Cloud Service)-- 练习题1