Переход к фоновому изображению 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/
Ответы
Ответ 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>
В принципе, вам нужно скрыть "нормальное" состояние и показать свой "зависание" при его наведении
и что это, я надеюсь, кто-нибудь найдет это полезным.
Ответ 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
});
И добавьте свой собственный эффект, см. добавление типов эффектов
Ответ 5
К сожалению, переход на background-image
нельзя использовать, см. w3c список анимированных свойств.
Вы можете сделать некоторые трюки с помощью background-position
.
Ответ 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;
}