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.