html绘制小球并跟随鼠标移动,Canvas跟随鼠标炫彩小球的实现
黄利好
转载
关注
0点赞·318人阅读
跟随鼠标炫彩小球
canvas没有让我失望,真的很有意思
实现效果
超级炫酷
实现原理
创建小球
给小球添加随机颜色,随机半径
鼠标移动通过实例化,新增小球
通过调用给原型新增的方法,来实现小球的动画效果
通过定时器不断地更新画布
实现过程
创建小球
通过创建函数收纳小球所有的样式,再通过实例化函数,将鼠标当前的位置传递给Ball函数,让通过实例化创建出来的小球,最后将创建出来的小球存入数组中,数组中以对象形式存放着每个小球的属性和属性值
function Ball(x, y, r) {
this.x = x
this.y = y
this.r = r
this.color = getRandom()//随机生成颜色
this.dx = parseInt(Math.random() * 10) - 5//生成随机移动的位置
this.dy = parseInt(Math.random() * 10) - 5//`-5`是让小球能向四周随机移动
ballArr.push(this)//添加小球
}
//监听鼠标移动事件
canvas.addEventListener('mousemove', function (e) {
new Ball(e.offsetX, e.offsetY, parseInt(Math.random() * 20))
/*实例化Ball为Ball对象通过__proto__来调用原型的方法*/
})
生成随机颜色
对于color这个属性,可以通过6位16进制的值来表示一种颜色
因此,可以通过随机产生一个6位的16进制数来做为随机颜色
将0到f这16个数存入数组中,通过随机生成6个0到16的索引值,这样就能通过数组的索引号随机的获取6个到0到f中的数了
split的作用是:以括号内的参数为标志符来分割字符串,返回数组
//设置随机颜色
function getRandom() {
var allType = '0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f'//16进制颜色
var allTypeArr = allType.split(',')//通过','分割为数组
var color = '#'
for (var i = 0i <6i++) {
//随机生成一个0-16的数
var random = parseInt(Math.random() * allTypeArr.length)
color += allTypeArr[random]
}
return color//返回随机生成的颜色
}
渲染小球
给函数的原型链中添加render方法,让每一个通过Ball函数实例化出来的对象,带有这些方法
这个函数的作用是,通过Ball的参数生成一个圆形,在实例化的时候,会生成一个对象,这个对象里就存放的x,y,r这些值
Ball.prototype.render = function () {
ctx.beginPath()//路径开始
ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2, false)//画圆,位置,半径
ctx.fillStyle = this.color//颜色
ctx.fill()//填充
}
更新小球信息
因为生成的小球x,y,r是固定的,所以小球的位置也是固定的,不会改变
因此需要通过改变每个小球的位置和半径让小球动起来,当小球的半径小于0时,调用remove方法将小球从数组中删除
/* 更新小球位置和半径 小于0时清除 */
Ball.prototype.update = function () {
this.x += this.dx//x改变
this.y += this.dy//y改变
this.r -= 0.1//半径减小
if (this.r <0) {
this.remove()//调用添加的remove方法
}
}
删除小球
这是上面调用的remove方法,当this也就是当前小球半径小于0时i,遍历整个数组,找到这个this,也就是”这个小球“,通过调用数组中的方法,删除掉数组的这个元素
splice(index,num) 方法可删除从 index 处开始删除num个元素
Ball.prototype.remove = function () {
for (var i = 0i <ballArr.lengthi++) {
if (ballArr[i] == this) {
ballArr.splice(i, 1)//找到这个小于0 的元素,删除
1.创建一个新的HTML文件百,该文件被称为测试。标题是“CSS实现的鼠标在导航栏上显示的超链接的下划线效果”。
2.在页面上写nav标签,放入三个超链接(首页,第一栏,第二栏),代码如下。
3.运行代码,效果如下。
4.使用backCSS来美化字体大小、颜色和导航字体的排列。守则如下。
5.运行代码,效果如下:可见,经过CSS样式美化,当鼠标经过时,显示蓝色。
6.使用CSS代码,实现鼠标在上面显示下划线效果,代码如下。
7.在浏览器中运行代码以达到预期的效果。
1、方法一,利用html特性,每个标签都有一个title属性。当鼠标hover在该标签内容上时,浏览器展示出该标签的title内容,让鼠标移走,内容消失,如下:div{
height:100px
width:100px
background-color: aqua
}
<div title="我是鼠标悬停展示的内容">文字内容文字内容</div>
.on a{color:#8B8B8Bbackground:#EFEFEF url(phone.png) no-repeat 10px -30px}加个这个就好了,因为你写了鼠标经过的时候添加了个当前样式,给当前样式下的a添加颜色。。
A标签的属性:
1、href :链接到的目标网址
2、color:超链接颜色
3、target:点击超链接后行为怎样发生
4、title:把鼠标放在超链接上,会显示title里的内容
4、font-size:超链接字体大小