当前位置: 首页 > 图文教程 > 网络编程 > Javascript > jQuery教程:超酷的文字变色效果

Javascript
在Z-Blog中运行代码[html][/html](纯JS版)
统一接口:为FireFox添加IE的方法和属性的js代码
网页自动刷新,不产生嗒嗒声的一个解决方法
驱动事件的addEvent.js代码
[原创]提供复制本站内容时出现,该文章转自IT学习网等字样的js代码
CSDN轮换广告图片轮换效果
一段多浏览器的"复制到剪贴板"javascript代码
Javascript中的常见排序算法
JS Common 2 之比较常用到的函数
非正则实现的只能输入汉字的输入框
CSDN上快速结贴的方法,JS实现
js eval木马代码,以后再分析吧
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
一个不错的可以检测多中浏览器的函数和其它功能
状态栏显示欢迎信息的脚本特效
关于文本限制字数的js代码
在你的网页中嵌入外部网页的方法
在IE中调用javascript打开Excel的代码(downmoon原作)
javascript实现动态增加删除表格行(兼容IE/FF)
javascript中获取选中对象的类型

Javascript 中的 jQuery教程:超酷的文字变色效果


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 400 ::
收藏到网摘: n/a

原作者是大名鼎鼎的Mootools和jQuery高手David Walsh,那个链接变色比较优雅一些。今天我要给大家带来一款更酷的文字变色效果。

看一下demo先.

正如你看到的那样,当你将鼠标放到文字上去的时候,文字就会变成五颜六色的。

其实这种效果来自于知名开源微博chyrp,它实现起来也并不难。基本原理是使用charAt()函数将文字打散并逐个设置字体颜色,当然,也要用到jquery的选择器和相关函数。

定义色彩数组先,这里定义了7个,当然可以定义更多。

var colors = ["#ff2e99", "#ff8a2d", "#ffe12a", "#caff2a", "#1fb5ff", "#5931ff", "#b848ff"]

核心函数:

1
2
3
4
5
6
7
8
9
10
11
12
function colorize(text) { var colorized = "" var bracket_color = "" for (i = 0; i < text.length; i++) { var index = Math.floor(Math.random()*7) if (text[i] == "(") bracket_color = colors[index] color = (bracket_color.length && (text[i] == "(" || text[i] == ")")) ? bracket_color : colors[index]//取色	colorized = colorized + '<span style="color: '+color+' !important">' + text.charAt(i) + '</span>' //重构	} return colorized
}

最后,使用jquery选择器将colorize()函数应用到相关对象上:

1
2
3
4
5
6
 $(".colorize").bind("mouseenter", function(){ $(this).data("text", $(this).text());	$(this).html(colorize($(this).text()));	}).bind("mouseleave", function(){	$(this).html($(this).data("text"));	});

这里使用了jquery的bind()函数绑定了两个事件:mouseenter和mouseleave,其实这样稍有些麻烦,我们可以简化一些,换做hover():

1
2
3
4
5
6
7
8
$(".colorize2").hover(	function(){	$(this).data("text", $(this).text());	$(this).html(colorize($(this).text()));	},	function(){	$(this).html($(this).data("text"));
});

当然,这个效果,并不是只能用于链接,只要是内容为文字的元素,都可以使用这个效果。想必这个对一般的高手,都不难吧,大家有没有更好的方法或者在其他框架上实现?请通过评论与我们分享吧!