Transisi warna latar belakang


286

Saya mencoba membuat efek transisi background-colorketika melayang item menu, tetapi tidak berhasil. Ini kode CSS saya:

#content #nav a:hover {
    color: black;
    background-color: #AD310B;
    /* Firefox */
    -moz-transition: all 1s ease-in;
    /* WebKit */
    -webkit-transition: all 1s ease-in;
    /* Opera */
    -o-transition: all 1s ease-in;
    /* Standard */
    transition: all 1s ease-in;
}

Ini #nav divadalah uldaftar item menu .


Hanya FYI, ini berfungsi di Firefox sekarang. Diuji dalam FF9.
C. Brown

Jawaban:


526

Sejauh yang saya tahu, transisi saat ini berfungsi di Safari, Chrome, Firefox, Opera dan Internet Explorer 10+.

Ini akan menghasilkan efek fade untuk Anda di browser ini:

a {
    background-color: #FF0;
}

a:hover {
    background-color: #AD310B;
    -webkit-transition: background-color 1000ms linear;
    -ms-transition: background-color 1000ms linear;
    transition: background-color 1000ms linear;
}
<a>Navigation Link</a>

Catatan: Seperti yang ditunjukkan oleh Gerald dalam komentar, jika Anda menempatkan transisi pada a, alih-alih a:hoverakan memudar kembali ke warna asli ketika mouse Anda menjauh dari tautan.

Ini mungkin berguna, juga: Fundamental CSS: Transisi CSS 3


38
Anda juga dapat memasukkan transisi ke content #nav auntuk memudar kembali ke aslinya ketika pengguna memindahkan mouse dari tautan.
gak

2
Bermain biar dengan hover dan klik transisi di: jsfiddle.net/K5Qyx
Dem Pilafian

3
Bukankah lebih baik memasukkannya transition:ke non-hover? Saya pikir setiap kali pengguna melayang, transisi dikompilasi ..
Matej

1
@Illium Link sudah mati
ferdynator

2
CSS transitiontampaknya tidak dapat menangani warna sejenis "linear-gradient" seperti yang dapat diuji di sini . Dan btw, jawaban @Ilium layak untuk ditandai sebagai solusi.
Stacky

83

Bagi saya, lebih baik menempatkan kode transisi dengan penyeleksi asli / minimum daripada dengan: hover atau penyeleksi tambahan lainnya:

#content #nav a {
    background-color: #FF0;
    
    -webkit-transition: background-color 1000ms linear;
    -moz-transition: background-color 1000ms linear;
    -o-transition: background-color 1000ms linear;
    -ms-transition: background-color 1000ms linear;
    transition: background-color 1000ms linear;
}

#content #nav a:hover {
    background-color: #AD310B;
}
<div id="content">
    <div id="nav">
        <a href="#link1">Link 1</a>
    </div>
</div>


8
Bukannya lebih baik atau lebih buruk. Hanya saja jika Anda menentukan transisi pada lement itu sendiri, itu akan dianimasikan ketika elemen tersebut melayang-layang dan ketika ia "tidak dilayang-layang". Sementara jika Anda menerapkannya pada: hover, Anda akan memiliki animasi saat mouse masuk, tetapi tidak ketika ia pergi.
LucasBeef

6
Solusi ini secara keseluruhan lebih baik. Efek transisi akan dan harus diharapkan memudar pada hover, dan menghilang pada blur.
Chizzle
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.