亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

fn的透明度 報錯 并且沒有變化


<!DOCTYPE html>
<html lang="en">
<head>
? ?<meta charset="UTF-8">
? ?<title>Title</title>
? ?<style>
? ? ? ?div{
? ? ? ? ? ?width: 100px;
? ? ? ? ? ?height: 100px;
? ? ? ? ? ?background: blueviolet;
? ? ? ?}
? ?</style>
? ?<script src="startmove.js"></script>
? ?<script>
? ? ? ?window.onload=function () {
? ? ? ? ? ?var ax1=document.getElementsByTagName('div');
? ? ? ? ? ?for (var i=0;i<ax1.length;i++){
? ? ? ? ? ? ? ?ax1[i].onmouseover=function () {
? ? ? ? ? ? ? ? ? ?startMove(this,{width:200,height:200},function () {
? ? ? ? ? ? ? ? ? ? ? ?startMove(this,{opacity:30})
? ? ? ? ? ? ? ? ? ?});
? ? ? ? ? ? ? ?};
? ? ? ? ? ? ? ?ax1[i].onmouseout=function () {
? ? ? ? ? ? ? ? ? ?startMove(this,{width:100,height:100})
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ?</script>
</head>
<body>
<div id="li"></div>
<div></div>
<div></div>
</body>
</html>

function startMove(obj,json,fn){
? ?clearInterval(obj.timer);
? ?obj.timer=setInterval(function () {
? ? ? ?var flg =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 = 0;
? ? ? ? ? ?speed = (json[attr] - icur) / 8;
? ? ? ? ? ?speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
? ? ? ? ? ?//檢測停止
? ? ? ? ? ?if (icur != json[attr]) {
? ? ? ? ? ? ? ?flg=false;
? ? ? ? ? ?}
? ? ? ? ? ?if (attr == 'opacity') {
? ? ? ? ? ? ? ? ? ?//針對IE瀏覽器
? ? ? ? ? ? ? ? ? ?obj.style.filter = 'alpha(opacity:' + (icur + speed) + ')';
? ? ? ? ? ? ? ? ? ?//針對其他
? ? ? ? ? ? ? ? ? ?obj.style.opacity = (icur + speed) / 100;
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?else {
? ? ? ? ? ? ? ? ? ?obj.style[attr] = icur + speed + 'px';
? ? ? ? ? ? ? ?}
? ? ? ? ? ? }
? ? ? ?if (flg){
? ? ? ? ? ?clearInterval(obj.timer);
? ? ? ? ? ?if (fn){
? ? ? ? ? ? ? ?fn()
? ? ? ? ? ?}
? ? ? ?}
? ?},30)
}
function getStyle(obj,attr){
? ?if (obj.currentStyle){
? ? ? ?return obj.currentStyle[attr];
? ?}
? ?else{
? ? ? ?return getComputedStyle(obj,false)[attr];
? ?}
}

正在回答

2 回答

<!DOCTYPE?html>
<html>
<head>
???<meta?charset="UTF-8">
???<title>Title</title>
???<style>
???????div{
???????????width:?100px;
???????????height:?100px;
???????????background:?blueviolet;
???????????margin-bottom:?20px;
???????}
???</style>
???<script>
???????window.onload=function?()?{
???????????var?ax1=document.getElementsByTagName('div');
???????????for?(var?i=0;i<ax1.length;i++){
???????????????ax1[i].onmouseover=function?()?{
????????????????var?_this?=?this;
???????????????????startMove(_this,{width:200,height:200},function?()?{
???????????????????????startMove(_this,{opacity:30})
???????????????????});
???????????????};
???????????????ax1[i].onmouseout=function?()?{
????????????????var?_this?=?this;
???????????????????startMove(_this,{width:100,height:100})
???????????????}
???????????}
???????}
???????function?startMove(obj,json,fn){
????clearInterval(obj.timer);
????obj.timer=setInterval(function?()?{
???????var?flg?=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?=?0;
???????????speed?=?(json[attr]?-?icur)?/?8;
???????????speed?=?speed?>?0???Math.ceil(speed)?:?Math.floor(speed);
???????????//檢測停止
???????????if?(icur?!=?json[attr])?{
???????????????flg=false;
???????????}
???????????if?(attr?==?'opacity')?{
???????????????????//針對IE瀏覽器
???????????????????obj.style.filter?=?'alpha(opacity:'?+?(icur?+?speed)?+?')';
???????????????????//針對其他
???????????????????obj.style.opacity?=?(icur?+?speed)?/?100;
???????????????}
???????????????else?{
???????????????????obj.style[attr]?=?icur?+?speed?+?'px';
???????????????}
????????????}
???????if?(flg){
???????????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>
</head>
<body>
<div?id="li"></div>
<div></div>
<div></div>
</body>
</html>

其實還是this的問題

1 回復 有任何疑惑可以回復我~

?? ? ?startMove(this,{width:200,height:200},function () {
? ? ? ? ? ? ? ? ? ? ? ?startMove(this,{opacity:30})你的這個不能這樣寫啊,要寫成?startMove(this,{width:200,height:200,opacity:30});傳參的時候json直接就完成了啊,最后一個是回調函數,不能這樣調用的!

1 回復 有任何疑惑可以回復我~
#1

啊啊啊啊123

非也非也
2016-07-15 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JS動畫效果
  • 參與學習       113918    人
  • 解答問題       1502    個

通過本課程JS動畫的學習,從簡單動畫開始,逐步深入各種動畫框架封裝

進入課程

fn的透明度 報錯 并且沒有變化

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號