Chuyển đổi màu nền


286

Tôi đang cố gắng tạo hiệu ứng chuyển tiếp background-colorkhi di chuột vào các mục menu, nhưng nó không hoạt động. Đây là mã CSS của tôi:

#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;
}

Đây #nav divlà một uldanh sách thực đơn của các mặt hàng.


Chỉ cần FYI, điều này hoạt động trong Firefox bây giờ. Đã thử nghiệm trong FF9.
C.Brown

Câu trả lời:


526

Theo tôi biết, các hiệu ứng chuyển đổi hiện đang hoạt động trong Safari, Chrome, Firefox, Opera và Internet Explorer 10+.

Điều này sẽ tạo ra hiệu ứng mờ dần cho bạn trong các trình duyệt này:

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>

Lưu ý: Như Gerald đã chỉ ra trong các nhận xét, nếu bạn đặt quá trình chuyển đổi a, thay vì trên a:hoverđó, nó sẽ mờ dần trở lại màu ban đầu khi chuột của bạn di chuyển ra khỏi liên kết.

Điều này cũng có thể có ích: CSS Nguyên tắc cơ bản: Chuyển tiếp CSS 3


38
Bạn cũng có thể đặt các hiệu ứng chuyển tiếp content #nav ađể mờ dần về bản gốc khi người dùng di chuyển chuột ra khỏi liên kết.
gak

2
Fiddle với di chuộtnhấp vào chuyển tiếp tại: jsfiddle.net/K5Qyx
Dem Pilafian

3
Sẽ không tốt hơn nếu đặt transition:cái không di chuột? Tôi nghĩ rằng mỗi khi người dùng di chuyển, quá trình chuyển đổi được biên dịch ..
Matej

1
@Illium Link đã chết
Ferdynator

2
CSS transitiondường như không thể xử lý màu của loại "tuyến tính tuyến tính" như có thể được kiểm tra ở đây . Và btw, câu trả lời của @ Ilium xứng đáng được đánh dấu là giải pháp.
Stacky

83

Đối với tôi, tốt hơn là đặt mã chuyển đổi với các bộ chọn gốc / tối thiểu hơn là với: hover hoặc bất kỳ bộ chọn bổ sung nào khác:

#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
Nó không phải là tốt hơn hay xấu hơn. Chỉ là nếu bạn chỉ định quá trình chuyển đổi trên bản lề, nó sẽ được làm động khi phần tử được di chuột và khi nó được "không di chuột". Trong khi nếu bạn áp dụng nó cho: hover, bạn sẽ có một hình ảnh động khi chuột vào, nhưng không phải khi nó rời đi.
LucasBeef

6
Giải pháp này là tổng thể tốt hơn. Hiệu ứng chuyển tiếp sẽ và sẽ được dự kiến ​​sẽ mờ dần khi di chuột và mờ dần khi mờ.
Chizzle
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.