Saya punya situs web di sini .
Dilihat di peramban desktop, bilah menu hitam hanya memanjang sampai ke tepi jendela, karena body
sudah overflow-x:hidden
.
Di peramban seluler apa pun, baik Android atau iOS, bilah menu hitam menampilkan lebar penuhnya, yang membawa spasi putih di kanan halaman. Sejauh yang saya tahu, spasi putih ini bahkan bukan bagian dari html
atau body
tag.
Bahkan jika saya mengatur viewport ke lebar tertentu di <head>
:
<meta name="viewport" content="width=1100, initial-scale=1">
Situs diperluas ke 1100px tetapi masih memiliki spasi lebih dari 1100.
Apa yang saya lewatkan? Bagaimana cara menjaga viewport ke 1100 dan memotong overflow?
css
overflow
viewport
mobile-browser
Indigenuity
sumber
sumber
Jawaban:
Membuat div pembungkus situs di dalam
<body>
dan menerapkannyaoverflow-x:hidden
ke pembungkus bukan<body>
atau<html>
memperbaiki masalah.Tampaknya browser yang mengurai
<meta name="viewport">
tag cukup mengabaikanoverflow
atribut padahtml
danbody
tag.Catatan: Anda juga mungkin perlu menambahkan
position: relative
div pembungkus.sumber
overflow
kehidden
, saya harus mengaturposition
kefixed
...overflow-x: hidden
masih tidak berfungsi untuk saya bahkan setelah saya menambahkan tag meta ini. Bisakah Anda membagikan tautan ke situs web Anda di mana ia bekerja?position:relative
bekerja juga.mencoba
bukannya adil
sumber
overflow
apa pun untukhtml
dan / ataubody
dalam kombinasi apa pun tidak menyelesaikan masalah.height:100%;
juga, jika tidak gulir vertikal tidak akan berfungsi dengan baik pada halaman dengan memuat gambar (yang membuat halaman tumbuh tinggi).Komentar VictorS tentang jawaban yang diterima layak menjadi jawaban itu sendiri karena itu adalah solusi yang sangat elegan yang memang berhasil. Dan saya akan menambahkan sedikit kegunaannya.
Catatan Victor menambahkan
position:fixed
karya.Dan memang benar. Namun, itu juga memiliki sedikit efek samping pada dasarnya menggulir ke atas.
position:absolute
mengatasi ini tetapi, memperkenalkan kembali kemampuan untuk menggulir di ponsel.Jika Anda tahu viewport Anda ( plugin saya untuk menambahkan viewport ke
<body>
), Anda bisa menambahkan css toggle untukposition
.Saya juga menambahkan ini untuk mencegah halaman yang mendasarinya dari melompat ke kiri / kanan ketika menampilkan / menyembunyikan modals.
sumber
position:fixed or absolute
mengganggu posisi mereka juga. Tidak cocok / bekerja dalam kasus saya :(Ini adalah solusi paling sederhana untuk menyelesaikan pengguliran horizontal di Safari.
sumber
table-responsive
Bug Bootstrap 4 . Ini solusinya.Seperti yang dinyatakan oleh @Indigenuity, ini tampaknya disebabkan oleh browser yang menguraikan
<meta name="viewport">
tag.Untuk mengatasi masalah ini di sumbernya, coba yang berikut ini:
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
.Dalam pengujian saya, hal ini mencegah pengguna melakukan zoom out untuk melihat konten yang meluap, dan sebagai hasilnya mencegah panning / menggulir ke sana juga.
sumber
initial-scale=1
ke metatag viewport yang ada memang memperbaiki masalah. Terima kasih!minimum-scale=1
yang memperbaikinyabekerja di iOS9
sumber
Jaga agar viewport tidak tersentuh:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Dengan asumsi Anda ingin mencapai efek bilah hitam kontinu ke sisi kanan:
#menubar
tidak boleh melebihi 100% , sesuaikan jari - jari batas sedemikian rupa sehingga sisi kanan kuadrat dan sesuaikan bantalan sehingga meluas sedikit lebih ke kanan . Ubah yang berikut ini untuk Anda#menubar
:Menyesuaikan
padding
ke 10px tentu saja meninggalkan menu kiri ke tepi bar, Anda dapat menempatkan 40px yang tersisa untuk masing-masingli
, 20px di setiap sisi kiri dan kanan:Ketika Anda mengubah ukuran browser lebih kecil, Anda masih akan menemukan latar belakang putih: tempatkan tekstur latar belakang Anda dari div ke
body
. Atau sebagai alternatif, sesuaikan lebar menu navigasi dari 100% ke nilai yang lebih rendah menggunakan kueri media. Ada banyak penyesuaian yang harus dilakukan pada kode Anda untuk membuat tata letak yang tepat, saya tidak yakin apa yang ingin Anda lakukan tetapi kode di atas entah bagaimana akan memperbaiki bar yang meluap.sumber
box-sizing: border-box;
Anda dapat menambahkan padding ke div lebar 100%.Ini bekerja untuk saya setelah juga menambah
position: relative
bungkusnya.sumber
overflow: hidden
bukanoverflow-x: hidden
. Bekerja di Safari seluler, Chrome, IE11 di OSX dan Win.Menambahkan pembungkus di
<div>
sekitar keseluruhan konten Anda memang akan berfungsi. Sementara secara semantik "icky", saya menambahkan div dengan kelas overflowWrap tepat di dalambody
tag dan kemudian mengatur set CSS saya seperti ini:Mungkin berlebihan sekarang, tetapi bekerja seperti pesona!
sumber
Saya mengalami masalah yang sama dengan perangkat Android tetapi tidak pada perangkat iOS. Berhasil menyelesaikan dengan menentukan posisi: relatif di div luar elemen yang benar-benar diposisikan (dengan overflow: disembunyikan untuk div luar)
sumber
Tidak ada solusi tunggal sebelumnya yang bekerja untuk saya, saya harus mencampurnya dan memperbaiki masalah pada perangkat yang lebih lama (iphone 3).
Pertama, saya harus membungkus konten html menjadi div luar:
Kemudian saya harus menerapkan overflow yang disembunyikan ke pembungkus, karena overflow-x tidak berfungsi:
dan ini memperbaiki masalah.
sumber
Saya memecahkan masalah dengan menggunakan overflow-x: hidden; sebagai berikut
struktur adalah sebagai berikut
1st div end_screen >> inside it >> end_screen_2(div) >> inside it >> end_screen_2.
'end_screen is the wrapper of end_screen_1 and end_screen_2 div's
sumber
Seperti yang dikatakan subarachnid, overflow-x disembunyikan untuk tubuh dan html berfungsi. Ini contoh yang berfungsi
Tautan
sumber
Saya baru saja mengerjakan ini selama beberapa jam, mencoba berbagai kombinasi hal dari halaman ini dan lainnya. Hal yang berhasil bagi saya pada akhirnya adalah membuat div pembungkus situs, seperti yang disarankan dalam jawaban yang diterima, tetapi untuk mengatur kedua overflow ke tersembunyi, bukan hanya x overflow. Jika saya membiarkan overflow-y pada scroll, saya berakhir dengan halaman yang hanya menggulir secara vertikal beberapa piksel dan kemudian berhenti.
Cukup ini saja, tanpa mengatur apa pun pada elemen tubuh atau html.
sumber
Saya telah mencoba banyak cara dari balasan dalam topik ini, sebagian besar bekerja tetapi mendapat beberapa efek samping seperti jika saya menggunakan overflow-x di
body,html
atasnya mungkin memperlambat / membekukan halaman ketika pengguna gulir ke bawah di ponsel.gunakan
position: fixed
pada wrapper / div di dalam tubuh juga bagus, tetapi ketika saya memiliki menu dan menggunakan Javascript klik gulir animasi ke beberapa bagian, Ini tidak berfungsi.Jadi, saya memutuskan untuk menggunakan
touch-action: pan-y pinch-zoom
pembungkus / div di dalam tubuh. Masalah terpecahkan.sumber
Satu-satunya cara untuk memperbaiki masalah ini untuk modal bootstrap saya (berisi formulir) adalah dengan menambahkan kode berikut ke CSS saya:
sumber