jQuery: маржа IE8 разрушается при использовании slideUp () / slideDown () - PullRequest
13 голосов
/ 25 марта 2010

Я загрузил тестовый файл здесь:

http://dl.dropbox.com/u/2201804/IE8test.html

Если вы нажмете на div "Click me", вы увидите, что div "Feedback" появляются с использованием slideDown (). Нажав кнопку «Нажми меня» в другом окне, вы перемещаете отображаемую в данный момент обратную связь вверх и вниз по соответствующей обратной связи.

В IE8 после завершения действий slideUp () / slideDown () поле между полями уменьшается.

Это проблема с анимацией jQuery или ошибка отображения в IE8?

Ответы [ 4 ]

23 голосов
/ 21 июля 2010

переполнение: скрыто;

должен сделать работу:)

5 голосов
/ 13 апреля 2010

У меня нет решения для вас, используя поля, но если вы замените поле отступом, IE8 подойдет. В вашем случае вам понадобится дополнительный контейнер div, потому что вы уже используете заполнение и у вас установлен цвет фона.

Итак, ваше решение может выглядеть так:

<div class="assessment">
  <div class="inner">
    <div class="question">
...

.assessment { 
  padding-top: 20px; 
  background: transparent; 
}

.assessment .inner {
  background-color:#DDDDDD;
  border:1px solid #CCCCCC;
  color:#555555;
  display:block;
  padding:10px 0;
  text-align:left;
  width:100%;
}

Приветствие TJ

2 голосов
/ 04 сентября 2012

Просто обновляю эту старую ветку своим решением, так как я не смог решить проблему с помощью CSS. Я использовал функцию обратного вызова slideToggle, чтобы сфокусироваться на теле документа, потому что заметил, что щелчок в любом месте страницы вызывал перекомпоновку DOM и возвращались поля.

.slideToggle(
    500,
    function() {
        document.body.focus();
    }
);
0 голосов
/ 03 июля 2015

У меня все еще были проблемы с пропуском полей при использовании этого предложения «переполнение: скрыто», и я решил просто полностью отключить функциональность slideUp / slideDown в IE8, заменив функцию jQuery «по умолчанию» пользовательской функцией, которая все равно будет отображать скрыть элемент, но только при использовании IE8.

Для этого я использовал условный комментарий IE , чтобы добавить класс к элементу html, например:

<!--[if IE 8]><html class="ie8"><![endif]-->

Затем я определил следующую функцию в своем javascript для переопределения функции slideUp / slideDown, вот так:

(function($) {
    // disable slideDown/slideUp in IE8 due to margin removal issue
    if ($('html').hasClass('ie8')) {
        $.fn.slideDown = function() {
            return this.show();
        };        
        $.fn.slideUp = function() {
            return this.hide();
        };
    }
})(jQuery);

И это решило проблему для меня, насколько я понимаю. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...