Задать вопрос

Модальные окна Bootstrap 3 и полосы прокрутки — в чем может быть проблема?

При вызове модального окна в бутстрапе страница дергается из-за исчезновения боковых полос прокрутки. Дергается в опере, хроме и мозилле. В эксплорере 11 к этому делу красиво подошли и полосы сделали не в окне, а поверх него, но им мало кто пользуется, а потому вопрос: можно ли как-то красиво обойти это дергание без ущерба функционалу?

На одном из сайтов поставил модальному окну overflow:hidden, а для body оставил прокрутку, но это решение подходит не везде. Или в будущем только отказываться от родных модальных окон бутстрапа?
  • Вопрос задан
  • 15154 просмотра
Подписаться 5 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Skypro
    Создание сайтов с нуля
    9 месяцев
    Далее
  • Skypro
    Веб-разработка для фриланса
    9 месяцев
    Далее
Решения вопроса 1
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Есть такой вариант, но он слегка попахивает )
Оборачиваете весь контент в блок и перед открытие модального окна узнаете ширину блока и прописываете этому блоку эту ширину. Исчезновение скролла в таком случае не повлияет на контент. Естественно, при закрытии модального окна ширину надо сбрасывать. Не совсем понимаю, почему скролл исчезает? Для body прописывается overflow:hidden ?
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@zyets
Тоже столкнулся с подобной бедой, только, очевидно, наоборот!...
В моем случае было так:

Я всегда ставлю принудительно:
html{
	overflow-y: scroll;
	overflow-x: auto;
}


Для того, чтоб показывать полосу прокрутки на всех страницах. Зачем? Вот тут можно почитать:
xiper.net/collect/html-and-css-tricks/css-tricks/t...

В свою очередь в Bootstrap, при открытии модального окна, скролл-бар у html отключается (зачем и каким образом хз, не лез в такие дебри)
Чтобы не был дергания, бутстрап ставит для body заглушку в виде padding-right: 15px; на время открытого окна!
Поэтому в моем случае это лечится одной строчкой css:
body{
	padding-right: 0 !important;
}
Ответ написан
Комментировать
HDApache
@HDApache
PHP программист
Ну как вариант сделайте горизонтальную прокрутку видимой всегда

body {
    overflow-y: scroll;
}


Тогда ширина body не будут меняться если вдруг появится или исчезнет контент, соответственно диалог не будет перестраиваться и как следствие дерганья не будет...
Ответ написан
У меня сработало так

1. Убираем дерганье
html {
  overflow-y: scroll;
}

2. Скрываем вторую полосу прокрутки
.modal {
    margin-right: -20px;
}

Единственное: При большом количестве контента в модале, не видно прокрутки. Но в моем случае - это не столь важно...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
DevTeam.Space Москва
от 1 000 до 3 000 $
Сбер Москва
от 200 000 до 300 000 ₽