31

CSS3の色遷移を使用して、JQueryを使用してマークアップに追加された新しい要素にハイライトフェードカラー効果(黄色から透明)を適用したいと思います。

CSS

#content div {
    background-color:transparent;
    -moz-transition:background-color 2s;
    -webkit-transition:background-color 2s;
    -o-transition:background-color 2s;
    transition:background-color 2s;
}

#content div.new {
    background-color:yellow;
}

HTML

<div id="content"></div>
<a id="add-element" href="#">add new element</a>

JS

$('#add-element').click(function() {
    var newElement = $('<div class="new">new element</div>');
    $('#content').append(newElement);
    newElement.removeClass('new');
});

リンクをクリックすると、新しい要素が作成されます。そのクラスは「新規」(背景色は黄色)であり、HTMLマークアップに追加されます。「新しい」クラスをすぐに削除して、背景色を透明(またはその他の色)に移行できるようにする必要があります。新しい要素の背景色はすぐに透明に表示され、遷移効果がないため、明らかに間違っています。JQuery UIでこれを実行できることはわかっていますが、CSS3トランジションを使用したいと思います。

ここにjsfiddle:

http://jsfiddle.net/paulaner/fvv5q/

4

3 に答える 3

23

あなたのコードはほぼ完璧です。移行を機能させるには、何かをトリガーする必要があります。これは、スクリプトに 1 行のコードを追加することで実行できます。

$('#add-element').click(function() {
    var newElement = $('<div class="new">new element</div>');
    $('#content').append(newElement);
    // trigger on focus on newly created div
    newElement.focus();

    newElement.removeClass('new');
});

http://jsfiddle.net/UXfqd/

于 2012-10-10T08:21:17.223 に答える
4

これは醜いハックですが、うまくいくようです。もっと良い方法があると確信しています。

$('#add-element').click(function() {
    var newElement = $('<div class="new">new element</div>');
    $('#content').append(newElement);
    setTimeout(function(){
        newElement.removeClass('new');
    },0);
});

http://jsfiddle.net/fvv5q/22/

于 2012-10-10T08:11:44.507 に答える