Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.06.2013, 17:29
Аспирант
Отправить личное сообщение для Aleksanderj Посмотреть профиль Найти все сообщения от Aleksanderj
 
Регистрация: 14.06.2013
Сообщений: 70

Изображение при наведении мыши заменяется другой и увеличивается
Здравствуйте, помогите, пожалуйста,создать правильный скрипт. Нужно чтобы картинка при наведении заменилась другой, т.е. первая исчезает, а вторая в этот момент появляется и увеличивается на том же месте, как на сайте мегафона внизу есть подобных 3 изображения. Я смог только css от туда взять, а как дальше быть не знаю. Может есть какой-нибудь плагин jquery, javascript или с css надо поработать или что то еще? Вот что я от туда взял:
Код:
.shadow-box { 
    position: relative; 
    float: left; 
    margin: 10px 
} 
.dt-news .shadow-box { 
    margin: 15px 25px 10px 5px 
} 
.dt-actions .shadow-box { 
    margin: 15px 25px 10px 5px 
} 
.shadow-box * { 
    outline: 0 
} 
.shadow-box .sh-in { 
    display: block; 
    position: relative; 
    z-index: 10; 
    top: -4px; 
    left: -4px; 
    margin: 0 -8px -8px 0 
} 
.shadow-box .l { 
    width: 10px; 
    position: absolute; 
    top: 0; 
    height: 100%; 
    z-index: 20 
} 
.shadow-box .r { 
    width: 10px; 
    position: absolute; 
    top: 0; 
    height: 100%; 
    z-index: 20 
} 
.shadow-box .l { 
    background: url('') 0 0 repeat-y transparent; 
    left: -10px 
} 
.shadow-box .r { 
    background: url('') 100% 0 repeat-y transparent; 
    right: -10px 
} 
.shadow-box .sh-t { 
    position: absolute; 
    height: 10px; 
    z-index: 20; 
    line-height: 0; 
    font-size: 0 
} 
.shadow-box .sh-tr { 
    position: absolute; 
    height: 10px; 
    z-index: 20; 
    line-height: 0; 
    font-size: 0 
} 
.shadow-box .sh-b { 
    position: absolute; 
    height: 10px; 
    z-index: 20; 
    line-height: 0; 
    font-size: 0 
} 
.shadow-box .sh-br { 
    position: absolute; 
    height: 10px; 
    z-index: 20; 
    line-height: 0; 
    font-size: 0 
} 
.shadow-box .sh-t { 
    width: 100%; 
    top: -10px; 
    left: -10px; 
    background: url('') 0 0 no-repeat transparent 
} 
.shadow-box .sh-tr { 
    width: 20px; 
    top: -10px; 
    right: -10px; 
    background: url('') 100% 0 no-repeat transparent 
} 
.shadow-box .sh-b { 
    width: 100%; 
    top: 100%; 
    left: -10px; 
    background: url('') 0 0 no-repeat transparent 
} 
.shadow-box .sh-br { 
    width: 20px; 
    top: 100%; 
    right: -10px; 
    background: url('') 100% 0 no-repeat transparent 
}
Ответить с цитированием
  #2 (permalink)  
Старый 14.06.2013, 18:10
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

.img {
   background:url('первое_изображение.jpg');
   height: 300px;
   width: 300px;
}
.img:hover {
   background:url('второе_изображение.jpg');
   height: 500px;
   width: 500px;
}

<div class="img"></div>
Ответить с цитированием
  #3 (permalink)  
Старый 15.06.2013, 02:39
Аспирант
Отправить личное сообщение для Aleksanderj Посмотреть профиль Найти все сообщения от Aleksanderj
 
Регистрация: 14.06.2013
Сообщений: 70

Это обычный и не красивый переход. Нужно плавное увеличение и первый плавно исчезает.
Если брать по отдельности, есть плавный переход
.image-block {
   display: inline-block;
   padding: 0;
   margin: 0;
   background-position: center center;
   background-repeat: no-repeat;
}

.image-up, .image-down {
   border: 0;
   margin: 0;
   padding: 0;
}

.image-up {
   opacity: 1.0;
   filter: alpha(opacity=99); /* IE */
   display: block;
   position: absolute;
   z-index: 100;
   transition-duration: 0.96s;
   -webkit-transition-duration: 0.96s;
   -moz-transition-duration: 0.96s;
   -o-transition-duration: 0.96s;
   -ms-transition-duration:  0.96s; /* IE9+ */
}

.image-up:hover {
   opacity: 0.00;
   filter: alpha(opacity=00); /* IE */
}

<div class="image-block">
<img class="image-up" src="../images/первое_изображение.jpg" />
<img class="image-down" src="../images/второе_изображение.jpg />
</div>

а также плавное увеличение:
#container{
text-align: center;
position: absolute;
left: 240px;
margin-top: 150px;
width: 790px;
}
.img{
position: fixed;
z-index: 0;
}
.end{
margin-right: 0;
}
.clear{
clear: both;
}
.img a img{
position: relative;
border: 0 solid #fff;
}

