#css #background-image #transition
#css #background-image #переход
Вопрос:
Я хочу эффект наведения CSS3 на логотип моего веб-сайта. Просто, не так ли? Что ж, это работает, но не так, как я хочу.
Верхняя половина этого является обычным состоянием, а нижняя половина — состоянием: hover.
У меня есть стандартный CSS для изменения положения фона при наведении курсора мыши, но переход CSS3 перемещает изображение вверх и вниз в соответствии с положением. Вместо этого я хочу, чтобы оно просто появлялось и исчезало в новой позиции.
Возможно ли это при работе с одним изображением и двумя позициями или мне придется создавать два отдельных изображения (чего не происходит)?
Комментарии:
1. Я думаю, два. CSS3 не является заменой JS…
2. я не совсем понимаю, чего вы пытаетесь достичь, можете ли вы привести рабочий пример (или, по крайней мере, уточнить немного больше — вы хотите, чтобы ваше изображение меняло только верхнюю половину, или вы хотите, чтобы ваше изображение исчезло, а новое изображение исчезло)?
3. Я создал страницу, чтобы продемонстрировать свою ситуацию. scferg.com/logoexamples.html
4. Вам нужно как минимум 2 элемента. 1-й накладывается на 2-й. при 1-м наведении курсора мыши непрозрачность 1-го изменяется на 0 => 2-й отображается с «исчезновением». Вы можете использовать тот же фон (рекомендуется) и просто поиграть с фоновыми позициями.
Ответ №1:
Вам не нужны два отдельных изображения, но вам нужны два отдельных элемента для размещения вашего логотипа.
Смотрите текущую версию здесь:http://jsfiddle.net/BdY79
.logo {
width: 282px;
height: 69px;
background: #fff url(http://scferg.com/wp-content/themes/austere/images/logo.png) 0 -69px no-repeat;
overflow: hidden;
}
.logo img {
background-color: #fff;
-webkit-transition: opacity 200ms ease;
-moz-transition: opacity 200ms ease;
-o-transition: opacity 200ms ease;
}
.logo img:hover {
opacity: 0;
}
На практике вы, вероятно, хотите связать свой логотип, и вы можете использовать тег для этого, так что дополнительной разметки не будет. Он также изящно ухудшается.
Ответ №2:
Здесь не упоминается анимация положения фона…
.box {
display:block;
height:300px;
width:300px;
background:url('http://lorempixum.com/300/300') no-repeat;
background-position:-300px;
-webkit-transition:background-position 1s ease;
}
.box:hover{
background-position:0px;
}
Только для Webkit 🙁
Через:http://jsfiddle.net/hfXSs
Подробнее здесь:http://css-tricks.com/parallax-background-css3
Ответ №3:
Да, это возможно, но вы не можете использовать простой переход, вам придется использовать анимацию CSS с 4 ключевыми кадрами
0% - opacity 1
49% - opacity 0
50% - move to new position, opacity 0
100% - opacity 1
Ответ №4:
https://gordonlesti.com/css-background-transitions-with-image-sprites/
<style>
.example4 {
background: url(sprite.png) 0px 0px no-repeat;
position: relative;
width: 200px;
height: 200px;
}
.example4::after {
content: "";
background: url(sprite.png) -200px 0px no-repeat;
opacity: 0;
transition: opacity 0.5s;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.example4:hover::after {
opacity: 1;
transition: opacity 0.5s;
}
</style>
<div class="example4"></div>