Saya memiliki situs web dengan DIV berpusat-pusat. Sekarang, beberapa halaman perlu digulir, beberapa tidak. Ketika saya berpindah dari satu tipe ke tipe lainnya, tampilan scrollbar memindahkan halaman beberapa piksel ke samping. Apakah ada cara untuk menghindari ini tanpa secara eksplisit menunjukkan scrollbar pada setiap halaman?
218
overflow-y: overlay
di utas ini?overflow-y: overlay
disusutkan: developer.mozilla.org/en-US/docs/Web/CSS/overflowJawaban:
overflow-y: gulir sudah benar, tetapi Anda harus menggunakannya dengan tag html, bukan badan atau Anda mendapatkan bilah gulir ganda di IE 7
Jadi css yang benar adalah:
sumber
Bungkus konten elemen yang dapat digulir ke dalam div dan terapkan
padding-left: calc(100vw - 100%);
.Caranya adalah yang
100vw
mewakili 100% dari viewport termasuk scrollbar. Jika Anda mengurangi100%
, yang merupakan ruang yang tersedia tanpa scrollbar, Anda berakhir dengan lebar scrollbar atau0
jika tidak ada. Membuat padding dengan lebar tersebut di sebelah kiri akan mensimulasikan scrollbar kedua, menggeser konten yang berada di tengah kembali ke kanan.Harap dicatat bahwa ini hanya akan berfungsi jika elemen yang dapat digulir menggunakan seluruh lebar halaman, tetapi ini seharusnya tidak menjadi masalah sebagian besar waktu karena hanya ada beberapa kasus di mana Anda telah memusatkan konten yang dapat digulir.
sumber
100vw
dan100%
mengukur hal-hal yang berbeda, jadi saya telah belajar sesuatu yang bermanfaat dari ini!@media screen and (min-width: 800px) {...}
. Dalam kasus ketika konten akan sesuai dengan lebar halaman. Misalnya pada resolusi kecil akan ada kesenjangan yang tidak diperlukan, memindahkan konten ke kananSaya pikir tidak. Tapi styling
body
denganoverflow: scroll
harus dilakukan. Anda sepertinya tahu itu.sumber
overflow-y: scroll
:)Dengan scroll selalu ditampilkan, mungkin tidak bagus untuk tata letak.
Cobalah untuk membatasi lebar tubuh dengan css3
vw
adalah lebar viewport (lihat tautan ini untuk penjelasan)calc
hitung dalam css334px
singkatan untuk lebar scrollbar ganda (lihat ini untuk diperbaiki atau ini untuk menghitung jika Anda tidak mempercayai ukuran tetap)sumber
padding-left: 34px;
untuk memusatkan halaman saya secara merata.Contoh . Klik tombol "ubah ketinggian minimum".
Dengan
calc(100vw - 100%)
kita dapat menghitung lebar scrollbar (dan jika tidak ditampilkan, itu akan menjadi 0). Ide: dengan menggunakan margin negatif kanan, kita dapat meningkatkan lebar<html>
hingga lebar ini. Anda akan melihat bilah gulir horizontal - itu harus disembunyikan menggunakanoverflow-x: hidden
.sumber
calc(100% - 100vw)
alih-alih mengalikan dengan-1
?Saya tidak tahu apakah ini posting lama, tetapi saya memiliki masalah yang sama dan jika Anda ingin menggulir secara vertikal, Anda harus mencoba
overflow-y:scroll
sumber
Jika mengubah ukuran atau setelah memuat beberapa data itu menambahkan bilah gulir maka Anda dapat mencoba mengikuti, membuat kelas dan menerapkan kelas ini.
sumber
Saya telah memecahkan masalah di salah satu situs web saya dengan secara eksplisit mengatur lebar badan javascript dengan ukuran viewport dikurangi lebar bilah gulir. Saya menggunakan fungsi berbasis jQuery yang didokumentasikan di sini untuk menentukan lebar scrollbar.
sumber
Memperluas jawaban menggunakan ini:
Satu komentator menyarankan menambahkan padding kiri juga untuk menjaga centering:
Tetapi hal-hal tidak terlihat benar jika konten Anda lebih luas dari viewport. Untuk memperbaikinya, Anda dapat menggunakan kueri media, seperti ini:
Di mana 1058px = lebar konten + 17 * 2
Ini memungkinkan scrollbar horizontal menangani x overflow dan membuat konten terpusat terpusat ketika viewport cukup lebar untuk memuat konten lebar tetap Anda
sumber
Memperluas jawaban Rapti , ini seharusnya bekerja dengan baik, tetapi menambahkan lebih banyak margin di sisi kanan
body
dan menyembunyikannya denganhtml
margin negatif , daripada menambahkan bantalan tambahan yang berpotensi mempengaruhi tata letak halaman. Dengan cara ini, tidak ada yang berubah pada halaman aktual (dalam kebanyakan kasus), dan kode ini masih berfungsi.sumber
overflow-x: hidden
dan memperbaikinya.Solusi @ kashesandr bekerja untuk saya tetapi untuk menyembunyikan scrollbar horizontal saya menambahkan satu gaya lagi untuk tubuh. di sini adalah solusi lengkap:
CSS
JS
Solusi JS Only (ketika modal ke-2 dibuka dari modal ke-1):
sumber
Saya mencoba untuk memperbaiki kemungkinan masalah yang sama yang disebabkan oleh
.modal-open
kelas bootstrap twitter diterapkanbody
. Solusinyahtml {overflow-y: scroll}
tidak membantu. Salah satu solusi yang mungkin saya temukan adalah menambahkan{width: 100%; width: 100vw}
kehtml
elemen.sumber
html { width: 100vw; }
bekerja untuk sayaSaya dulu memiliki masalah itu, tetapi cara paling mudah untuk memperbaikinya adalah ini (ini berfungsi untuk saya):
pada jenis file CSS:
sesederhana itu! :)
sumber
Solusi yang diposting menggunakan calc (100vw - 100%) ada di jalur yang benar, tetapi ada masalah dengan ini: Anda akan selamanya memiliki margin di sebelah kiri ukuran scrollbar, bahkan jika Anda mengubah ukuran jendela sehingga konten mengisi seluruh viewport.
Jika Anda mencoba menyiasatinya dengan kueri media, Anda akan memiliki momen gertakan yang canggung karena margin tidak akan semakin kecil saat Anda mengubah ukuran jendela.
Inilah solusi yang mengatasi itu dan AFAIK tidak memiliki kekurangan:
Alih-alih menggunakan margin: otomatis untuk memusatkan konten Anda, gunakan ini:
Ganti 500px dengan setengah lebar maksimum konten Anda (jadi dalam contoh ini, lebar maksimum konten adalah 1000px). Konten sekarang akan tetap terpusat dan margin akan semakin berkurang sampai konten memenuhi viewport.
Untuk menghentikan margin agar tidak negatif ketika viewport lebih kecil dari max-width, tambahkan saja kueri media seperti ini:
Dan lagi!
sumber
Jika lebar tabel tidak akan berubah, Anda dapat mengatur lebar elemen (seperti tbody) yang berisi bilah gulir> 100% (memungkinkan ruang tambahan untuk bilah gulir) dan mengatur overflow-y untuk "overlay" (jadi bahwa bilah gulir tetap tetap, dan tidak akan menggeser tabel ke kiri saat muncul). Juga atur ketinggian tetap untuk elemen dengan bilah gulir, sehingga bilah gulir akan muncul setelah ketinggian terlampaui. Seperti itu:
Catatan: Anda harus menyesuaikan lebar% secara manual karena% ruang yang digunakan bilah gulir akan relatif terhadap lebar meja Anda (yaitu: lebar meja yang lebih kecil, lebih banyak% yang diperlukan agar sesuai dengan bilah gulir, karena ukurannya dalam piksel konstan) )
Contoh tabel dinamis:
sumber
Cukup dengan mengatur lebar elemen kontainer Anda seperti ini akan melakukan trik
Ini akan membuat elemen itu mengabaikan scrollbar dan berfungsi dengan warna latar belakang atau gambar.
sumber
Saya menggunakan beberapa jquery untuk menyelesaikan ini
sumber
sumber
Berlawanan dengan jawaban yang diterima yang menyarankan bilah gulir permanen di jendela browser bahkan jika konten tidak meluap layar , saya lebih suka menggunakan:
Ini karena tampilan bilah gulir lebih masuk akal jika kontennya benar-benar meluap .
Ini lebih masuk akal daripada ini .
sumber