求助:只能出去不能回来,top值只能停在-25,可能是函数调用问题,但我不知
move.js代码如下:
function startMove(obj,json,fn){
var flag=true;
clearInterval(obj.timer);
obj.timer=setInterval(function(){
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(attr=='opacity'){
obj.style.filter='alpha(opacity:'+(icur+speed)+')';
obj.style[attr]=(icur+speed)/100;
}else{
obj.style[attr]=icur+speed+'px';
}
}
if(flag){
clearInterval(obj.timer);
if(fn){
fn();
}
}
},30)
}
function getStyle(obj,attr){
if(obj.currentStyle){
//IE
return obj.currentStyle[attr];
}else{
//Firefox
return getComputedStyle(obj,false)[attr];
}
}
主页面代码如下:
taobao
*{
margin:0;
padding:0;
}
#move{
width:600px;
margin:10px auto;
border:1px solid #ccc;
background: #567;
}
#move a{
display:inline-block;
width:70px;
height:80px;
border:1px solid #ddd;
border-radius:3px;
background-color: #fff;
text-align: center;
margin:10px 17px;
position: relative;
padding-top: 40px;
color:#9c9c9c;
font-size: 12px;
text-decoration: none;
line-height: 25px;
overflow: hidden;
}
p{
overflow: hidden;
display: inline-block;
bottom: 0;
position: absolute;
}
#move a i{
position: absolute;
top: 20px;
left:0;
display: inline-block;
width:100%;
text-align: center;
filter: alpha(opacity:100);
opacity: 1;
}
#move a:hover{
color:#f00;
}
#move img{
border:none;
}
<script type="text/javascript">
window.onload=function(){
var oMove=document.getElementById('move');
var aList=oMove.getElementsByTagName('a');
for(var i=0;i |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
有2个问题,1个建议;
JS上:var flag=true必须放到setInterval内,否则每次循环并不能初始化flag,flag就一直是false;
主页面代码的JS:onmouseover事件里最后一行opacity设置成100;透明度一直为0当然看不出效果了;
建议:
onmouseover替换成onmouseenter;
onmouseover会冒泡,当你鼠标移入触发,当鼠标慢慢移出来的时候,onmouseover事件还会触发一次;
替换成onmouseenter则不会冒泡;是否替换看自己需求,建议罢了 |
|
|
|
|