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 .

lelaki jean
sumber
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

Tulang pangkal paha
sumber
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>

Reza Mamun
sumber
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