2014-01-14 5 views
-1

У меня есть div, который растет при наведении. Прекрасно работает! Однако у меня есть изображение, которое нарушает границы div, и когда div растет, изображение исчезает? Он появляется, когда анимация завершена, но это явно неприемлемо.Изображение исчезает на div растут?

Почему это?

Вы можете увидеть здесь: http://dev.mediaslave.ca/emerald/1/index.php

При наведении курсора мыши на панели внизу, маленький треугольник изображение исчезает!

Вот JQuery:

$(document).ready(function() { 
$(".main_menu").hover(
//on mouseover 
function() { 
    $(this).animate({ 
    height: '+=50' //adds 250px 
    }, 'slow' //sets animation speed to slow 
); 
}, 
//on mouseout 
function() { 
    $(this).animate ({ 
    height: '-=50px' //substracts 250px 
    }, 'slow' 
); 
} 
); 

}); 

Fiddle здесь: http://jsfiddle.net/wZveg/

+5

Пожалуйста, добавьте значащий код и описание проблемы здесь. Не связывайте с сайтом, который нуждается в исправлении. В противном случае этот вопрос потеряет любое значение будущим посетителям, как только проблема будет решена. Публикация [Краткосрочный, самосохраненный, правильный пример (SSCCE)] (http://www.sscce.org/) , который демонстрирует вашу проблему, поможет вам получить более качественные ответы. Для получения дополнительной информации см. [Что-то на моем веб-сайте не работает. Могу ли я просто вставить ссылку на ?] (Http://meta.stackexchange.com/questions/125997/) Спасибо! – j08691

+0

Извините. Я ничего не писал в коде, потому что не думал, что это код, вызывающий проблему. Я думал по этой линии, что ее странная ошибка, которая происходит в анимации или что-то в этом роде. Я добавлю код, хотя выше! –

ответ

2

каким-то образом анимировать() добавьте overflow:hidden в класс div main_menu, а ваш img расположен за пределами высоты контейнера, затем скрывается. Это свойство устанавливается только при запуске анимации. Попробуйте с этим на CSS:

.main_menu {  
    overflow:visible !important; 
} 

Проверить Demo

+1

Данко прав, это похоже на jQuery.Анимация() создает клипы, которые «переполняются» за пределами основной области, пока она проходит через анимацию. (См. Http://api.jquery.com/animate/ - раздел примечаний) – MarkP

+0

Вы правы! Это исправило это. Странно, что он решил скрыть изображение; Я никогда раньше не видел, чтобы это скрывало подобные вещи. –

+0

@JeffMonk метод использует это, чтобы предотвратить множественные проблемы с анимацией ширины и высот .. специально от '0' до другого значения. – DaniP

0

Я ненавижу ответы, как это, но вы рассматривали использование переходов CSS3? код, который вы написали для выполнения вашего текущего состояния обслуживания, не делает того, что вы думаете. JQuery animate имеет некоторые довольно хитрые способы делать манипуляции с использованием времени во времени, в то время как css-преобразования будут выполнять именно то, что вы хотите, с небольшой проблемой.

Кроме того, он получает JavaScript из страницы, которая использует это сделать только управление представления (которое полностью область CSS)

дать этому выстрел:

.main_menu { 
    width: 100%; 
    position: absolute; 
    bottom: 0; 
    z-index: 500; 
    background-color: #000; 
    padding: 6px 0; 
    text-align: right; 
    height:40px; 
    transition:height 1s ease; 
    -webkit-transition:height 1s ease; 
    -moz-transition:height 1s ease; 
    -o-transition:height 1s ease; 
} 

.main_menu:hover{ 
    height: 90px; 
} 
+1

справедливо, я стараюсь быть полезным – lostinplace

+0

Я ценю помощь Lostinplace! Я думал о переходах, но я беспокоюсь о проблемах с браузером, особенно на телефонах. Это предназначено, чтобы быть salestool, так что это увидит много мобильного использования. Это говорит о том, что я все еще совершенно нуб на всех этих вещах, так что, может быть, это хороший способ пойти? –

+0

Как видно из приведенного выше примера, неподдерживаемые браузеры просто дают негладкий переход. Я лично предпочитаю, чтобы это толкнуло ваш css на важное! директивы – lostinplace

3
overflow:visible !important; 

добавить его в .main_menu класс :)

+0

Спасибо, человек, который исправился! –

Смежные вопросы