Я использую фреймворк bootstrap и Parse для создания небольшого веб-приложения. Но эти модальные окна Bootstrap продолжают добавлять padding-right к телу после закрытия. Как это решить?
Я попытался поместить этот код в свой javascript:
$('.modal').on('hide.bs.modal', function (e) {
$("element.style").css("padding-right","0");
});
Но не работает. Кто-нибудь знает, как это исправить?
Мой код:
<button type="button" class="btn btn-lg btn-default" data-toggle="modal" data-target="#loginModal">Admin panel</button>
<div id="loginModal" class="modal fade" role="dialog">
<div class="modal-dialog modal-sm">
<!-- Modal content -->
<div class="modal-content">
<!-- header -->
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Login</h4>
</div>
<!-- body -->
<div class="modal-body text-center" >
<input class='form-control' type="text" id="userName" placeholder="Username" ng-model='username'>
<input class='form-control' type="password" id="password" placeholder="Password" ng-model='password'>
<div class="modal-footer">
<button type="button" class="btn btn-default" id="loginButton" ng-click="goToAdminPanel()">Login</button>
<button type="button" class="btn btn-default" data-dismiss="modal" id="closeButton">Close</button>
</div>
</div>
</div>
</div>
</div>
<div id="adminPanel" class="modal fade" role="dialog">
<div class="modal-dialog modal-lg">
<!-- Modal content -->
<div class="modal-content">
<!-- header -->
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Admin Panel</h4>
</div>
<!-- body -->
<div class="modal-body" >
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" id="saveButton">Save</button>
<button type="button" class="btn btn-default" data-dismiss="modal" id="closeButton">Close</button>
</div>
</div>
</div>
</div>
$scope.goToAdminPanel = function(){
Parse.User.logIn($scope.username,$scope.password,{
success: function(user){
$('#loginModal').modal('hide');
$('#adminPanel').modal();
},
error: function(user, error) {
alert('Wrong username and/or password');
}
});
}
Я использую фреймворк bootstrap и Parse для создания небольшого веб-приложения. Но эти модальные окна Bootstrap продолжают добавлять padding-right к телу после закрытия. Как это решить?
javascript
jquery
html
css
twitter-bootstrap
Phuwin
источник
источник
padding-right
а также добавить класс какmodal-open
дляoverflow: hidden
его только для сокрытия полосы прокрутки .modal-open
помощью,padding-right:0 !important;
но это не работает, знаете почему?padding-right
запускаете обновление свойства css для правильного события, но запускаете его для неправильного элемента. Его нужно выстрелить вbody
элемент. Пожалуйста, ознакомьтесь с моим ответом ниже.Ответы:
Это может быть сбой из модального окна Bootstrap. Судя по моим тестам, проблема в том
#adminPanel
, что инициализируется, хотя#loginModal
еще не полностью закрыто. В обходном может быть удаление анимации, удаливfade
класс на#adminPanel
и#loginModal
или установить тайм - аут (~ 500 мс) перед вызовом$('#adminPanel').modal();
. Надеюсь это поможет.источник
.fade
от#loginModal
и она работает.Я только что использовал исправление css ниже, и оно у меня работает
источник
hide.bs.modal
запускаться в событии начальной загрузки. Пожалуйста, ознакомьтесь с моим ответом ниже.Просто изменил на
источник
modal
панель, иbody.modal-open
прокладка. Но это исправило это просто красивоЧистое решение css, сохраняющее функциональность начальной загрузки такой, какой она должна быть.
Проблема вызвана функцией в jQuery начальной загрузки, которая добавляет небольшой отступ справа при открытии модального окна, если на странице есть полоса прокрутки. Это останавливает перемещение содержимого вашего тела при открытии модального окна, и это приятная функция. Но это вызывает эту ошибку.
Многие другие решения, представленные здесь, нарушают эту функцию и заставляют ваш контент немного сдвигаться при открытии модального окна. Это решение сохранит возможность модального окна начальной загрузки не перемещать содержимое, но исправит ошибку.
источник
Если вас больше беспокоит
padding-right
связанное с этим, то вы можете сделать этоjQuery :
это будет
addClass
для вас,body
а затем использовать этоCSS :
и это поможет вам избавиться
padding-right
.Но если вас также беспокоит скрытие,
scroll
вы также должны добавить это:CSS :
Вот JSFiddle
Пожалуйста, посмотрите, он поможет вам.
источник
padding-right
кbody
и увеличивает количествоpadding-right
по 15px каждый раз , когда я закрыть панели администратора.$(document).ready(function(){
пытается поместить ваш код в нее.Просто откройте bootstrap.min.css
Найдите эту строку (по умолчанию)
и измените его как
Он будет работать для всех модальных окон сайта. Вы можете сделать переполнение: авто; если вы хотите сохранить полосу прокрутки, как она есть при открытии модального диалога.
источник
У меня была такая же проблема ОЧЕНЬ долгое время. Ни один из ответов здесь не работал! Но следующее исправило это!
Есть два события, которые запускаются при закрытии модального окна: сначала это
hide.bs.modal
, а затем этоhidden.bs.modal
. Вы должны иметь возможность использовать только один.источник
hide.bs.modal
иhidden.bs.modal
. Но работал отлично, когда я удалилhide.bs.modal
от слушателя. :)легко исправить
добавить этот класс
Это переопределение, но работает
источник
Я просто удалил
fade
класс и изменил эффект затухания класса наanimation.css
. Я надеюсь, это поможет.источник
removeAttr не сработает, вам нужно удалить свойство CSS следующим образом:
При отсутствии значения свойства свойство удаляется.
источник
Я загружаю CSS-код начальной загрузки 3.3.0 по умолчанию, и у меня возникла аналогичная проблема. Решено добавлением этого CSS:
body.modal-open { overflow:inherit; padding-right:inherit !important;
}! Важно, потому что модальный javascript начальной загрузки программно добавляет 15px отступа вправо. Я предполагаю, что это компенсирует полосу прокрутки, но я не хочу этого.
источник
С Bootstrap 4 это сработало для меня:
источник
У меня такая же проблема с Bootstrap 3.3.7 и моим решением для фиксированной панели навигации: добавление этого стиля в ваш собственный CSS.
это заставит ваше модальное окно отображаться, пока окно прокрутки все еще работает. спасибо, надеюсь, это тебе тоже поможет
источник
Я знаю, что это старый вопрос, но ни один из ответов здесь не устранил проблему в моих аналогичных ситуациях, и я подумал, что некоторым разработчикам было бы полезно прочитать мое решение.
Я использую, чтобы добавить немного CSS в тело при открытии модального окна на веб-сайтах, где он все еще используется bootstrap 3.
источник
Мое решение не требует дополнительных CSS.
Как указывает @Orland, одно событие все еще происходит, когда начинается другое. Мое решение - запустить второе событие (показывающее
adminPanel
модальное окно) только после завершения первого (скрытиеloginModal
модального).Вы можете сделать это, прикрепив слушателя к
hidden.bs.modal
событию вашегоloginModal
модального окна, как показано ниже:А при необходимости просто скройте
loginModal
модальное окно.Конечно, вы можете реализовать свою собственную логику внутри слушателя, чтобы решить, показывать или нет
adminPanel
модальное окно.Вы можете получить больше информации о модальных событиях Bootstrap здесь .
Удачи.
источник
Модели Bootstrap добавляют этот padding-right к телу, если тело переполнено.
В bootstrap 3.3.6 (версия, которую я использую) это функция, отвечающая за добавление этого padding-right к элементу body: https://github.com/twbs/bootstrap/blob/v3.3.6/dist/js /bootstrap.js#L1180
Быстрый обходной путь - просто перезаписать эту функцию после вызова файла bootstrap.js:
Это устранило проблему для меня.
источник
источник
Вот что сработало для меня:
источник
Просто удалите
data-target
с кнопки и загрузите модальное окно с помощью jQuery.jQuery:
источник
Я покопался в javascript начальной загрузки и обнаружил, что модальный код устанавливает правильное заполнение в вызываемой функции,
adjustDialog()
которая определена в модальном прототипе и отображается в jQuery. Размещение следующего кода где-нибудь, чтобы переопределить эту функцию, чтобы она ничего не делала, помогло мне (хотя я не знаю, каковы последствия того, что эта функция пока не установлена !!)$.fn.modal.Constructor.prototype.adjustDialog = function () { };
источник
Это может решить проблему
источник
Это ошибка начальной загрузки, исправленная в v4-dev: https://github.com/twbs/bootstrap/pull/18441, до тех пор добавление класса CSS ниже должно помочь.
источник
У меня была такая же проблема с модальными окнами и ajax. Это произошло из-за того, что файл JS упоминался дважды, как на первой странице, так и на странице, вызванной ajax, поэтому, когда модальное окно было закрыто, оно дважды вызывало событие JS, которое, по умолчанию, добавляет право отступа 17 пикселей.
источник
Работал у меня. Обратите внимание, что полоса прокрутки принудительно установлена в теле, но если у вас есть "прокручиваемая" страница, это не имеет значения (?)
источник
Попробуй это
Он добавит отступ справа на 0 пикселей к телу после закрытия модального окна.
источник
Когда вы открываете модальное окно, предыдущее модальное окно еще не закрыто полностью. Чтобы исправить это, просто откройте новое модальное окно в то время, когда все модальные окна полностью закрыты, проверьте коды ниже:
источник
Теперь это устарело, и все предлагаемые здесь решения могут работать. Я просто добавляю что-то новое на случай, если это может кому-то помочь: у меня была такая же проблема, и я заметил, что открытие модального окна добавляло маржу справа в мою боковую навигацию (вероятно, своего рода наследование от дополнения, добавленного к телу). Добавление {margin-right: 0! Important;} в мою навигационную панель помогло.
источник
(Bootstrap v3.3.7) Из своего инспектора браузера я увидел, что это прямо установлено в свойстве стиля элемента , ведьма переопределяет свойства класса.
Я попытался «сбросить» значение paddig-right, когда модальное окно отображается с помощью:
Но он возвращается, как только изменяется размер окна :( (вероятно, из сценария плагина).
Это решение сработало для меня:
источник
Как говорит @Orland, если вы используете какой-то эффект, такой как затухание, тогда нам нужно подождать, прежде чем отображать модальное окно, это немного взломано, но поможет.
источник
Надеюсь, этот ответ еще найдется. В bootstrap.js есть функция под названием resetScrollbar (), по какой-то глупой причине разработчики решили добавить размеры полосы прокрутки к правому отступу тела. поэтому технически, если вы просто установите правое заполнение в пустую строку, это решит проблему
источник