jQuery: высота () элемента div и изменение размера окна

0

сначала взгляните на следующую скрипту и попробуйте заголовок оверлея. Когда вы закрываете div и изменяете размер окна, #overlay div начинает прыгать вокруг, становится видимым, даже если он закрыт. Это вызвано текстом в div #overlay, так как div не имеет фиксированной высоты и реагирует. Как я могу изменить jQuery и остановить этот эффект?

var overlayState = 'close';
var overlay = $('#overlay');

$(window).resize(function () {

    if (overlayState == 'close') {
        overlay.css({
            display: 'block',
            marginTop: -overlay.height()
        });
    } else {
        overlay.css({
            display: 'block',
            marginTop: 0
        });

    }
});

$(document).ready(function () {
    // var overlay = $('#overlay');
    var overlayControl = $('.overlay-controls a');
    var overlayicon = $('.overlay-controls span');

    overlay.css({
        display: 'block',
        marginTop: -overlay.height()
    });

    // var overlayState = 'close';

    overlayControl.toggle(function () {
        overlayState = 'open';
        overlayicon.addClass('open');
        overlay.animate({
            marginTop: 0
        }, 600, 'easeInOutQuart');

    }, function () {
        overlayState = 'close';
        overlayicon.removeClass('open');
        overlay.animate({
            marginTop: -overlay.height()
        }, 900, 'easeOutBounce');

    });
});

И здесь FIDDLE: http://jsfiddle.net/RS9yb/4/

  • 0
    я вижу это правильно
Теги:
resize
height

1 ответ

1

Просто убедитесь, что вы скрываете и показываете элемент правильно, а не просто выдвигаете его, и вы полностью избегаете проблемы:

overlayControl.toggle(function () {
    overlayState = 'open';
    overlayicon.addClass('open');
    overlay.show().animate({
        marginTop: 0
    }, 600, 'easeInOutQuart');

}, function () {
    overlayState = 'close';
    overlayicon.removeClass('open');
    overlay.animate({
        marginTop: -overlay.height()
    }, 900, 'easeOutBounce', function() {
        $(this).hide();
    });
});

FIDDLE

Ещё вопросы

Сообщество Overcoder
Наверх
Меню