JavaScript实现的鼠标响应颜色渐变效果完整实例
发布时间 - 2026-01-10 23:08:19 点击率:次本文实例讲述了JavaScript实现的鼠标响应颜色渐变效果。分享给大家供大家参考,具体如下:

运行效果图如下:
完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>颜色渐变实例</title>
<script type="text/javascript">
//--------------------------------------------------------------------
//基础类库:
//1.获取对象:
function $(id){
return typeof id=='string'?document.getElementById(id):id;
}
//2.添加事件监听:
function addEventHandler(oTarget,sEventType,fnHandler){
if(oTarget.addEventListener){
oTarget.addEventListener(sEventType,fnHandler,false);
}else if(oTarget.attachEvent){
oTarget.attachEvent("on"+sEventType,fnHandler);
}else{
oTarget["on"+sEventType]=fnHandler;
}
}
//3.自定"义产生对象"类:
var Class={
Create:function(){
return function(){
this.initialize.apply(this,arguments);
}
}
}
//4.对象属性合并:
Object.extend=function(destination,source){
for(var property in source){
destination[property]=source[property];
}
return destination;
}
//--------------------------------------------------------------------
var colorFade=Class.Create();
colorFade.prototype={
//1.类的初始化:
initialize:function(obj,options){
this._obj=$(obj);//当前要改变颜色的对象。
this._timer=null;//计时器。
this.SetOptions(options);//传入的数组参数。
this.Steps=Math.abs(this.options.Steps);
this.Speed=Math.abs(this.options.Speed);
//this._colorArr:用来寄存当前颜色的r.g.b信息。
this.StartColorArr=this._colorArr=this.getColorArr(this.options.StartColor);
this.EndColorArr=this.getColorArr(this.options.EndColor);
this.Background=this.options.Background;
//从开始到结束,r.g.b三种原色渐变的梯度值(即,每次渐变要增加/减少的值)。
this._stepAddValueArr=[this.getColorAddValue(this.StartColorArr[0],this.EndColorArr[0]),this.getColorAddValue(this.StartColorArr[1],this.EndColorArr[1]),this.getColorAddValue(this.StartColorArr[2],this.EndColorArr[2])];
//设置对象颜色:
this._setObjColor=this.Background?function(sColor){
this._obj.style.backgroundColor=sColor;
}:function(sColor){
this._obj.style.color=sColor;
};
this._setObjColor(this.options.StartColor);
//为对象添加事件:
var oThis=this;
addEventHandler(this._obj,"mouseover",
function(){
oThis.Fade(oThis.EndColorArr);
}
);
addEventHandler(this._obj,"mouseout",function(){
oThis.Fade(oThis.StartColorArr);
});
},
/*
2.对象属性初始化:
*/
SetOptions:function(options){
this.options={
StartColor: "#000000",
EndColor: "#ffffff",
Steps: 20,//渐变次数
Speed: 20,//渐变速度,即每隔多少(Speed)毫秒渐变一次。
Background: true//是否为对象背景渐变。
}
//合并属性:
Object.extend(this.options,options||{});
},
/*
3.得到某个颜色的"r.g.b"信息数组:
sColor:被计算的颜色值,格式为"#ccc000"。
返回的一个数组。
*/
getColorArr:function(sColor){
var curColor=sColor.replace("#","");
var r,g,b;
if(curColor.length>3){//六位值
r=curColor.substr(0,2);
g=curColor.substr(2,2);
b=curColor.substr(4,2);
}else{
r=curColor.substr(0,1);
g=curColor.substr(1,1);
b=curColor.substr(2,1);
r+=r;
g+=g;
b+=b;
}
//返回“十六进制”数据的“十进制”值:
return [parseInt(r,16),parseInt(g,16),parseInt(b,16)];
},
/*
4.得到当前原色值(r.g.b)渐变的梯度值。
sRGB:开始颜色值(十进制)
eRGB:结束的颜色值(十进制)
*/
getColorAddValue:function(sRGB,eRGB){
var stepValue=Math.abs((eRGB-sRGB)/this.Steps);
if(stepValue>0&&stepValue<1){
stepValue=1;
}
return parseInt(stepValue);
},
/*
5.得到当前渐变颜色的"r.g.b"信息数组。
startColor:开始的颜色,格式为"#ccc000";
iStep:当前渐变的级数(即当前渐变的次数)。
返回颜色值,如 #fff000。
*/
getStepColor:function(sColor,eColor,addValue){
if(sColor==eColor){
return sColor;
}else if(sColor<eColor){
return (sColor+addValue)>eColor?eColor:(sColor+addValue);
}else if(sColor>eColor){
return (sColor-addValue)<eColor?eColor:(sColor-addValue);
}
},
/*
6.开始渐变:
endColorArr:目标颜色,为r.g.b信息数组。
*/
Fade:function(endColorArr){
clearTimeout(this._timer);
var er=endColorArr[0],
eg=endColorArr[1],
eb=endColorArr[2],
r=this.getStepColor(this._colorArr[0],er,this._stepAddValueArr[0]),
g=this.getStepColor(this._colorArr[1],eg,this._stepAddValueArr[1]),
b=this.getStepColor(this._colorArr[2],eb,this._stepAddValueArr[2]);
this._colorArr=[r,g,b];
this._setObjColor("#"+Hex(r) + Hex(g) + Hex(b));
if(r!=er||g!=eg||b!=eb){
var oThis=this;
oThis._timer=setTimeout(function(){oThis.Fade(endColorArr)},oThis.Speed);
}
}
}
//返回16进制数
function Hex(i) {
if (i < 0) return "00";
else if (i > 255) return "ff";
else {
//十进制 转成 十六进制:
var str = "0" + i.toString(16);
return str.substring(str.length - 2);
}
}
</script>
</head>
<body>
<div id="test" style="height:40px;width:200px;border:1px solid red;">
嘻嘻!
</div>
<div id="test1" style="height:40px;width:200px;border:1px solid red;">
呵呵!
</div>
<div id="test2" style="height:40px;width:200px;border:1px solid red;">
哈哈!
</div>
</body>
<script type="text/javascript">
var colorFade01=new colorFade("test",{StartColor:'#000000',EndColor:'#8AD4FF',Background:true});
var colorFade02=new colorFade("test",{StartColor:'#8AD4FF',EndColor:'#000000',Background:false});
var colorFade03=new colorFade("test1",{StartColor:'#000000',EndColor:'#8AD4FF',Background:true});
var colorFade04=new colorFade("test1",{StartColor:'#8AD4FF',EndColor:'#000000',Background:false});
var colorFade05=new colorFade("test2",{StartColor:'#000000',EndColor:'#8AD4FF',Background:true});
var colorFade06=new colorFade("test2",{StartColor:'#8AD4FF',EndColor:'#000000',Background:false});
</script>
</html>
PS:这里再为大家推荐几款网页元素样式相关工具供大家参考使用:
在线特效文字/彩色文字生成工具:
http://tools./aideddesign/colortext
Firefox的Linear Gradients (线性渐变)在线调试工具:
http://tools./aideddesign/moz_LinearGradients
webkit内核safari/Chrome的Linear Gradients(线性渐变)在线调试工具
http://tools./aideddesign/webkit_LinearGradients
更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript事件相关操作与技巧大全》、《JavaScript切换特效与技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# JavaScript
# 鼠标响应
# 颜色渐变
# JS实现鼠标滑过链接改变网页背景颜色的方法
# 鼠标选择动态改变网页背景颜色的JS代码
# JS实现文字链接感应鼠标淡入淡出改变颜色的方法
# js随机颜色代码的多种实现方式
# JS实现随机颜色的3种方法与颜色格式的转化
# js获取随机颜色值的函数
# javascript生成随机颜色示例代码
# JavaScript随机生成颜色的方法
# js实现点击按钮后给Div图层设置随机背景颜色的方法
# JavaScript实现鼠标移入随机变换颜色
# 格式为
# 调试工具
# 相关内容
# 鼠标
# 计时器
# 数据结构
# 给大家
# 三种
# 更多关于
# 每隔
# 所述
# 几款
# 程序设计
# 转成
# 面向对象
# 自定
# 六位
# 再为
# 类库
# 嘻嘻
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
JavaScript如何实现路由_前端路由原理是什么
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
清除minerd进程的简单方法
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
如何在景安云服务器上绑定域名并配置虚拟主机?
如何快速辨别茅台真假?关键步骤解析
如何在云服务器上快速搭建个人网站?
高端云建站费用究竟需要多少预算?
如何快速搭建个人网站并优化SEO?
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
详解jQuery停止动画——stop()方法的使用
如何在阿里云ECS服务器部署织梦CMS网站?
JavaScript数据类型有哪些_如何准确判断一个变量的类型
公司门户网站制作流程,华为官网怎么做?
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel如何配置和使用缓存?(Redis代码示例)
详解Oracle修改字段类型方法总结
Laravel如何处理文件下载请求?(Response示例)
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
WordPress 子目录安装中正确处理脚本路径的完整指南
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
动图在线制作网站有哪些,滑动动图图集怎么做?
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
如何快速上传自定义模板至建站之星?
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Firefox Developer Edition开发者版本入口
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
三星、SK海力士获美批准:可向中国出口芯片制造设备
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
WEB开发之注册页面验证码倒计时代码的实现
Laravel如何使用withoutEvents方法临时禁用模型事件
香港服务器WordPress建站指南:SEO优化与高效部署策略
LinuxCD持续部署教程_自动发布与回滚机制

