当前位置: 首页 > news >正文

canvas高级动画001:文字瀑布流

canvas实例应用100+ 专栏提供canvas的基础知识,高级动画,相关应用扩展等信息。
canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重要的帮助。

文章目录

    • 示例效果图
    • 示例源代码(共88行)
    • canvas基本属性
    • canvas基础方法

我们经常会看到一些科技场景,01数字不断交替下移或者扩散闪现等。这里是一个示例,通过setInterval的方式,来不断的绘制文字,形成瀑布流的状态。

示例效果图

在这里插入图片描述

示例源代码(共88行)


/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2023-11-25
*/
<template><div class="container"><div class="top"><h3>canvas文字瀑布流特效</h3><div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div></div><div class="dajianshi "><canvas id="dajianshi" width="1000" height="500"></canvas></div></div>
</template>
<script>export default {data() {return {}},mounted() {this.getdata()},methods: {getdata() {var canvas = document.getElementById('dajianshi');var context = canvas.getContext('2d');var fontSize = 16;var col = Math.floor(1000 / fontSize);var cpy = [];for (var i = 0; i < col; i++) {cpy[i] = 1;}//定义文字var str = "dajianshidajianshi";draw();setInterval(draw, 30);function draw() {context.beginPath();context.fillStyle = "rgba(0,0,0,0.05)";context.fillRect(0, 0, 1000, 500);context.font = "16px bold 微软雅黑 ";context.fillStyle = "#00cc33";for (var i = 0; i < col; i++) {var index = Math.floor(Math.random() * str.length);var x = i * fontSize;var y = cpy[i] * fontSize;context.fillText(str.charAt(index), x, y);if (y >= 500 && Math.random() > 0.98) {cpy[i] = 0; // 只要Math.random> 0.98 时才纵坐标从0开始写字}cpy[i]++;}}},}}
</script><style scoped>.container {width: 1000px;height: 600px;margin: 50px auto;border: 1px solid green;position: relative;}.top {margin: 0 auto 0px;padding: 10px 0;background: darkgreen;color: #fff;}.dajianshi {margin: 2px auto 0;width: 1000px;height: 500px;}
</style>

canvas基本属性

属性属性属性
canvasfillStylefilter
fontglobalAlphaglobalCompositeOperation
heightlineCaplineDashOffset
lineJoinlineWidthmiterLimit
shadowBlurshadowColorshadowOffsetX
shadowOffsetYstrokeStyletextAlign
textBaselinewidth

canvas基础方法

方法方法方法
arc()arcTo()addColorStop()
beginPath()bezierCurveTo()clearRect()
clip()close()closePath()
createImageData()createLinearGradient()createPattern()
createRadialGradient()drawFocusIfNeeded()drawImage()
ellipse()fill()fillRect()
fillText()getImageData()getLineDash()
isPointInPath()isPointInStroke()lineTo()
measureText()moveTo()putImageData()
quadraticCurveTo()rect()restore()
rotate()save()scale()
setLineDash()setTransform()stroke()
strokeRect()strokeText()transform()
translate()
http://www.lryc.cn/news/242227.html

相关文章:

  • 抽象类, 接口, Object类 ---java
  • SOAP 协议和 HTTP 协议:深入解读与对比
  • Unity发布IOS后,使用xcode打包报错:MapFileParser.sh:Permissiondenied
  • 2021年12月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • mac上Homebrew的安装与使用
  • YOLOv5 分类模型 预处理 OpenCV实现
  • 在arm 64 环境下使用halcon算法
  • H5(uniapp)中使用echarts
  • QLineEdit设置掩码Ip
  • 开源语音大语言模型来了!阿里基于Qwen-Chat提出Qwen-Audio!
  • 缓存雪崩、击穿、穿透及解决方案_保证缓存和数据库一致性
  • 仿 美图 / 饿了么,店铺详情页功能
  • Redis Cluster主从模式详解
  • Linux技能篇-非交互式修改密码
  • 记一次docker服务启动失败解决过程
  • npm ERR! node-sass@4.13.0 postinstall: `node scripts/build.js`
  • Java定时任务 ScheduledThreadPoolExecutor
  • Android Studio 显示build variants工具栏
  • c++八股文记录
  • C++ 指针进阶:动态分配内存
  • 点大商城V2.5.3分包小程序端+小程序上传提示限制分包制作教程
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于机器学习的车载 CAN 网络入侵检测
  • Jetson orin(Ubuntu20.04)不接显示器无法输出VNC图像解决办法以及vnc安装记录
  • LeetCode Hot100 108.将有序数组转为二叉搜索树
  • 微机原理_3
  • 4.操作系统常见面试题(2)
  • springboot 开启和关闭kafka消费
  • org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
  • 系统安全测试要怎么做?
  • Golang并发模型:Goroutine 与 Channel 初探