用 javascript 实现文本及背景的淡入淡出效果

许多人都喜欢给页面的元素加上一点变化,以便引起浏览者的注意,而淡入淡出可以算是用的人比较多的效果了,本文向您展示的是用 javascript 实现文本及背景的淡入淡出,不过需要注意的是:一定要把握好变化的度,否则只能起到负面效应。

用 javascript 实现文本及背景的淡入淡出效果 – 示例

<script type="text/javascript">
<!--
// 说明:用 javascript 实现文本及背景的淡入淡出效果
// 整理:http://www.CodeBit.cn

	// 分离RGB颜色 0:R | 1:G | 2:B
	function parseRGB(color, type)
	{
		var start, len, result;
		len = (color.length == 4)?1:2;
		start = type * len + 1;
		result = color.substr(start, len);
		if(result.length == 1) result += result;
		return parseInt(result, 16);
	}

	// 页面元素ID,源色彩,渐变色彩,淡入淡出步数,是否背景颜色(默认文字颜色)
	function fade(id, colorSource, colorFade, fadeStep, background)
	{
		var element = document.getElementById(id);

		// 分解源色彩
		var rSource = parseRGB(colorSource, 0);	//红 R
		var bSource = parseRGB(colorSource, 1);	//绿 G
		var gSource = parseRGB(colorSource, 2);	//蓝 B

		// 分解渐变色彩
		var rFade = parseRGB(colorFade, 0);
		var bFade = parseRGB(colorFade, 1);
		var gFade = parseRGB(colorFade, 2);

		// 步数统计
		var step = 0;

		// 设置定时器
		var fadeTimer = setInterval(
			function(){

				var tmpStep = fadeStep - step;

				// 由于 floor() 计算不准确,当达到指定步数后直接赋值源色彩
				if(step < fadeStep)
				{
					with(Math)
					{
						var rStep = floor((rSource - rFade) / tmpStep);
						var bStep = floor((bSource - bFade) / tmpStep);
						var gStep = floor((gSource - gFade) / tmpStep);
					}

					rFade += rStep;
					bFade += bStep;
					gFade += bStep;

					if(background)
					{
						element.style.backgroundColor = 'rgb('+rFade+','+bFade+','+gFade+')';
					}
					else
					{
						element.style.color = 'rgb('+rFade+','+bFade+','+gFade+')';
					}
				}
				else
				{
					if(background)
					{
						element.style.backgroundColor = colorSource;
					}
					else
					{
						element.style.color = colorSource;
					}

					// 清除定时器
					clearInterval(fadeTimer);
				}
				step ++;
			},
			50
		);
	}
//-->
</script>

示例代码:

<style type="text/css">
#test {
	background:#fff;
	border:1px solid #4B7705;
	color:#3BC209;
	text-align:center;
	width:550px;
	margin:0 auto;
}
</style>

<div id="test"><h2>用javascript实现文本及背景的淡入淡出效果</h2></div>

<div>
	<input type="button" value="背景淡入" onclick="fade('test','#3BC209','#fff',5,1)" />
	<input type="button" value="文字淡入" onclick="fade('test','#fff','#3BC209',5);" />
	<input type="button" value="文字淡出" onclick="fade('test','#3BC209','#fff',5);" />
	<input type="button" value="背景淡出" onclick="fade('test','#fff','#3BC209',5,1)" />
</div>

本文介绍的效果是本站编辑在名为『 风微柳细 』的 Blog 上发现的(原文名为:《用javascript实现文本的淡入淡出效果》),编辑随后征询了原作者的意见,原作者爽快的允许了本站转载,但是由于原作者写的代码命名规则不够清晰,不便于新手学习和二次开发,因此,本站按照原作者的思路重写了代码,并加上了“背景”的淡入淡出效果,在此,本站感谢原作者对本站的支持。

如果您对原作者及其 blog 感兴趣,可以通过下面的链接访问:
http://blog.iyi.cn/hily/archives/2006/08/javascript_4.html

关于 Artlover

有多年 web 开发经验,擅长领域 PHP / MySQL / CSS / Javascript / Zend Framework ,期望:在分享中共同成长。
此条目发表在 Javascript 分类目录,贴了 , , , , , , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>