夜樱四重奏
2018-06-13 11:31
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
*{margin: 0; padding: 0;}
ul,li{list-style: none;}
ul li{width:200px;height:100px;background:yellow;opacity:0.3;filter:alpha(opacity:30);border: #ccc 4px solid;}
</style>
</head>
<script type="text/javascript" src="js/move.js" ></script>
<script>
window.onload = function(){
var oLi=document.getElementById('li1');
oLi.onmouseover = function(){
startMove=(oLi,{width:400,height:200,opacity:100});
}
oLi.onmouseout = function(){
startMove=(oLi,{width:200,height:100,opacity:30});
}
}
</script>
<body>
<ul>
<li id="li1"></li>
</ul>
</body>
</html>
修改后的代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> *{margin: 0; padding: 0;} ul,li{list-style: none;} ul li{width:200px;height:100px;background:yellow;opacity:0.3;filter:alpha(opacity:30);border: #ccc 4px solid;} </style> </head> <script type="text/javascript" > 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)); } //speed var iSpeed = (json[attr] - iCur) / 8; iSpeed = iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed); //stop if(iCur != json[attr]) { flag = false; } if(attr == 'opacity') { obj.style.filter = 'alpha(opacity:'+ (iCur + iSpeed) +')'; obj.style.opacity = (iCur + iSpeed) / 100; } else { obj.style[attr] = iCur + iSpeed + 'px'; } } if(flag){ clearInterval(obj.timer); if(fn){ fn(); } } }, 30) } function getStyle(obj, attr) { if(obj.currentStyle) { return obj.currentStyle[attr]; } else { return getComputedStyle(obj, false)[attr]; } } </script> <script> window.onload = function(){ var oLi=document.getElementById('li1'); oLi.onmouseover = function(){ startMove(oLi,{width:400,height:200,opacity:100}); } oLi.onmouseout = function(){ startMove(oLi,{width:200,height:100,opacity:30}); } } </script> <body> <ul> <li id="li1"></li> </ul> </body> </html>
补充,你的另一些小错误:
代码块里
//你的代码 if(iCur == json[attr]){flag=false}; //正确代码 if(iCur != json[attr]){flag=false};
true写成了ture.
startMove(a,b,c,d)写成了startMove = (a,b,c,d)
还有一些没有写分号的错误,一行代码应该以括号或者分号结束.
你的 flag代码位置存在错误.
function(){ var flag = true; for(i in json){ //your codes if(flag){ clearInterval(obj.timer) } } }
正确的结构应该是:
1,设置flag.
2,for in循环你的代码.
3,判断flag
即如下:
function(){ flag = true for(i in json){ //你的代码 } if(flag){clearInterval(obj.timer)} }
function startMove(obj, json, fn) {
clearInterval(obj, timer);
obj.timer = setInterval(function() {
var flag = ture;
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));
}
//speed
var iSpeed = (json[attr] - iCur) / 8;
iSpeed = iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
//stop
if(iCur == json[attr]) {
flag = false;
}
if(attr == 'opacity') {
obj.style.filter = 'alpha(opacity:' + (iCur + iSpeed) + ')';
obj.style.opacity = (iCur + iSpeed) / 100;
} else {
obj.style[attr] = iCur + iSpeed + 'px'
}
if(flag){
clearInterval(obj.timer);
if(fn){
fn();
}
}
}
}, 30)
}
function getStyle(obj, attr) {
if(obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, false)[attr];
}
}
JS动画效果
113923 学习 · 1443 问题
相似问题