переход для фонового изображения в 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 псевдоэлемента

CSS

.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 действительно кусок дерьма. Я не могу поверить, что нужно придумывать много странного кода, чтобы все там работало. Похоже, это не будет работать в проводнике 9. Но ничего, я все равно давно отказался от проводника. Большое вам спасибо за вашу помощь. - 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 один 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