Подтвердить что ты не робот

Переход к фоновому изображению CSS3

Я пытаюсь сделать эффект постепенного исчезновения, используя переход CSS. Но я не могу заставить это работать с фоновым изображением...

CSS:

.title a {
    display: block;
    width: 340px;
    height: 338px;
    color: black;
    background: transparent;
    /* TRANSITION */
    -webkit-transition: background 1s;
    -moz-transition: background 1s;
    -o-transition: background 1s;
    transition: background 1s;
}

.title a:hover {
    background: transparent;
    background: url(https://lh3.googleusercontent.com/-p1nr1fkWKUo/T0zUp5CLO3I/AAAAAAAAAWg/jDiQ0cUBuKA/s800/red-pattern.png) repeat;
    /* TRANSITION */
    -webkit-transition: background 1s;
    -moz-transition: background 1s;
    -o-transition: background 1s;
    transition: background 1s;
}​

Посмотрите: http://jsfiddle.net/AK3La/

4b9b3361

Ответ 1

Вы можете перейти background-image. Используйте CSS ниже в элементе img:

-webkit-transition: background-image 0.2s ease-in-out;
transition: background-image 0.2s ease-in-out;

Это поддерживается корпорацией Chrome, Opera и Safari. Firefox еще не реализовал его (bugzil.la). Не уверен в IE.

Ответ 2

Решение (которое я нашел сам) является трюком ниндзя, я могу предложить вам два пути:

сначала вам нужно создать "контейнер" для <img>, он будет содержать нормальные и зависающие состояния в одно и то же время:

<div class="images-container">
    <img src="http://lorempixel.com/400/200/animals/9/">
    <img src="http://lorempixel.com/400/200/animals/10/">
</div>
  • с селекторами CSS3 http://jsfiddle.net/eD2zL/1/ (если вы используете это, "нормальное" состояние будет первым дочерним вашим контейнером, или измените порядок nth-child())

  • Решение CSS2 http://jsfiddle.net/eD2zL/2/ (различия между ними - всего несколько селекторов)

В принципе, вам нужно скрыть "нормальное" состояние и показать свой "зависание" при его наведении

и что это, я надеюсь, кто-нибудь найдет это полезным.

Ответ 3

Я выяснил решение, которое сработало для меня...

Если у вас есть элемент списка (или div), содержащий только ссылку, и пусть это относится к социальным ссылкам на вашей странице в facebook, twitter и т.д. и вы используете спрайт-образ, вы можете это сделать:

<li id="facebook"><a href="facebook.com"></a></li>

Сделайте фон "li" вашим изображением кнопки

#facebook {
   width:30px;
   height:30px;
   background:url(images/social) no-repeat 0px 0px;
}

Затем сделайте фоновое изображение ссылки в режиме зависания кнопки. Также добавьте к этому атрибуту opacity и установите значение 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;
}

Если я правильно объясню это, вы должны иметь кнопку угасания фонового изображения, надеюсь, что это поможет хотя бы!

Ответ 4

Если вы можете использовать jQuery, вы можете попробовать BgSwitcher плагин для переключения фонового изображения с эффектами, который очень прост в использовании.

Например:

$('.bgSwitch').bgswitcher({
        images: ["style/img/bg0.jpg","style/img/bg1.jpg","style/img/bg2.jpg"],
        effect: "fade",
        interval: 10000
});

И добавьте свой собственный эффект, см. добавление типов эффектов

Ответ 6

Вы можете использовать псевдоэлемент, чтобы получить необходимый эффект, как я сделал в Fiddle.

CSS

.title a {
    display: block;
    width: 340px;
    height: 338px;
    color: black;
    position: relative;
}
.title a:after {
    background: url(https://lh3.googleusercontent.com/-p1nr1fkWKUo/T0zUp5CLO3I/AAAAAAAAAWg/jDiQ0cUBuKA/s800/red-pattern.png) repeat;
    content: "";
    opacity: 0;
    width: inherit;
    height: inherit;
    position: absolute;
    top: 0;
    left: 0;
    /* TRANSISITION */
    transition: opacity 1s ease-in-out;
    -webkit-transition: opacity 1s ease-in-out;
    -moz-transition: opacity 1s ease-in-out;
    -o-transition: opacity 1s ease-in-out;
}
.title a:hover:after{   
    opacity: 1;
}

HTML:

<div class="title">
    <a href="#">HYPERLINK</a>
</div>

Ответ 7

Если анимация opacity не является опцией, вы можете также анимировать background-size.

Например, я использовал этот CSS для установки backgound-image с задержкой.

.before {
  background-size: 0;
}

.after {
  transition: background 0.1s step-end;
  background-image: $path-to-image;
  background-size: 20px 20px;
}

Ответ 8

Salam, этот ответ работает только в Chrome, вызывая переход цвета IE и FF.

Нет необходимости создавать HTML-элементы opacity:0, вызывать несколько раз, когда они содержат текст, и не нужно удваивать ваши элементы!

Вопрос со ссылкой на пример в jsfiddle потребовал небольшого изменения, то есть поместить пустым изображением в .title a как background:url(link to an empty image); так же, как вы положили его в .title a:hover, но сделать его пустым изображением, а код будет работать.

.title a {
display: block;
width: 340px;
height: 338px;
color: black;
background: url(https://upload.wikimedia.org/wikipedia/commons/5/59/Empty.png) repeat;
/* TRANSISITION */
transition: background 1s;
-webkit-transition: background 1s;
-moz-transition: background 1s;
-o-transition: background 1s;
  }
  .title a:hover{   background: transparent;
   background: url(https://lh3.googleusercontent.com/-p1nr1fkWKUo/T0zUp5CLO3I/AAAAAAAAAWg/jDiQ0cUBuKA/s800/red-pattern.png) repeat;
/* TRANSISITION */
transition: background 1s;
-webkit-transition: background 1s;
-moz-transition: background 1s;
-o-transition: background 1s;
}

Отметьте https://jsfiddle.net/Tobasi/vv8q9hum/

Ответ 9

С вдохновляющим комментарием Криса здесь:

https://css-tricks.com/different-transitions-for-hover-on-hover-off/

Мне удалось это сделать:

#banner
{
    display:block;
    width:100%;
    background-repeat:no-repeat;
    background-position:center bottom;
    background-image:url(../images/image1.jpg);
    /* HOVER OFF */
    @include transition(background-image 0.5s ease-in-out); 

    &:hover
    {
        background-image:url(../images/image2.jpg);
        /* HOVER ON */
        @include transition(background-image 0.5s ease-in-out); 
    }
}

Ответ 10

Попробуйте это, сделайте фоновый анимированный рабочий в Интернете, но гибридное мобильное приложение не работает

@-webkit-keyframes breath {
 0%   {  background-size: 110% auto; }
 50%  {  background-size: 140% auto; }
 100% {  background-size: 110% auto; }      
}
body {
   -webkit-animation: breath 15s linear infinite;
   background-image: url(images/login.png);
    background-size: cover;
}