慕粉18144024425
2017-01-09 22:40
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>同时运动</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
ul{
list-style: none;
}
ul li{
width: 400px;
height: 300px;
font-size: 12px;
background: pink;
border:4px solid blue;
filter:alpha(opacity:30);
opacity: 0.3;
}
</style>
<script src="js/move.js"></script>
<script type="text/javascript">
window.onload=function(){
var li=document.getElementById('li1');
li.onmouseover=function(){
startmove(li,{width:600,height:500,opacity:100,font:20});
}
li.onmouseout=function(){
startmove(li,{width:400,height:300,opacity:30})
}
}
</script>
</head>
<body>
<ul>
<li id="li1">dd</li>
</ul>
</body>
</html>
将font-size改为fontSize,使用驼峰写法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>同时运动</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
ul{
list-style: none;
}
ul li{
width: 400px;
height: 300px;
font-size: 12px;
background: pink;
border:4px solid blue;
filter:alpha(opacity:30);
opacity: 0.3;
}
</style>
<script src="js/move.js"></script>
<script type="text/javascript">
window.onload=function(){
var li=document.getElementById('li1');
li.onmouseover=function(){
startmove(li,{width:600,height:500,opacity:100},function(){
startmove(li,{font-size:18});
});
}
li.onmouseout=function(){
startmove(li,{width:400,height:300,opacity:30})
}
}
</script>
</head>
<body>
<ul>
<li id="li1">dd</li>
</ul>
</body>
</html>
function getstyle(obj,attr){
if (obj.currentStyle) {
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj,false)[attr];
}
}
//startmove(obj,{attr1:target1,attr2:target2}):同时传入多个属性与属性值
function startmove(obj,json,fn){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var flag=true;//假设所有的运动都到达目标值
for(var attr in json){
//取当前值
var icur=0;
if (attr=='opacity') {
icur=Math.round(parseFloat(getstyle(obj,attr))*100);
}else{
icur=parseInt(getstyle(obj,attr));
}
//算速度
var speed=(json[attr]-icur)/8;
speed=speed>0?Math.ceil(speed):Math.floor(speed);
//检测停止
//某一个属性到达目标值之后就会清除定时器,这时候如果其中有一个属性比较快到达目标值时,那么就会触发清除定时器,导致其它的属性还没有到达目标值,就被迫停止了。所以得让所有得属性到达目标值时才能关闭定时器
if (icur!=json[attr]) {
flag=false;
}
//如果属性是透明度的话要用if另做判断,因为透明度没有单位,和其他属性不一样
if (attr=='opacity') {
obj.style.filter='alpha(opacity:'+(icur+speed)+')';
obj.style.opacity=(icur+speed)/100;
}else{
obj.style[attr]=icur+speed+'px';
}
}
//如果所有的运动都到达目标值,那么就触发触发清除定时器,如果有外加函数,那么就再执行外加函数fn()
if (flag==true) {
clearInterval(obj.timer);
//如果有外加函数,就执行
if (fn) {
fn();
}
}
},30)
}
这问题貌似是少了单位px,或者em
startmove(li,{width:600,height:500,opacity:100,font:20});
startmove(li,{width:600,height:500,opacity:100,font-size:20});
font-size:20
JS动画效果
113925 学习 · 1443 问题
相似问题