Saya menggunakan kerangka bootstrap dan Parse untuk membangun aplikasi web kecil. Tetapi modal Bootstrap tersebut terus menambahkan padding-right ke body setelah ditutup. Bagaimana mengatasi ini?
Saya mencoba memasukkan kode ini di javascript saya:
$('.modal').on('hide.bs.modal', function (e) {
$("element.style").css("padding-right","0");
});
Tapi itu tidak berhasil. Apakah ada yang tahu cara memperbaikinya?
Kode saya:
<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');
}
});
}
Saya menggunakan kerangka bootstrap dan Parse untuk membangun aplikasi web kecil. Tetapi modal Bootstrap tersebut terus menambahkan padding-right ke body setelah ditutup. Bagaimana mengatasi ini?
javascript
jquery
html
css
twitter-bootstrap
phuwin
sumber
sumber
padding-right
tetapi juga menambah kelasmodal-open
karenaoverflow: hidden
hanya untuk menyembunyikan bilah gulir .modal-open
denganpadding-right:0 !important;
tetapi tidak berhasil, tahukah Anda mengapa?padding-right
pembaruan properti css pada peristiwa yang benar, tetapi Anda mengaktifkannya pada elemen yang salah. Itu perlu ditembakkan padabody
elemen. Silakan lihat jawaban saya di bawah ini.Jawaban:
Ini mungkin kesalahan dari modal Bootstrap. Dari pengujian saya, sepertinya masalahnya adalah yang
#adminPanel
sedang diinisialisasi sementara#loginModal
belum sepenuhnya ditutup. Solusinya dapat menghapus animasi dengan menghapusfade
kelas#adminPanel
dan#loginModal
atau menyetel waktu tunggu (~ 500 md) sebelum memanggil$('#adminPanel').modal();
. Semoga ini membantu.sumber
.fade
dari#loginModal
dan berhasil.Saya baru saja menggunakan perbaikan css di bawah ini dan berfungsi untuk saya
sumber
hide.bs.modal
acara bootstrap. Silakan lihat jawaban saya di bawah ini.Baru saja berubah menjadi
sumber
modal
panel danbody.modal-open
bantalannya. Tapi ini memperbaikinya dengan baikSolusi css murni yang menjaga fungsionalitas bootstrap sebagaimana mestinya.
Masalahnya disebabkan oleh fungsi di jQuery bootstrap yang menambahkan sedikit padding-right saat jendela modal terbuka, jika ada bilah gulir di halaman. Itu menghentikan konten tubuh Anda bergeser saat modal terbuka, dan ini adalah fitur yang bagus. Tapi itu menyebabkan bug ini.
Banyak solusi lain yang diberikan di sini merusak fitur itu, dan membuat konten Anda sedikit bergeser ketika modal terbuka. Solusi ini akan mempertahankan fitur modal bootstrap tidak mengalihkan konten, tetapi memperbaiki bug.
sumber
Jika Anda lebih mementingkan
padding-right
hal terkait maka Anda bisa melakukan inijQuery :
ini akan
addClass
untuk Andabody
dan kemudian menggunakan iniCSS :
dan ini akan membantu Anda untuk menyingkirkan
padding-right
.Tetapi jika Anda juga khawatir tentang persembunyiannya
scroll
Anda harus menambahkan ini juga:CSS :
Inilah JSFiddle
Silakan lihat, itu akan melakukan trik untuk Anda.
sumber
padding-right
untukbody
dan meningkatkan jumlahpadding-right
oleh 15px setiap kali aku menutup Panel Admin.$(document).ready(function(){
dapat lagi memasukkan kode Anda ke dalamnya.Buka saja bootstrap.min.css
Temukan baris ini (default)
dan mengubahnya sebagai
Ini akan berfungsi untuk setiap modal situs. Anda dapat melakukan overflow: auto; jika Anda ingin tetap scrollbar seperti saat membuka dialog modal.
sumber
Saya mengalami masalah yang sama untuk waktu yang SANGAT lama. Tak satu pun jawaban di sini berhasil! Tetapi hal berikut memperbaikinya!
Ada dua peristiwa yang terjadi saat menutup modal, pertama
hide.bs.modal
, dan kemudianhidden.bs.modal
. Anda harus bisa menggunakan hanya satu.sumber
hide.bs.modal
danhidden.bs.modal
. Tetapi bekerja dengan sempurna ketika saya dihapushide.bs.modal
dari pendengar. :)perbaikan mudah
tambahkan kelas ini
Ini menimpa tetapi berfungsi
sumber
Saya baru saja menghapus
fade
kelas dan mengubah efek fade kelasanimation.css
. Saya harap ini akan membantu.sumber
removeAttr tidak akan berfungsi, Anda harus menghapus properti CSS seperti ini:
Tanpa nilai properti, properti tersebut dihapus.
sumber
Saya memuat CSS bootstrap 3.3.0 default dan mengalami masalah serupa. Dipecahkan dengan menambahkan CSS ini:
body.modal-open { overflow:inherit; padding-right:inherit !important;
}Yang! Penting adalah karena javascript modal bootstrap menambahkan 15px padding ke kanan secara programatik. Dugaan saya adalah untuk mengimbangi scrollbar, tetapi saya tidak menginginkannya.
sumber
Dengan Bootstrap 4 ini berhasil untuk saya:
sumber
Saya memiliki masalah yang sama dengan Bootstrap 3.3.7 dan solusi saya untuk navbar tetap: Menambahkan gaya ini ke css kustom Anda.
itu akan membuat modal Anda ditampilkan saat jendela gulir masih berfungsi. terima kasih, semoga ini akan membantu Anda juga
sumber
Saya tahu ini adalah pertanyaan lama, tetapi tidak ada jawaban dari sini yang menghilangkan masalah dalam situasi saya yang serupa dan saya pikir akan berguna bagi beberapa pengembang untuk membaca solusi saya juga.
Saya menggunakan untuk menambahkan beberapa CSS ke tubuh ketika sebuah modal dibuka, di situs web di mana itu masih digunakan bootstrap 3.
sumber
Solusi saya tidak memerlukan CSS tambahan.
Seperti yang ditunjukkan oleh @Orland, satu acara masih berlangsung saat acara lainnya dimulai. Solusi saya adalah tentang memulai acara kedua (menunjukkan
adminPanel
modal) hanya ketika yang pertama selesai (menyembunyikanloginModal
modal).Anda dapat melakukannya dengan melampirkan listener ke
hidden.bs.modal
acaraloginModal
modal Anda seperti di bawah ini:Dan, bila perlu, cukup sembunyikan
loginModal
modal.Tentu saja Anda dapat mengimplementasikan logika Anda sendiri di dalam pendengar untuk memutuskan untuk menampilkan atau tidak
adminPanel
modal.Anda bisa mendapatkan info lebih lanjut tentang Bootstrap Modal Events di sini .
Semoga berhasil.
sumber
Model bootstrap menambahkan bantalan yang tepat ke bodi jika bodi meluap.
Pada bootstrap 3.3.6 (versi yang saya gunakan) ini adalah fungsi yang bertanggung jawab untuk menambahkan padding-right ke elemen body: https://github.com/twbs/bootstrap/blob/v3.3.6/dist/js /bootstrap.js#L1180
Solusi cepatnya adalah dengan menimpa fungsi itu setelah memanggil file bootstrap.js:
Ini memperbaiki masalah saya.
sumber
sumber
Inilah yang berhasil untuk saya:
sumber
Hapus saja
data-target
dari tombol dan muat modal menggunakan jQuery.jQuery:
sumber
Saya menggali javascript bootstrap dan menemukan bahwa kode Modal menetapkan padding yang tepat dalam fungsi yang disebut
adjustDialog()
yang didefinisikan pada prototipe Modal dan diekspos di jQuery. Menempatkan kode berikut di suatu tempat untuk menimpa fungsi ini agar tidak melakukan apa-apa melakukan trik bagi saya (meskipun saya tidak tahu apa konsekuensi dari tidak menyetel ini !!)$.fn.modal.Constructor.prototype.adjustDialog = function () { };
sumber
Ini bisa menyelesaikan masalah
sumber
Ini adalah bug bootstrap dan diperbaiki di v4-dev: https://github.com/twbs/bootstrap/pull/18441 hingga saat itu menambahkan kelas CSS di bawah akan membantu.
sumber
Saya memiliki masalah yang sama menggunakan modals dan ajax. Itu karena file JS direferensikan dua kali, baik di halaman pertama dan di halaman yang dipanggil oleh ajax, jadi ketika modal ditutup, itu memanggil event JS dua kali, secara default, menambahkan padding-right 17px.
sumber
Bekerja untuk saya. Perhatikan bahwa Scrollbar dipaksa masuk - tetapi jika Anda memiliki halaman "scrolling", tidak masalah (?)
sumber
Coba ini
Ini akan menambahkan padding tepat 0px ke body setelah modal close.
sumber
Itu terjadi ketika Anda membuka modal bahwa modal sebelumnya belum sepenuhnya ditutup. Untuk memperbaikinya cukup buka modal baru pada saat semua modal ditutup sepenuhnya, periksa kode di bawah ini:
sumber
Saya sekarang ini sudah tua, dan semua solusi yang ditawarkan di sini mungkin berfungsi. Saya hanya menambahkan sesuatu yang baru jika hal itu dapat membantu seseorang: Saya memiliki masalah yang sama dan memperhatikan bahwa membuka modal menambahkan margin-right ke sidenav saya (mungkin semacam warisan dari padding yang ditambahkan ke tubuh). Menambahkan {margin-right: 0! Important;} ke sidenav saya berhasil.
sumber
(Bootstrap v3.3.7) Dari inspektur browser saya, saya melihat bahwa ini secara langsung diatur dalam properti gaya elemen , penyihir menimpa properti kelas.
Saya mencoba untuk 'mengatur ulang' nilai paddig-right ketika modal ditampilkan dengan:
Tapi itu kembali segera setelah jendela diubah ukurannya :( (mungkin dari skrip pluggin).
Solusi ini berhasil untuk saya:
sumber
Seperti yang dikatakan @Orland jika Anda menggunakan beberapa efek seperti fade maka di sana kita harus menunggu sebelum menampilkan modal, ini agak hacky tetapi akan berhasil.
sumber
Saya berharap masih ada yang membutuhkan jawaban ini. Ada fungsi yang disebut resetScrollbar () di bootstrap.js, karena alasan bodoh pengembang memutuskan untuk menambahkan dimensi scrollbar ke padding badan kanan. jadi secara teknis jika Anda hanya mengatur padding kanan ke string kosong itu akan memperbaiki masalah
sumber