Saya telah berjuang dengan posisi tetap di iPad untuk sementara waktu. Saya tahu iScroll dan sepertinya tidak selalu berhasil (bahkan dalam demo mereka). Saya juga tahu bahwa Sencha memiliki perbaikan untuk itu, tetapi saya tidak dapat Ctrl+ + Fkode sumber untuk perbaikan itu.
Saya berharap seseorang dapat memiliki solusinya. Masalahnya adalah bahwa elemen-elemen yang diposisikan tetap tidak mendapatkan pembaruan ketika pengguna memindai Safari seluler bertenaga iOS.
Jawaban:
Banyak peramban seluler sengaja tidak mendukung
position:fixed;
dengan alasan bahwa elemen-elemen tetap dapat menghalangi layar kecil.Situs Quirksmode.org memiliki posting blog yang sangat bagus yang menjelaskan masalahnya: http://www.quirksmode.org/blog/archives/2010/12/the_fifth_posit.html
Lihat juga halaman ini untuk bagan kompatibilitas yang menunjukkan peramban seluler mana yang didukung
position:fixed;
: http://www.quirksmode.org/m/css.html(tetapi perhatikan bahwa dunia peramban seluler bergerak sangat cepat, jadi tabel seperti ini mungkin tidak akan selalu diperbarui!)
Pembaruan: iOS 5 dan Android 4 keduanya dilaporkan memiliki posisi: dukungan tetap sekarang.
Saya menguji iOS 5 sendiri di toko Apple hari ini dan dapat mengkonfirmasi bahwa itu berfungsi dengan posisi tetap. Ada masalah dengan memperbesar dan menggeser di sekitar elemen tetap.
Saya menemukan tabel kompatibilitas ini jauh lebih terkini dan bermanfaat daripada quirksmode: http://caniuse.com/#search=fixed
Ini memiliki info terkini di Android, Opera (mini dan seluler) & iOS.
sumber
position:device-fixed
akan menjadi agak berlebihan.position:fixed
seharusnya hanya bekerja dengan spesifikasi W3C.device-fixed
solusinya bukan bagian dari jawaban saya. Mungkin atau mungkin tidak pantas sebagai saran, tetapi alasan tautannya adalah penjelasan masalah daripada solusi yang disarankannya. Bagaimanapun, banyak hal telah berubah sejak jawaban ini diposting (seperti yang saya katakan), dan banyak perangkat yang lebih baru mendukungfixed
. Anda masih harus berurusan dengan perangkat lama yang tidak.Penentuan posisi tetap tidak berfungsi di iOS seperti di komputer.
Bayangkan Anda memiliki selembar kertas (halaman web) di bawah kaca pembesar (viewport), jika Anda memindahkan kaca pembesar dan mata Anda, Anda melihat bagian halaman yang berbeda. Beginilah cara kerja iOS.
Sekarang ada selembar plastik bening dengan tulisan di atasnya, lembaran plastik ini tetap diam tidak peduli apa pun (posisi: elemen tetap). Jadi, ketika Anda memindahkan kaca pembesar, elemen tetap tampak bergerak.
Atau, alih-alih memindahkan kaca pembesar, Anda memindahkan kertas (halaman web), menjaga lembaran plastik dan kaca pembesar tetap. Dalam hal ini kata pada lembaran plastik akan tampak tetap, dan konten lainnya akan tampak bergerak (karena memang demikian) Ini adalah browser desktop tradisional.
Jadi di iOS, viewport bergerak, di browser tradisional, halaman web bergerak. Dalam kedua kasus elemen tetap tetap dalam kenyataan; meskipun di iOS elemen tetap tampak bergerak.
Cara untuk mengatasi ini, adalah dengan mengikuti beberapa paragraf terakhir di artikel ini
(pada dasarnya nonaktifkan scrolling sama sekali, isi konten dalam div yang dapat digulir terpisah (lihat kotak biru di bagian atas artikel yang ditautkan), dan elemen tetap diposisikan secara absolut)
"position: fix" sekarang berfungsi seperti yang Anda harapkan di iOS5.
sumber
Posisi: tetap tidak bekerja di android / iphone untuk pengguliran vertikal. Tetapi Anda perlu memastikan bahwa tag meta Anda telah disetel sepenuhnya. misalnya
Juga jika Anda berencana memiliki halaman yang sama berfungsi di android pre 4.0, Anda perlu mengatur posisi teratas juga, atau margin kecil akan ditambahkan untuk beberapa alasan.
sumber
user-scalable=0, minimum-scale=1.0, maximum-scale=1.0
dapat membuat halaman menjadi kurang dapat diakses oleh banyak pengguna. Akan bermanfaat untuk menambahkan peringatan tentang hal itu dalam jawaban Andasekarang apel mendukungnya
sumber
background-size: cover
danfixed
masalah pada iPadoverflow
harus disetel kescroll
Saya punya masalah ini di Safari (iOS 10.3.3) - browser tidak menggambar ulang sampai acara touchend dipecat. Elemen yang diperbaiki tidak muncul atau terputus.
Triknya bagi saya adalah menambahkan transform: translate3d (0,0,0); ke elemen posisi tetap saya.
EDIT - Saya sekarang tahu mengapa transformasi memperbaiki masalah: akselerasi perangkat keras. Menambahkan transformasi 3D memicu percepatan GPU yang membuat transisi menjadi lancar. Untuk lebih lanjut tentang checkout akselerasi perangkat keras, artikel ini: http://blog.teamtreehouse.com/increase-your-sites-performance-with-hardware-accelerated-css .
sumber
fixed
, menambahkantransform
dan ini diperbaiki.Footer Tetap (di sini dengan jQuery):
Semoga ini bisa membantu.
sumber
Hindari pada kotak yang sama menggunakan transform: --- and position: fixed. Elemen akan tetap di posisi: statis jika ada transformasi.
sumber
Saya akhirnya menggunakan jQuery Mobile v1.1 baru: http://jquerymobile.com/blog/2012/04/13/announcing-jquery-mobile-1-1-0/
sumber
position:fixed
elemen muncul di depan halaman gulir Anda, Anda hanya perlu memberinya nilai yang lebih tinggiz-index
agar tetap di depan.menggunakan jquery saya bisa membuat ini. itu tidak gulir mulus, tetapi itu triknya. Anda dapat menggulir ke bawah, dan div tetap muncul di atas.
CSS
THE HTML
THE JQUERY
Akhirnya kami ingin menentukan apakah ipod touch dalam mode landscape atau portrait ditampilkan sesuai
sumber
Meskipun atribut CSS
{position:fixed;}
tampaknya (sebagian besar) bekerja pada perangkat iOS yang lebih baru, dimungkinkan untuk memiliki kekhasan dan fallback perangkat{position:relative;}
sesekali dan tanpa sebab atau alasan. Biasanya membersihkan cache akan membantu, sampai sesuatu terjadi dan kekhasan terjadi lagi.Secara khusus, dari Apple sendiri Mempersiapkan Konten Web Anda untuk iPad :
Yang ironis, perangkat Android sepertinya tidak memiliki masalah ini. Juga sangat mungkin untuk digunakan
{position:absolute;}
ketika mengacu pada tag tubuh dan tidak memiliki masalah.Saya menemukan akar penyebab kekhasan ini; bahwa itu adalah acara gulir yang tidak bermain bagus ketika digunakan bersama dengan tag HTML atau BODY. Terkadang tidak suka memecat acara, atau Anda harus menunggu sampai acara gulir ayun selesai untuk menerima acara. Secara khusus, viewport digambar ulang di akhir acara ini dan elemen tetap dapat diposisikan ulang di tempat lain di viewport.
Jadi ini yang saya lakukan: ( hindari menggunakan viewport, dan tetap menggunakan DOM! )
Intinya ini akan menyebabkan BODY menjadi ukuran viewport dan non-scrollable. DIV yang dapat digulir yang bersarang di dalam akan menggulir seperti yang biasa dilakukan BODY (dikurangi efek ayunan, sehingga penggulirannya berhenti pada touchend.) DIV yang tetap akan tetap tanpa gangguan.
Sebagai catatan,
z-index
nilai tinggi pada DIV terpaku penting untuk menjaga agar DIV yang dapat digulir tetap berada di belakangnya. Saya biasanya menambahkan ukuran jendela dan gulir acara juga untuk lintas-browser dan kompatibilitas resolusi layar alternatif.Jika semuanya gagal, kode di atas juga akan berfungsi dengan DIV yang diperbaiki dan yang dapat digulir diatur ke
{position:absolute;}
.sumber
Cara sederhana untuk memperbaiki masalah ini cukup ketik mentransformasikan properti untuk elemen Anda. dan itu akan diperbaiki. Selamat Coding :-)
Anda juga dapat mencoba caranya juga ini berfungsi dengan baik.
sumber
Ini mungkin tidak berlaku untuk semua skenario, tetapi saya menemukan bahwa
position: sticky
(hal yang sama denganposition: fixed
) hanya bekerja pada iPhone lama ketika wadah gulir bukan tubuh, tetapi di dalam sesuatu yang lain.Contoh pseudo html:
Sticky div akan lengket di browser desktop, tetapi dengan perangkat tertentu, diuji dengan: Chromium: dev tools: emultation perangkat: iPhone 6/7/8, dan dengan Android 4 Firefox, tidak akan.
Apa yang akan berhasil adalah
sumber
Dalam kasus saya, itu karena elemen tetap ditampilkan dengan menggunakan animasi. Sebagaimana dinyatakan dalam tautan ini :
sumber
inilah solusi saya untuk ini ...
CSS
HTML
Penjelasan adalah bahwa posisi tetap untuk div akan membuat div tetap di latar belakang setiap saat, maka kami meregangkan div untuk pergi ke semua sudut browser (asalkan margin tubuh = 0) menggunakan (kiri, kanan, atas, bawah, bawah ) secara bersamaan.
Pastikan Anda tidak menggunakan lebar dan tinggi karena ini akan menimpa opsi atas, kiri, kanan, bawah.
sumber