การเปลี่ยนภาพพื้นหลังใน Firefox?

ฉันกำลังพยายามค้นหาทางเลือกอื่นสำหรับสิ่งนี้:

"transition:background-image 1s whatever"

ใน firefox เนื่องจากใช้งานได้กับเบราว์เซอร์ webkit เท่านั้น

ฉันลองใช้ตัวเลือกความทึบแล้ว แต่นั่นไม่ใช่ตัวเลือกสำหรับฉันเนื่องจากฉันมีเนื้อหาบนคอนเทนเนอร์พื้นหลังซึ่งจะหายไปพร้อมกับพื้นหลังหากใช้ความทึบ

ขอบคุณ


person Cain Nuke    schedule 06.11.2013    source แหล่งที่มา
comment
เป็นไปได้ที่ซ้ำกันของการเปลี่ยนภาพพื้นหลัง CSS3   -  person Paulie_D    schedule 06.11.2013
comment
ไม่ ไม่ใช่เพราะวิธีแก้ปัญหาที่นำเสนอนั้นมีความทึบ และอย่างที่ฉันพูดในโพสต์ว่าใช้ไม่ได้ผลสำหรับฉัน   -  person Cain Nuke    schedule 06.11.2013
comment
ตรวจสอบคำตอบนี้: stackoverflow.com/a/16619705/1873387 ดูเหมือนว่า Firefox ยังไม่ได้ใช้งาน   -  person Romain Braun    schedule 06.11.2013
comment
ฉันรู้ว่าผู้ชายคนนั้น นั่นคือเหตุผลที่ฉันขอทางเลือกอื่น   -  person Cain Nuke    schedule 06.11.2013


คำตอบ (4)


คุณสามารถทำได้โดยใช้องค์ประกอบหลอก 2 รายการ

ซีเอสเอส

.test
{
    width: 400px;
    height: 150px;
    position: relative;
    border: 1px solid green;
}

.test:before, .test:after {
    content: "";
    position: absolute;
    top: 0px;
    right: 0px;
    bottom: 0px;
    left: 0px;
    opacity: 1;
}
.test:before {
    background-color: red;
    z-index: 1;
    transition: opacity 1s;
}

.test:after {
    background-color: green;
}

.test:hover:before {
    opacity: 0;
}

เล่นซอกับภาพจริง

(เลื่อนเมาส์ไปที่การเปลี่ยน)

เพื่อให้สามารถดูเนื้อหา div องค์ประกอบหลอกจะต้องอยู่ในดัชนี z เชิงลบ:

ซอกับดัชนี z ที่ถูกต้อง

ดูเหมือนว่า IE จะไม่ทริกเกอร์โฮเวอร์นี้

.test:hover:before {
    opacity: 0;
}

แต่จะเรียกสิ่งนี้

.test:hover {
}
.test:hover:before {
    opacity: 0;
}

(เป็นคนโง่อย่างที่เห็น)

ซอสำหรับ IE10

person vals    schedule 06.11.2013
comment
สวัสดี มันดูดี แต่ฉันไม่สามารถวางเนื้อหาภายใน div ได้ใช่ไหม - person Cain Nuke; 07.11.2013
comment
คุณพูดถูก ฉันลืมตรวจสอบมัน ฉันได้เพิ่มอีกตัวอย่างหนึ่ง โดยที่ฉันตั้งค่าดัชนี z ให้เป็นค่าลบและแก้ไขปัญหานั้น - person vals; 07.11.2013
comment
ว้าว มันทำงานได้อย่างสมบูรณ์แบบ! ขอบคุณ และตอนนี้ก็เหมือนกับโบนัส ใช้งานได้กับ IE เวอร์ชันล่าสุดหรือไม่ ฉันมี 9 และมันใช้ไม่ได้ที่นี่ ไม่ใช่ว่าฉันสนใจมากนักเพราะว่า IE ห่วยแตก - person Cain Nuke; 08.11.2013
comment
หลังจากลองไป 10 นาที ให้ใช้งานได้กับ IE10 หวังว่ามันจะใช้งานได้ในวันที่ 9 เช่นกัน .. - person vals; 08.11.2013
comment
ว้าว Explorer นี่มันห่วยจริงๆ ฉันไม่อยากจะเชื่อเลยว่ามันจำเป็นต้องสร้างโค้ดแปลก ๆ มากมายเพื่อให้สิ่งต่าง ๆ ทำงานได้ ดูเหมือนว่าจะใช้งานไม่ได้กับ explorer 9 แต่ไม่เป็นไร ยังไงซะฉันก็เลิกใช้ explorer ไปนานแล้ว ขอบคุณมากสำหรับความช่วยเหลือของคุณ. - person Cain Nuke; 08.11.2013
comment
ดีใจที่ได้ช่วย! - person vals; 08.11.2013
comment
อย่าลืมว่าหลังจากและก่อนองค์ประกอบหลอกจะไม่ทำงานกับอินพุต เช่น ปุ่มส่ง ซึ่งมักจะต้องการเอฟเฟกต์เช่นนี้ - person Toni Leigh; 16.10.2014
comment
ฉันใส่ +1 ไว้ที่นี่ แต่ตอนนี้ฉันจำเป็นต้องนำสิ่งเหล่านี้ไปใช้ในโครงการของฉัน ขอบคุณ - person msangel; 31.12.2015

