2012-09-12 7 views
9

私はa:afterを使用していますが、これにはright: Ypxが含まれています。jQueryを使用した疑似要素のアニメーション

要素(a:after)をYpxからZpxに移動するにはanimateメソッドをjQueryで使いたいのですが、どうすればいいですか?例えば

[link-text][after] 
[link-text]-- moving > --[after] 

私はちょうどa:hover:after { right: Zpx }をやって、アニメーションせずにそれを行う方法を知っているが、どのようにアニメーションで?

+0

jqueryでこれを行うことはできません。しかし、CSS3のアニメーションを使ってこれを実現できるかもしれませんが、CSS3以外のブラウザではサポートされません。もちろん、CSS3以外のブラウザでは一般的に ':after'疑似タグはサポートされません。 .. – Shmiddty

+0

@Shmiddty:どうしてですか? ':after'はCSS3の新機能ではありません。 – BoltClock

+0

@BoltClockそうです。それはCSS2で追加されました。私の間違い。 – Shmiddty

答えて

7

あなたがしようとしていることは非常にハッキーです。疑似要素をアニメートするのではなく、本当の要素を作ることを強くお勧めします。しかしながら、将来の参照のために:擬似要素をアニメーション化する唯一の方法は、

var styles = document.getElementById("pseudo-mover") 
var distance = 100; 

var move = function(){ 
    styles.innerHTML = ".box:after {left: " + distance + "px}"; 
    distance++; 
    if (distance < 200) 
     setTimeout(move, 30);  
} 

move() 

http://jsfiddle.net/X7aTf/

... styleタグを挿入しような実際のCSS、の値を変更することによって、これはバニラJSでありますただし、jqueryのanimatestepコールバックを使用して、jqueryのイージングおよびタイミング関数にフックすることができます。

+0

それはもちろん動作していますが、動作は滑らかではありません。私は将来、いくつかの解決策を待つべきだと思う。ありがとうございました。 – Luis

+0

いいえ、今後の解決策を待つことはありません(何もありません)。コードを変更し、疑似要素の代わりに実要素を使用する必要があります。 – Duopixel

+0

私ができる唯一のことはLink であり、それは意味論だとは思わないが、どう思いますか? – Luis

1

これを達成するためにCSS3トランジションを使うことができますが、悲しいことに、悲しいことですが、今のところFireFox 4+ではサポートされています。

http://jsfiddle.net/XT6qJ/1/

#foo:after{ 
    content:'!'; 
    display:inline-block; 
    border:solid 1px #f00; 
    padding:3px; 
    width:25px; 
    text-align:center; 
    -webkit-transition:margin-left 1s; 
    -moz-transition:margin-left 1s;  
    -ms-transition:margin-left 1s; 
    -o-transition:margin-left 1s;  
    transition:margin-left 1s;  
} 
#foo:hover:after{ 
    margin-left:100px;  
} 
+0

他の多くのブラウザでサポートされています:http://caniuse.com/css-transitions ...そうでなければ、あなたのコード内のプレフィックスのポイントは何でしょうか? – tuff

+1

@tuffはい、しかし疑似要素ではありません。 – Shmiddty

+0

残念ながら私は他のブラウザをサポートしていないので、CSS3のこのソリューションは私にとっては役に立たないでしょう。とにかくありがとう。 – Luis

-3

次の使用()の代わり。 Here's howあなたはそれを正確に達成することができます。

+1

-1完全に質問のポイントを逃した。これはCSS pseudo-elemts - ':after'セレクタです。 – frnhr

関連する問題