Hiệu ứng mờ dần trên liên kết Hover?


134

trên nhiều trang web, chẳng hạn như http://www.clearleft.com , bạn sẽ nhận thấy rằng khi các liên kết được di chuột qua, chúng sẽ mờ dần thành một màu khác thay vì chuyển đổi ngay lập tức, hành động mặc định.

Tôi giả sử JavaScript được sử dụng để tạo hiệu ứng này, có ai biết làm thế nào không?


1
Cảm ơn bạn. Bây giờ, tôi hiểu cách tạo liên kết di chuột, chỉ là tôi đang cố gắng tìm ra cách tạo hiệu ứng mượt mà hơn cho các liên kết di chuột của mình.
Miles Henrichs

Câu trả lời:


327

Ngày nay mọi người chỉ sử dụng các chuyển đổi CSS3 vì nó dễ dàng hơn nhiều so với việc sử dụng JS , hỗ trợ trình duyệt khá tốt và nó chỉ đơn thuần là mỹ phẩm nên không thành vấn đề nếu nó không hoạt động.

Một cái gì đó như thế này hoàn thành công việc:

a {
  color:blue;
  /* First we need to help some browsers along for this to work.
     Just because a vendor prefix is there, doesn't mean it will
     work in a browser made by that vendor either, it's just for
     future-proofing purposes I guess. */
  -o-transition:.5s;
  -ms-transition:.5s;
  -moz-transition:.5s;
  -webkit-transition:.5s;
  /* ...and now for the proper property */
  transition:.5s;
}
a:hover { color:red; }

Bạn cũng có thể chuyển đổi các thuộc tính CSS cụ thể với các thời gian và chức năng nới lỏng khác nhau bằng cách tách từng khai báo bằng dấu phẩy, như vậy:

a {
  color:blue; background:white;
  -o-transition:color .2s ease-out, background 1s ease-in;
  -ms-transition:color .2s ease-out, background 1s ease-in;
  -moz-transition:color .2s ease-out, background 1s ease-in;
  -webkit-transition:color .2s ease-out, background 1s ease-in;
  /* ...and now override with proper CSS property */
  transition:color .2s ease-out, background 1s ease-in;
}
a:hover { color:red; background:yellow; }

Demo tại đây


@AndreiCristof: May mắn làm việc trong IE10 ! Không có tiền tố nhà cung cấp yêu cầu (đó là lạ).
Marcel

Tôi đã thử nghiệm cả hai và tôi hy vọng nếu tôi tìm thấy lý do chính xác rằng cách CSS không mượt mà và trôi chảy như cách jQuery. Vui long sửa cho tôi nêu tôi sai.
QMaster

Bạn đá! Giải thích tốt, đã giúp tôi rất nhiều bằng cách nhìn thấy nó.
plast1K

Thử nghiệm của tôi là với một hình ảnh, không phải là một liên kết.
Felipe

@FelipeMicaroniLalli tốt nhất để gửi một câu hỏi tôi đoán, chắc chắn nghe giống như một vấn đề cú pháp.
Marcel

9

Tôi biết trong câu hỏi bạn nêu "Tôi giả sử JavaScript được sử dụng để tạo hiệu ứng này" nhưng CSS cũng có thể được sử dụng, một ví dụ dưới đây.

CSS

.fancy-link {
   color: #333333;
   text-decoration: none;
   transition: color 0.3s linear;
   -webkit-transition: color 0.3s linear;
   -moz-transition: color 0.3s linear;
}

.fancy-link:hover {
   color: #F44336;
}

HTML

<a class="fancy-link" href="#">My Link</a>

Và đây là một JSFIDDLE cho đoạn mã trên!


Marcel trong một trong những câu trả lời chỉ ra rằng bạn có thể "chuyển đổi nhiều thuộc tính CSS", bạn cũng có thể sử dụng "tất cả" để tạo hiệu ứng cho phần tử với tất cả các kiểu: di chuột như bên dưới.

CSS

.fancy-link {
   color: #333333;
   text-decoration: none;
   transition: all 0.3s linear;
   -webkit-transition: all 0.3s linear;
   -moz-transition: all 0.3s linear;
}

.fancy-link:hover {
   color: #F44336;
   padding-left: 10px;
}

HTML

<a class="fancy-link" href="#">My Link</a>

Và đây là một JSFIDDLE cho ví dụ "tất cả"!


6

Bạn có thể làm điều này với JQueryUI:

$('a').mouseenter(function(){
  $(this).animate({
    color: '#ff0000'
  }, 1000);
}).mouseout(function(){
  $(this).animate({
    color: '#000000'
  }, 1000);
});

http://jsfiddle.net/dWCbk/


bạn không cần jqueryui cho điều đó, chỉ cần jquery
Juan

6
@Juan Không, jQuery chỉ có thể làm động "các giá trị số đơn" mà màu sắc không có (xem api.jquery.com/animate/#animation-properies ). Nhưng bạn thực sự không cần toàn bộ thư viện jQueryUI, chỉ cần plugin jQuery.Color, được nhúng vào jQueryUI.
Niclas Sahlin

@Niclas Sahlin. Tôi tìm thấy fiddle của bạn tìm kiếm chuyển tiếp CSS. Quá trình chuyển đổi JQuery-UI của bạn mượt mà hơn rất nhiều, tôi chắc chắn người dùng sẽ chú ý đến nó.
RubyRube

1
Có các giải pháp với css, đó là cách dễ thực hiện hơn
mhenkel

2

Hãy thử điều này trong css của bạn:

.a {
    transition: color 0.3s ease-in-out;
}
.a {
    color:turquoise;
}
.a:hover {
    color: #454545;
}
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.