$(document).ready(function() {
        var cont_left = $("#container").position().left;
        $("a img").hover(function() {
            // приближение
            $(this).parent().parent().css("z-index", 1);
            $(this).animate({
               height: "250",
               width: "250",
               left: "-=50",
               top: "-=50"
            }, "fast");
        }, function() {
            // отдаление
            $(this).parent().parent().css("z-index", 0);
            $(this).animate({
                height: "150",
                width: "150",
                left: "+=50",
                top: "+=50"
            }, "fast");
        });<p></p>

        $(".img").each(function(index) {
            var left = (index * 160) + cont_left;
            $(this).css("left", left + "px");
        });
    });


всё делается только по отдельности, а как совместить, чтобы происходило и плавная смена и плавное увеличение вместе?
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2013, 02:52
Аватар для sphere89
Интересующийся
Отправить личное сообщение для sphere89 Посмотреть профиль Найти все сообщения от sphere89
 
Регистрация: 02.04.2013
Сообщений: 15

Делал подобное за 20 минут с помощью двух вызовов transitions, плавная смена с помощью transform, другая с помощью width, margin, left - надо просто отдельно указывать transitions на эти свойства. Почитать
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2013, 03:27
Аспирант
Отправить личное сообщение для Aleksanderj Посмотреть профиль Найти все сообщения от Aleksanderj
 
Регистрация: 14.06.2013
Сообщений: 70

А пример написания можно увидеть?
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2013, 12:43
Аватар для sphere89
Интересующийся
Отправить личное сообщение для sphere89 Посмотреть профиль Найти все сообщения от sphere89
 
Регистрация: 02.04.2013
Сообщений: 15

http://jsfiddle.net/CCkr4/3/ - Не думал, что будет мерцание, но я думаю его можно убрать. http://jsfiddle.net/CCkr4/4/

Последний раз редактировалось sphere89, 15.06.2013 в 12:52.
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2013, 13:28
Аспирант
Отправить личное сообщение для Aleksanderj Посмотреть профиль Найти все сообщения от Aleksanderj
 
Регистрация: 14.06.2013
Сообщений: 70

Сообщение от sphere89 Посмотреть сообщение
http://jsfiddle.net/CCkr4/3/ - Не думал, что будет мерцание, но я думаю его можно убрать. http://jsfiddle.net/CCkr4/4/
Смысл то в том, что изображение увеличенное в css теряет качество, вот и надо подставить второе изображение так, чтобы оно было размером больше чем первое. А может даже не само изображение надо увеличить, а рамку вокруг, т.е. первоначально показать первое изображение, а при наведении мыши второе не полное, где постепенно будет расширяться рамка.

Последний раз редактировалось Aleksanderj, 15.06.2013 в 13:30.
Ответить с цитированием
  #8 (permalink)  
Старый 16.06.2013, 23:52
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

Сообщение от Aleksanderj Посмотреть сообщение
Смысл то в том, что изображение увеличенное в css теряет качество, вот и надо подставить второе изображение так, чтобы оно было размером больше чем первое. А может даже не само изображение надо увеличить, а рамку вокруг, т.е. первоначально показать первое изображение, а при наведении мыши второе не полное, где постепенно будет расширяться рамка.
Что мешает взять изображение больше (по размерам, как второе) и просто уменьшить для начального?
http://jsfiddle.net/kazabr/j2mjN/3/embedded/result/
Ответить с цитированием
  #9 (permalink)  
Старый 17.06.2013, 09:26
Аспирант
Отправить личное сообщение для Aleksanderj Посмотреть профиль Найти все сообщения от Aleksanderj
 
Регистрация: 14.06.2013
Сообщений: 70

Сообщение от Zibba Посмотреть сообщение
Что мешает взять изображение больше (по размерам, как второе) и просто уменьшить для начального?
http://jsfiddle.net/kazabr/j2mjN/3/embedded/result/
Мешает то, что нужно два изображения вставить...
Ответить с цитированием
  #10 (permalink)  
Старый 17.06.2013, 16:48
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от Aleksanderj
Это обычный и не красивый переход. Нужно плавное увеличение и первый плавно исчезает.
Если брать по отдельности, есть плавный переход
.img {
   background:url('первое_изображение.jpg');
   height: 300px;
   transition: all 0.5s;
   width: 300px;
}
.img:hover {
   background:url('второе_изображение.jpg');
   height: 500px;
   margin: -100px 0% 0% -100px;
   position: absolute;
   width: 500px;
}

<div class="img"></div>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена картинки с ссылкой при наведении мыши в таблице makc0993 Элементы интерфейса 6 17.02.2013 17:44
при наведение мышкой изображение увеличивается, а в FF зависает odlf3 Firefox/Mozilla 4 03.06.2011 07:04
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
изменения рисунка при наведении курсора Kenan Bek Events/DOM/Window 24 19.12.2010 20:48
FireFox: onmouseover не работает при зажатой кнопке мыши no. Общие вопросы Javascript 4 19.08.2008 13:43