簡體   English   中英

將Fade合並到addClass jQuery中

[英]Incorporating Fade into addClass jQuery

我有這個簡單的代碼:

$('.featureItems li').hover(
       function(){ $(this).addClass('hover') },
       function(){ $(this).removeClass('hover') }
)

我如何結合淡入淡出效果,因此添加/刪除類更加漸進?

我需要animate()嗎?

謝謝

如果您還在使用jQuery UI,它會改進CSS添加/刪除方法,以便它們接受第二個參數,該參數是設置CSS轉換動畫的延遲(以毫秒為單位)。 要將變化設置為半秒的動畫,例如:

$('.featureItems li').hover(
   function(){ $(this).addClass('hover', 500) },
   function(){ $(this).removeClass('hover', 500) }
)

更新:

為了防止動畫隊列在快速懸停/輸出序列期間卡住或不一致,您還可以在啟動add / removeClass之前強制停止現有動畫:

$('.featureItems li').hover(
   function(){ $(this).stop(true).addClass('hover', 500) },
   function(){ $(this).stop(true).removeClass('hover', 500) }
)

繼@Dave Ward的回答之后,還有一個獨立的插件可以在你不想使用jQuery UI的情況下執行此操作。

除了@Dave Ward的回答之外,我還必須刪除removeClass stop(true)stop(true)部分,否則在第一次mouseover / mouseout后,mouseover部分停止工作:

$('.featureItems li').hover(
   function(){ $(this).stop(true).addClass('hover', 500) },
   function(){ $(this).removeClass('hover', 500) }
)

另一個非JavaScript的替代方法是在CSS中更改: .featureItems li以具有以下屬性:

.featureItems li {
    transition: transform 1s, background-color 1s;
    -moz-transition: -moz-transform 1s, background-color 1s;
    -webkit-transition: -webkit-transform 1s, background-color 1s;
    -o-transition: -o-transform 1s, background-color 1s;
}

然后,讓CSS3在您在.hover.hover任何更改之間進行.hover ,例如:

.hover {
    background-color: #DDD;
    transform:scale(1.1,1.1);
    -moz-transform:scale(1.1,1.1);
    -webkit-transform:scale(1.1,1.1);
    -o-transform:scale(1.1,1.1);
}

你可以在這里找到更多關於CSS3 Transitions的信息:

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Using_CSS_transitions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM