Fade Effect บน Link Hover?


134

ในหลาย ๆ ไซต์เช่นhttp://www.clearleft.comคุณจะสังเกตเห็นว่าเมื่อลิงก์ถูกวางไว้เหนือลิงก์เหล่านี้จะจางหายไปเป็นสีที่แตกต่างกันเมื่อเทียบกับการเปลี่ยนทันทีซึ่งเป็นการกระทำเริ่มต้น

ฉันคิดว่า JavaScript ใช้เพื่อสร้างเอฟเฟกต์นี้มีใครรู้บ้างไหม?


1
ขอบคุณ. ตอนนี้ฉันเข้าใจวิธีสร้างลิงก์แบบวางเมาส์แล้วฉันกำลังพยายามหาวิธีสร้างเอฟเฟกต์ที่ราบรื่นขึ้นสำหรับลิงก์ที่วางเมาส์เหนือของฉัน
Miles Henrichs

คำตอบ:


328

ปัจจุบันผู้คนใช้การเปลี่ยน CSS3เพราะมันง่ายกว่าการยุ่งกับ JSมากการรองรับเบราว์เซอร์นั้นดีพอสมควรและเป็นเพียงเครื่องสำอางดังนั้นจึงไม่สำคัญว่ามันจะไม่ได้ผล

สิ่งนี้ทำให้งานสำเร็จ:

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

คุณยังสามารถเปลี่ยนคุณสมบัติ CSS ที่เฉพาะเจาะจงด้วยการกำหนดเวลาและฟังก์ชันการค่อยๆเปลี่ยนที่แตกต่างกันได้โดยแยกการประกาศแต่ละรายการด้วยลูกน้ำดังนี้

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

สาธิตที่นี่


@AndreiCristof: โชคดีที่ใช้งานได้ใน IE10 ! ไม่จำเป็นต้องใช้คำนำหน้าผู้ขาย (ซึ่งแปลก)
Marcel

ฉันทดสอบทั้งสองอย่างและฉันหวังว่าฉันจะพบเหตุผลที่ถูกต้องว่าวิธี CSS ไม่ราบรื่นและคล่องแคล่วเหมือนวิธี jQuery กรุณาแก้ไขฉันถ้าฉันผิด
QMaster

คุณร็อค! อธิบายได้ดีช่วยฉันได้มากเมื่อเห็นมัน
plast1K

การทดสอบของฉันใช้รูปภาพไม่ใช่ลิงก์
Felipe

@FelipeMicaroniLalli ดีที่สุดที่จะโพสต์คำถามที่ฉันเดาว่าดูเหมือนปัญหาทางไวยากรณ์
Marcel

9

ฉันรู้ในคำถามที่คุณระบุว่า "ฉันถือว่า JavaScript ถูกใช้เพื่อสร้างเอฟเฟกต์นี้" แต่ CSS ก็สามารถใช้ได้เช่นกันตัวอย่างด้านล่าง

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>

และนี่คือJSFIDDLEสำหรับโค้ดด้านบน!


Marcel ในหนึ่งในคำตอบชี้ให้เห็นว่าคุณสามารถ "เปลี่ยนคุณสมบัติ CSS หลายรายการ" ได้นอกจากนี้คุณยังสามารถใช้ "ทั้งหมด" เพื่อสร้างเอฟเฟกต์องค์ประกอบด้วยรูปแบบ: โฮเวอร์ของคุณทั้งหมดดังต่อไปนี้

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>

และนี่คือJSFIDDLEสำหรับตัวอย่าง "ทั้งหมด"!


6

คุณสามารถทำได้ด้วย JQueryUI:

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

http://jsfiddle.net/dWCbk/


คุณไม่ต้องการ jqueryui สำหรับสิ่งนั้นเพียงแค่ jquery
Juan

6
@Juan ไม่ jQuery สามารถทำให้ "ค่าตัวเลขเดี่ยว" เคลื่อนไหวได้เท่านั้นซึ่งไม่มีสี (ดูapi.jquery.com/animate/#animation-properties ) แต่จริงๆแล้วคุณไม่ต้องการไลบรารี jQueryUI ทั้งหมดเพียงแค่ปลั๊กอิน jQuery.Color ที่ถูกฝังลงใน jQueryUI
Niclas Sahlin

@ นิคลาสซาห์ลิน. ฉันพบว่าซอของคุณกำลังค้นหาการเปลี่ยน CSS การเปลี่ยน JQuery-UI ของคุณราบรื่นขึ้นมากฉันแน่ใจว่าผู้ใช้จะสังเกตเห็นมัน
RubyRube

1
มีโซลูชันที่มี css ซึ่งเป็นวิธีที่ง่ายกว่าในการนำไปใช้
mhenkel

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.