【CODE】DOM、Jquery、D3.js字体放大缩小效果

2 篇文章 0 订阅

Dom方式的话,比较复杂一点,首先需要计算文字变换的范围,然后设置setInterval函数,变换结束时更需要clearInterval,代码如下:

function getFontsize(start, end, step){
	var fontsizelist = [];
	for(var t=start; t<=end; t+=step){
		fontsizelist.push(t);
	}
	for(var o=end-step; o>=start; o-=step){
		fontsizelist.push(o);
	}
	return fontsizelist;
}
var i = 0;
var sizerange = getFontsize(16, 50, 1);
function changeSize(){
	document.getElementById("div1").style.fontSize = sizerange[i]+"px";
	i++;
	if(i>sizerange.length)
		clearInterval(thread1);
		return false;
}
var thread1 = setInterval(changeSize, 20);

jquery因为有animate函数,所以非常简单,不过需要注意,这里不能用px来设置文字大小,否则会没有效果,代码如下:

$(document).ready(function(){
	// 注意,这里如果使用像素定义字体大小的话,无效。
	$("#div1").animate({fontSize:"3em"});
	$("#div1").animate({fontSize:"1em"});
});

现在d3.js很流行,所以也谢了一个,d3的动画需要用transition()和duration()配合使用,代码如下:

d3.select("#div1")
   	.transition()
    .duration(1000)
	.style("font-size", "50px")
   	.transition()
    .duration(1000)
    .style("font-size", "16px"); 

整体页面代码如下,注意修改jquery和d3的路径:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>字体放大缩小效果</title>
<style type="text/css">
#div1{
	width: 500px;
	height: 300px;
	line-height: 300px;
	text-align: center;
	font-size: 16px;
}
</style>
</head>
<body>
<div id="div1">字体放大缩小效果</div>

<script type="text/javascript" src="../js/jquery-1.9.1.js"></script>
<script src="../js/d3.js"></script>
<script type="text/javascript">
"use strict";
/* D3.js
d3.select("#div1")
   	.transition()
    .duration(1000)
	.style("font-size", "50px")
   	.transition()
    .duration(1000)
    .style("font-size", "16px"); 
*/

/* Dom
function getFontsize(start, end, step){
	var fontsizelist = [];
	for(var t=start; t<=end; t+=step){
		fontsizelist.push(t);
	}
	for(var o=end-step; o>=start; o-=step){
		fontsizelist.push(o);
	}
	return fontsizelist;
}
var i = 0;
var sizerange = getFontsize(16, 50, 1);
function changeSize(){
	document.getElementById("div1").style.fontSize = sizerange[i]+"px";
	i++;
	if(i>sizerange.length)
		clearInterval(thread1);
		return false;
}
var thread1 = setInterval(changeSize, 20);
*/

$(document).ready(function(){
	// 注意,这里如果使用像素定义字体大小的话,无效。
	$("#div1").animate({fontSize:"3em"});
	$("#div1").animate({fontSize:"1em"});
});

</script>
</body>
</html>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值