วิธีแก้ปัญหาที่ง่ายที่สุดโดยใช้โฮเวอร์

 

.self-pic {
    height: 350px;
    width: 350px;
    position: relative;
    border-radius: 1rem;
}

img {
    position: absolute;
    left: 0;
    transition: opacity, 1s;
}

img.front:hover {
    opacity: 0;
}

 
<div id="self-pic">
  <img class="back" src="https://source.unsplash.com/random/350*350" />
  <img class="front" src="https://source.unsplash.com/random/351*351" />
</div>

person RICHARD ABRAHAM    schedule 31.08.2020

มันได้ผล

คุณสามารถดูได้ที่นี่: http://dabblet.com/gist/1931619

แต่เห็นได้ชัดว่า Firefox ยังไม่ได้ใช้งาน

person Romain Braun    schedule 06.11.2013
comment
ขอบคุณ แต่นั่นคือสิ่งที่คำถามของฉันเกี่ยวกับ เนื่องจาก ti ใช้ไม่ได้กับ firefox ฉันจึงมองหาทางเลือกอื่น - person Cain Nuke; 06.11.2013
comment
@CainNuke โอเคขอโทษ ฉันเดาว่าสิ่งเดียวที่คุณทำได้คือให้ div ว่างเปล่าที่มีเพียงภาพพื้นหลังและ div อื่นที่อยู่ด้านบนที่มีเนื้อหา... ฉันไม่สามารถนึกถึงทางเลือกอื่นได้ - person Romain Braun; 06.11.2013
comment
ได้ แต่ถ้าคุณทำเช่นนั้นและใช้การเปลี่ยนความทึบ เนื้อหาก็จะหายไปเช่นกัน - person Cain Nuke; 06.11.2013
comment
ไม่ คุณใช้เฉพาะการเปลี่ยนแปลงกับ div ที่มีรูปภาพพื้นหลังเท่านั้น และไม่มีอะไรอื่นอีก - person Romain Braun; 06.11.2013
comment
คุณจะทำอย่างไร? เมื่อฉันโฮเวอร์ทุกอย่างภายใน div จะหายไป ไม่ใช่แค่พื้นหลังเท่านั้น - person Cain Nuke; 07.11.2013
comment
ใช่ ดังนั้นคุณควรมี div ที่มี และภายใน div นั้นจะมี 1 div ที่มีเฉพาะพื้นหลัง และที่เหนือไปกว่านั้นคือ div หนึ่งที่มีเนื้อหา นี่ไม่ดีนัก แต่นั่นคือทั้งหมดที่ฉันมี - person Romain Braun; 07.11.2013

#id_of_element {
    -webkit-transition: all 1s ease-in-out;
    -moz-transition: all 1s ease-in-out;
    -o-transition: all 1s ease-in-out;
    transition: all 1s ease-in-out;
}

นี่ไม่ได้ทำเหรอ? เพียงแค่ต้องเปลี่ยนทั้งหมดเป็นภาพพื้นหลัง

person Adam 'Sacki' Sackfield    schedule 06.11.2013
comment
ไม่มันไม่ได้ Firefox ไม่รองรับการเปลี่ยนภาพพื้นหลัง นั่นเป็นเหตุผลที่ฉันขอทางเลือกอื่น - person Cain Nuke; 06.11.2013
comment
จากสิ่งที่ฉันพบ ดูเหมือนว่ายังไม่มีวิธีแก้ไขปัญหานี้ - person Adam 'Sacki' Sackfield; 06.11.2013