格豪网络建站网站设计套用模板

news/2025/9/23 23:43:45/文章来源:
格豪网络建站,网站设计套用模板,打开国外网站很慢怎么办,上海到北京高铁价格查询简介 在codepen上看到一个Canvas做的下雨效果动画#xff0c;感觉蛮有意思的。就研究了下#xff0c;这里来分享下#xff0c;实现技巧。效果可以见下面的链接。 霓虹雨: http://codepen.io/natewiley/full/NNgqVJ/ 效果截图#xff1a; Canvas动画基础 大家都知道感觉蛮有意思的。就研究了下这里来分享下实现技巧。效果可以见下面的链接。 霓虹雨: http://codepen.io/natewiley/full/NNgqVJ/ 效果截图 Canvas动画基础 大家都知道Canvas其实只是一个画板。我们可以应用canvas的api在上面绘制各种图形。Canvas 2D 的APIhttps://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D 那么Canvas绘制动画的步骤就是 绘制第一帧图形利用API绘图清空画板(应用clearRect()或fillRect())绘制下一帧动画 用什么来控制动画每一帧的绘制时间呢大家很容易想到 window.setInterval()和window.setTimeout()。没错用这两个也可以。除此之外后来又出现一个新的方法window.requestAnimationFrame(callback)。 requestAnimationFrame会告诉浏览器你要绘制一个动画。让浏览器要重绘时调用你指定的方法callback来绘制你的动画。使用方法如下 function anim() { ctx.fillStyle clearColor; ctx.fillRect(0,0,w,h); for(var i in drops){ drops[i].draw(); } requestAnimationFrame(anim); } 一般情况下优先使用requestAnimationFrame能保持动画绘制的频率和浏览器重绘的频率一致。不幸的是requestAnimationFrame的兼容性还不是很好。IE9以下和addroid 4.3以下好像不支持这个属性。不支持的浏览器要用setInterval或setTimeout做兼容。 雨滴下落效果 首先来讲讲雨滴下落的效果如何制作。雨滴其实是一个长方形然后加残影。残影的绘制可以说是雨滴下落的关键。残影是通过在前进的方向每一帧都绘制一个半透明的背景和一个长方形,然后前面绘制的图形叠加产生的效果。由于前进方向的图形最后绘制所以显得明亮后面的图形叠加的比较多所以视觉上减弱。整体看起来后面的就像残影。这里绘制具有透明度背景是关键,否则产生不了叠加效果。 那么来绘制个雨滴看看。首先准备一个画板:html代码 !DOCTYPE html html langen head meta charsetUTF-8 title霓虹雨/title meta nameviewport contentwidthdevice-width,initial-scale1.0 style typetext/css .bg { background: #000; overflow: hidden; } /style /head body classbg canvas idcanvas-club/canvas script typetext/javascript srcraindrop.js/script /body /html 我在js文件里绘制动画raindrop.js代码如下 var c document.getElementById(canvas-club); var ctx c.getContext(2d);//获取canvas上下文 var w c.width window.innerWidth; var h c.height window.innerHeight;//设置canvas宽、高 var clearColor rgba(0, 0, 0, .1);//画板背景,注意最后的透明度0.1 这是产生叠加效果的基础 function random(min, max) { return Math.random() * (max - min) min; } function RainDrop(){} //雨滴对象 这是绘制雨滴动画的关键 RainDrop.prototype { init:function(){ this.x random(0, w);//雨滴的位置x this.y 0;//雨滴的位置y this.color hsl(180, 100%, 50%);//雨滴颜色 长方形的填充色 this.vy random(4, 5);//雨滴下落速度 this.hit random(h * .8, h * .9);//下落的最大值 this.size 2;//长方形宽度 }, draw:function(){ if (this.y this.hit) { ctx.fillStyle this.color; ctx.fillRect(this.x, this.y, this.size, this.size * 5);//绘制长方形通过多次叠加长方形形成雨滴下落效果 } this.update();//更新位置 }, update:function(){ if(this.y this.hit){ this.y this.vy;//未达到底部增加雨滴y坐标 }else{ this.init(); } } }; function resize(){ w c.width window.innerWidth; h c.height window.innerHeight; } //初始化一个雨滴 var r new RainDrop(); r.init(); function anim() { ctx.fillStyle clearColor;//每一帧都填充背景色 ctx.fillRect(0,0,w,h);//填充背景色注意不要用clearRect否则会清空前面的雨滴导致不能产生叠加的效果 r.draw();//绘制雨滴 requestAnimationFrame(anim);//控制动画帧 } window.addEventListener(resize, resize); //启动动画 anim(); 涟漪效果 接着来绘制涟漪效果。与绘制雨滴的方式类似,也是通过具有透明度的背景来叠加前面的图像产生内阴影的效果。 代码如下rippling.js var c document.getElementById(canvas-club); var ctx c.getContext(2d);//获取canvas上下文 var w c.width window.innerWidth; var h c.height window.innerHeight;//设置canvas宽、高 var clearColor rgba(0, 0, 0, .1);//画板背景,注意最后的透明度0.1 这是产生叠加效果的基础 function random(min, max) { return Math.random() * (max - min) min; } function Rippling(){} //涟漪对象 这是涟漪动画的主要部分 Rippling.prototype { init:function(){ this.x random(0,w);//涟漪x坐标 this.y random(h * .8, h * .9);//涟漪y坐标 this.w 2;//椭圆形涟漪宽 this.h 1;//椭圆涟漪高 this.vw 3;//宽度增长速度 this.vh 1;//高度增长速度 this.a 1;//透明度 this.va .96;//涟漪消失的渐变速度 }, draw:function(){ ctx.beginPath(); ctx.moveTo(this.x, this.y - this.h / 2); //绘制右弧线 ctx.bezierCurveTo( this.x this.w / 2, this.y - this.h / 2, this.x this.w / 2, this.y this.h / 2, this.x, this.y this.h / 2); //绘制左弧线 ctx.bezierCurveTo( this.x - this.w / 2, this.y this.h / 2, this.x - this.w / 2, this.y - this.h / 2, this.x, this.y - this.h / 2); ctx.strokeStyle hsla(180, 100%, 50%, this.a ); ctx.stroke(); ctx.closePath(); this.update();//更新坐标 }, update:function(){ if(this.a .03){ this.w this.vw;//宽度增长 this.h this.vh;//高度增长 if(this.w 100){ this.a * this.va;//当宽度超过100涟漪逐渐变淡消失 this.vw * .98;//宽度增长变缓慢 this.vh * .98;//高度增长变缓慢 } } else { this.init(); } } }; function resize(){ w c.width window.innerWidth; h c.height window.innerHeight; } //初始化一个涟漪 var r new Rippling(); r.init(); function anim() { ctx.fillStyle clearColor; ctx.fillRect(0,0,w,h); r.draw(); requestAnimationFrame(anim); } window.addEventListener(resize, resize); //启动动画 anim(); 总结 这样大家对整个下雨效果的制作方法应该有一定的了解了。Canvas用来绘制动画的效果确实能让人眼前一亮让web的视觉效果提升一大截。发动自己的智慧相信能做出更多奇妙的动画。这是我越来越喜欢web的原因之一吧 O(∩_∩)O~~。 转载出处Web前端开发 » Canvas制作的下雨动画 本文转载于:猿2048➭https://www.mk2048.com/blog/blog.php?idckbahaatitleCanvas制作的下雨动画

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

