ฉันคิดหาวิธีแก้ปัญหาที่เหมาะกับฉันแล้ว ...
หากคุณมีรายการ (หรือ div) ที่มีเฉพาะลิงก์และสมมติว่านี่คือลิงก์โซเชียลบนเพจของคุณไปยัง facebook, twitter, ect และคุณกำลังใช้ภาพสไปรท์คุณสามารถทำได้:
<li id="facebook"><a href="facebook.com"></a></li>
ทำให้พื้นหลัง "li" เป็นภาพปุ่มของคุณ
#facebook {
width:30px;
height:30px;
background:url(images/social) no-repeat 0px 0px;
}
จากนั้นทำให้ภาพพื้นหลังของลิงก์อยู่ในสถานะโฮเวอร์ของปุ่ม เพิ่มแอตทริบิวต์ความทึบลงในสิ่งนี้และตั้งค่าเป็น 0
#facebook a {
display:inline-block;
background:url(images/social) no-repeat 0px -30px;
opacity:0;
}
ตอนนี้สิ่งที่คุณต้องมีคือ "ความทึบ" ใต้ "a: hover" และตั้งค่านี้เป็น 1
#facebook a:hover {
opacity:1;
}
เพิ่มแอตทริบิวต์การเปลี่ยนความทึบสำหรับแต่ละเบราว์เซอร์เป็น "a" และ "a: hover" ดังนั้น css สุดท้ายจะมีลักษณะดังนี้:
#facebook {
width:30px;
height:30px;
background:url(images/social) no-repeat 0px 0px;
}
#facebook a {
display:inline-block;
background:url(images/social) no-repeat 0px -30px;
opacity:0;
-webkit-transition: opacity 200ms linear;
-moz-transition: opacity 200ms linear;
-o-transition: opacity 200ms linear;
-ms-transition: opacity 200ms linear;
transition: opacity 200ms linear;
}
#facebook a:hover {
opacity:1;
-webkit-transition: opacity 200ms linear;
-moz-transition: opacity 200ms linear;
-o-transition: opacity 200ms linear;
-ms-transition: opacity 200ms linear;
transition: opacity 200ms linear;
}
ถ้าฉันอธิบายถูกต้องว่าควรให้คุณมีปุ่มภาพพื้นหลังที่ซีดจางหวังว่ามันจะช่วยได้อย่างน้อย!
background-image
ไม่ใช่คุณสมบัติที่เคลื่อนไหวได้ ( w3.org/TR/css3-transitions/#animatable-properties ) ดังนั้นโซลูชันของคุณจึงไม่เป็นไปตามมาตรฐาน