jQuery slideToggle добавление пробела

0

Я использую slideToggle чтобы отображать/скрывать подменю, но всякий раз, когда я переключаю подменю, добавляется немного дополнительного пространства в нижней части содержащего элемента. Это только на короткую секунду.

Любая идея, почему это происходит?

Вы можете видеть поведение в этой скрипке.

JS

$( ".dd" ).click(function() {
  $( ".submenu" ).slideToggle( "slow", function() {
  });
});
  • 0
    Это связано с полями, подменю добавляет margin-bottom:12px а также родительское меню, делая его двойным, когда вы открываете / закрываете его jsfiddle.net/3dX3T/19

3 ответа

3
Лучший ответ

Ваша маржа рушится, и это вызывает скачок с помощью метода slideToggle(). Исправить это?

Добавить

li {
    overflow:auto;
}

Пример jsFiddle

  • 1
    Это лучший подход для устранения проблемы без дополнительных настроек отступов / полей.
1

Если вы решите не проходить дополнительный маршрут прокладки, это также, похоже, сработает.

Демо-версия JSfiddle

Обновленный CSS

header nav > ul > li {
    display: block;
    margin: 0 0 12px 0;
}

header .submenu li {
    display: block;
    margin: 0 0 12px 0;
}

header nav > ul > li:last-child {
    display: block;
    margin: 0 ;
}
  • 0
    Это, конечно, исправляет скачок, но портит мои отступы / поля. Но я могу это отрегулировать , так что это тоже работает.
0

решение состоит в том, чтобы добавить 1px дополнение вместо 0 дополнений

ul, li {
    list-style: none;
    margin:0;
    padding:1px;
}

наслаждаться :)

  • 1
    Хорошо, но почему? Объяснение будет полезно для дальнейшего использования.
  • 0
    stackoverflow.com/questions/2283538/...
Показать ещё 1 комментарий

Ещё вопросы

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