佛山网站建设的公司vs2017网站开发

Ubuntu的字体目录存放在/usr/share/fonts目录下,可以看到该目录下有4个目录, 12$ ls /usr/share/fonts/cmap truetype type1 X11我们在truetype目录下新建一个adobe的目录来存放需要安装的Adobe中文字体,并把已经下载好的字体复制到该目录…

杭州餐饮网站建设吴忠市建设局官方网站

作为运维,多多少少会碰见这样那样的问题或故障,从中总结经验,查找问题,汇总并分析故障的原因,这是一个运维工程师良好的习惯。每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是…

网站建设术语解释北京广告设计有限公司

04——redis与mysql数据双写一致性 一、canal 是什么 canal[ka’nel,中文翻译为水道/管道/沟渠/运河,主要用途是用于MySQL数据库增量日志数据的订阅、消费和解析,是阿里巴巴开发并开源的,采用Java语言开发; 历史背景是早期阿里巴巴因为杭州和…

海南高端网站建设无忧网站建设多少钱

编写LED灯的驱动,使用GPIO子系统,里面添加按键的中断处理 1.应用程序发送指令控制发光二极管亮灭 2.按键1按下,led1电位反转;按键2按下,led2电位反转;按键3按下,led3电位反转 //头文件 #i…

JAVA的计算方式

原码是最简单的机器数表示法,用最高位表示符号位,其他位存放该数的二进制的绝对值。但原码最大的问题在于一个数加上它的负数不等于0,于是反码的设计思想就是为了解决这个问题。既然一个负数时一个正数的相反数,干…

玉山建设局网站宁波seo关键词引流

1、登录ArcGIS Server Manager 2、登录后,里面是以前自己发布的地图服务 3、点击自己发布的地图,然后按下功能选项,再点击箭头来找到URL 4、点击进去,分别能从红圈中找到相关的信息,分别为arcgis JavaScript&#xff0…

机械配件网站建设百度官网网址

随着互联网的发展,传统的纸质传单已经逐渐被电子版传单所取代。电子版传单不仅可以节省成本,还可以更好地展示房产信息。在传统的设计软件中制作电子版传单需要一定的门槛,但是现在有了乔拓云网的后台,设计电子版房产H5传单变得简…

有哪些可以在线做海报的网站建设学院实验室网站的作用

通俗一点讲map其实就是python的字典(学会python字典 c_map)!!! map和unordered_map都是C中的关联容器,用于存储键值对。其主要区别在于底层实现方式和性能表现。 1、底层实现方式   map内部使用红黑树(一种自平衡二叉查找树)来实现&…

深圳博纳网站建设phpnow wordpress

定时器简介 硬件定时器一般有 2 种工作模式,定时器模式和计数器模式。不管是工作在哪一种模式,实质都是通过内部计数器模块对脉冲信号进行计数。下面是定时器的一些重要概念。 计数器模式:对外部输入引脚的外部脉冲信号计数。 定时器模式&…

建设工程考试官方网站夜狼seo

动静态库 一、静态库1. 静态库概念2. 制作静态库(1)朴素方法 --- 不打包(2)对静态库打包 3. 使用静态库(1)朴素方法 --- 直接使用(2)使用打包好的静态库 二、动态库1. 动态库概念2. …

校内二级网站建设整改方案医疗保健 网站 备案

试卷代号:2083 信息技术与教育技术(2) 试题(开卷) 2019年1月 一、单选题(每小题4分,共6小题,24分) 1.以下关于系统科学的原理描述不正确的一项是( )。 A.反馈原理,是指…

邯郸网站优化怎么用简单大气网站源码

RequestParam使用 (1)不加RequestParam前端的参数名需要和后端控制器的变量名保持一致才能生效 (2)不加RequestParam参数为非必传,加RequestParam写法参数为必传。但RequestParam可以通过RequestParam(required fals…

网站建设咨询服务合同网上订货发货网站建设

SpringBoot集成Milvus2.3.4(2) |(实现向量的增删改查) 文章目录 SpringBoot集成Milvus2.3.4(2) |(实现向量的增删改查)@[TOC]前言一、Milvus数据库的新增1.新增数据二、Milvus删除数据1.删除数据三、Milvus更新数据1.更新数据四、Milvus查询数据1.查询数据总结章节 第一…

怎么做教育网站中国美院网站建设公司

美摄科技,作为技术创新的先驱,开发了一款独特的粒子类特效SDK,为专业内容创作者提供了一种全新的工具,以实现电影级的逼真特效。 一、技术背景与挑战 随着移动设备的普及和性能的提升,越来越多的视觉内容在移动端呈现…

安装 elasticsearch-9.1.4 - 集群 和 kibana-9.1.4

准备 3 台主机,均进行如下操作更新系统以及关联软件yum update关闭防火墙systemctl stop firewalld systemctl disable firewalld sed -i s/enforcing/disabled/ /etc/selinux/config setenforce 0设置主机名# lab10 …

反码 原码 补码

一、核心概念:原码、反码、补码(以 8 位二进制为例) 三者均针对“带符号数”(最高位为符号位:0 表示正数,1 表示负数),仅负数的编码规则不同,正数的原/反/补码完全一致。 编码类型 正数(以 +3 为例) 负数(…

.net网站c asp.net 发布网站

题目描述 计算公式:1-1/21/3-1/4……,求前面n(n≤10000)项和,结果保留小数点后面6位。 例如当n4时,和值为0.583333 当n10时,和值为0.645635 输入格式 一个正整数n 输出格式 求出的和值,保留小数点后面6位 …

上海轨道交通建设查询网站阳江房产网58同城网

文章目录 1、文件包含概述1.1 文件包含语句1.1.1、相关配置 1.2、动态包含1.2.1、示例代码1.2.2、本地文件包含1.2.3、远程文件包含 1.3、漏洞原理1.3.1、特点 2、文件包含攻防2.1、利用方法2.1.1、包含图片木马2.1.2、读取敏感文件2.1.3、读取PHP文件源码2.1.4、执行PHP命令2.…

网站建设犀牛云pageadmin是免费的吗

maven依赖关系中Scope的作用 Dependency Scope 在POM 4中&#xff0c;<dependency>中还引入了<scope>&#xff0c;它主要管理依赖的部署。目前<scope>可以使用5个值&#xff1a; * compile&#xff0c;缺省值&#xff0c;适用于所有阶段&#xff0c;会…

沈阳微信网站建设网站建设销售方面会遇到的问题

数据存储量比较大时&#xff0c;我就需要将数据存储在数据库中方便使用&#xff0c;尤其是制作管理系统时&#xff0c;它的用处就更大了。 在编写程序前&#xff0c;需要在Assets文件夹中创建plugins文件&#xff0c;将.dll文件导入&#xff0c;文件从百度网盘自取&#xff1a;…