การเปลี่ยนสีพื้นหลัง


286

ฉันกำลังพยายามเปลี่ยนเอฟเฟกต์ด้วยbackground-colorเมื่อเลื่อนเมาส์ไปที่รายการเมนู แต่มันไม่ทำงาน นี่คือรหัส CSS ของฉัน:

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

นี่#nav divคือulรายการเมนูของรายการ


เพียงแค่ FYI สิ่งนี้ใช้ได้ใน Firefox ทันที ทดสอบใน FF9
C.Brown

คำตอบ:


527

เท่าที่ฉันรู้ว่าช่วงการเปลี่ยนภาพทำงานใน Safari, Chrome, Firefox, Opera และ Internet Explorer 10+

สิ่งนี้จะทำให้เอฟเฟกต์จางสำหรับคุณในเบราว์เซอร์เหล่านี้:

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>

หมายเหตุ:ตามที่ Gerald ชี้ให้เห็นในความคิดเห็นหากคุณใส่ช่วงการเปลี่ยนภาพบนaแทนที่จะa:hoverเป็นสีจะจางหายไปกลับเป็นสีดั้งเดิมเมื่อเมาส์ของคุณเลื่อนออกจากลิงค์

สิ่งนี้อาจมีประโยชน์เช่นกัน: CSS พื้นฐาน: การเปลี่ยน CSS 3


38
นอกจากนี้คุณยังสามารถใส่ช่วงการเปลี่ยนภาพเป็นcontent #nav aสีซีดจางกลับไปเป็นต้นฉบับเมื่อผู้ใช้เลื่อนเมาส์ออกจากลิงค์
gak

2
ซอกับโฮเวอร์และการเปลี่ยนคลิกที่: jsfiddle.net/K5Qyx
Dem Pilafian

3
มันจะดีกว่าไหมถ้าจะใส่transition:ลงไปใน non-hover? ผมคิดว่าทุกครั้งที่วนเวียนอยู่ใช้การเปลี่ยนแปลงจะรวบรวม ..
มาเตจ์

1
@Illium Link is dead
ferdynator

2
CSS transitionดูเหมือนจะไม่สามารถจัดการกับสีของชนิด "เส้นลาด" เป็นสามารถทดสอบได้ที่นี่ และ btw คำตอบของ @ Ilium ควรถูกทำเครื่องหมายเป็นวิธีแก้ปัญหา
Stacky

84

สำหรับฉันจะเป็นการดีกว่าถ้าวางรหัสการเปลี่ยนแปลงด้วยตัวเลือกดั้งเดิม / ขั้นต่ำกว่าด้วย: โฮเวอร์หรือตัวเลือกเพิ่มเติมอื่น ๆ :

#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
ไม่ใช่ว่ามันจะดีขึ้นหรือแย่ลง เป็นเพียงว่าถ้าคุณระบุการเปลี่ยนแปลงใน lement ตัวเองมันจะเป็นภาพเคลื่อนไหวเมื่อองค์ประกอบได้รับการโฮเวอร์และเมื่อมันได้รับ "un-hovered" แม้ว่าคุณจะนำไปใช้กับ: โฮเวอร์คุณจะมีภาพเคลื่อนไหวเมื่อเมาส์เข้ามา แต่จะไม่เคลื่อนไหวเมื่อออก
LucasBeef

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