Saat Anda menggunakan dialog jquery UI, semuanya bekerja dengan baik, kecuali satu hal. Saat browser diubah ukurannya, dialog tetap berada di posisi awal yang bisa sangat mengganggu.
Anda dapat mengujinya di: http://jqueryui.com/demos/dialog/
Klik pada contoh "dialog modal" dan ubah ukuran browser Anda.
Saya ingin mengizinkan dialog menjadi pusat otomatis saat browser mengubah ukuran. Bisakah ini dilakukan dengan cara yang efisien untuk semua dialog saya di aplikasi saya?
Terima kasih banyak!
sumber
$(".ui-dialog-content").dialog("option", "position", "center");
ini akan memeriksa dialog apa pun :)Atau jawaban Ellesedil,
Solusi itu tidak langsung berfungsi untuk saya, Jadi saya melakukan hal berikut yang juga merupakan versi dinamis tetapi dipersingkat:
1 untuk Ellesedil sekalipun
EDIT:
Versi yang jauh lebih pendek yang berfungsi baik untuk satu dialog:
Tidak perlu .each () digunakan mungkin jika Anda memiliki beberapa dialog unik yang tidak ingin Anda sentuh.
sumber
.resize()
dan di dalam jika penghitung mencapai10
atau20
kemudianbreak;
, saya belum punya masalah ini, saya tidak melayani Perangkat / Browser tersebut. Anda harus mencoba solusi yang jika macet, Anda dapat keluar dari situJawaban yang lebih komprehensif, yang menggunakan jawaban Nick dengan cara yang lebih fleksibel dapat ditemukan di sini .
Adaptasi dari kode relevansi dari utas itu ada di bawah. Ekstensi ini pada dasarnya membuat setelan dialog baru yang disebut autoReposition yang menerima benar atau salah. Kode sebagai default tertulis pilihan true. Masukkan ini ke dalam file .js dalam proyek Anda sehingga halaman Anda dapat memanfaatkannya.
Ini memungkinkan Anda untuk memberikan "benar" atau "salah" untuk pengaturan baru ini saat Anda membuat dialog di halaman Anda.
Sekarang dialog ini akan selalu mengubah posisinya sendiri. AutoReposition (atau apa pun yang Anda sebut pengaturan) dapat menangani dialog apa pun yang tidak memiliki posisi default dan secara otomatis mengubah posisinya saat jendela diubah ukurannya. Karena Anda menyetel ini saat membuat dialog, Anda tidak perlu mengidentifikasi dialog karena fungsionalitas pemosisian ulang sudah ada di dalam dialog itu sendiri. Dan bagian terbaiknya adalah karena ini diatur per dialog, Anda dapat membuat beberapa dialog mengubah posisinya sendiri dan yang lain tetap di tempatnya.
Penghargaan untuk pengguna scott.gonzalez di forum jQuery untuk solusi lengkapnya.
sumber
$(".ui-dialog-content:visible").each(function () { if ($(this).dialog('option', 'autoReposition')) { $(this).dialog('option', 'position', $(this).dialog('option', 'position')); } });
Ini berfungsi dengan baik :)$( "#dialog" ).dialog( "option", "position" )
ke$(this).data("dialog").options.position
nanti. Bagaimanapun, sekarang jawaban ini berhasil!Opsi hanya CSS lain yang berfungsi adalah ini. Margin negatif harus sama dengan setengah tinggi dan setengah lebar Anda. Jadi dalam kasus ini, dialog saya adalah lebar 720px kali 400px. Ini memusatkannya secara vertikal dan horizontal.
sumber
Sebagai alternatif, posisi ui jQuery dapat digunakan,
sumber
Halo semuanya!
Solusi Vanilla JS:
sumber
$.isVanillaJS == false