mata utama
Hartanahposition: sticky
fixed
Cara tradisional untuk mencapai kesan ini melibatkan JavaScript, di mana peristiwa menatal halaman didengarkan dan menggunakan JavaScript untuk mengubah nilai -nilai sifat position
, kaedah ini boleh menyebabkan masalah, menyebabkan ia meninggalkan aliran halaman dan elemen di bawah "melompat". top
fixed
Pada masa ini, sokongan penyemak imbas untuk atribut "position: sticky
Orang mengharapkan untuk melihat corak biasa: Cari menu utama di bahagian atas halaman, cari kotak carian di sudut kanan atas, cari footer di bahagian bawah, dan sebagainya.
Saya bersetuju bahawa orang mengharapkan komponen tertentu laman web untuk diletakkan di lokasi tertentu, yang, pada pendapat saya, lebih penting untuk menu utama.
Kadang -kadang, disebabkan oleh keperluan pelanggan atau kerana kami telah menentukan bahawa ini adalah pendekatan yang terbaik, kami mungkin memerlukan navigasi utama untuk sentiasa dilihat pada halaman tanpa menyematkannya di tempat, pada dasarnya mengikuti kandungan halaman. Dalam tahun-tahun kebelakangan ini, banyak penyelesaian berasaskan JavaScript telah dikeluarkan kerana CSS sahaja tidak dapat menyelesaikan tugas ini.
Dalam artikel ini, kita akan membincangkan
, yang merupakan penyelesaian CSS baru untuk masalah ini.
position: sticky
Masalah apa yang kita selesaikan?
Sebelum membincangkan nilai baru harta ini
, marilah kita lebih memahami masalah yang kita cuba selesaikan.
position
Katakan menu utama laman web kami yang indah adalah selepas tajuk, tetapi masih di bahagian atas halaman (tidak di bar sisi) dan mengambil semua lebar yang tersedia. Ini mungkin kelihatan seperti ini:
Codepen Sample Link
Apa yang ingin kita capai ialah apabila pengguna menatal halaman, apabila menu bersatu di bahagian atas viewport, menu tidak akan menatal di luar pandangan, tetapi akan berpegang pada kedudukan teratas - sama seperti ia terpakai
sama (hanya apabila ia mencapai bahagian atas viewport). Untuk mencapai ini dengan kod tradisional, kita perlu menambah beberapa JavaScript. Kami mendengar peristiwa menatal pada halaman dan menggunakan JavaScript untuk menukar nilai sifat position
dan top
berdasarkan kedudukan semasa Viewport. Khususnya, apabila menu berada di bahagian atas viewport, kita perlu menambah top: 0
dan position: fixed
ke menu, jika tidak, atribut akan dipulihkan kepada nilai lalainya.
Satu lagi pendekatan yang serupa adalah untuk membuat kelas dalam CSS kami yang mengandungi nilai -nilai ini dan kemudian tambahkan dan keluarkan kelas menggunakan JavaScript seperti yang diperlukan, yang mungkin kelihatan seperti ini:
var menu = document.querySelector('.menu') var menuPosition = menu.getBoundingClientRect().top; window.addEventListener('scroll', function() { if (window.pageYOffset >= menuPosition) { menu.style.position = 'fixed'; menu.style.top = '0px'; } else { menu.style.position = 'static'; menu.style.top = ''; } });
Perhatikan bahawa coretan kod ini tidak mengendalikan versi lama Internet Explorer. Jika anda perlu berurusan dengan pelayar ini (miskin anda!), Saya akan menyediakan beberapa pilihan polyfill yang boleh anda pertimbangkan.
demonstrasi masa nyata langkah kedua ini adalah seperti berikut:
tapi tunggu! Bolehkah anda mencari masalah yang disebabkan oleh kod ini? Banyak pelaksanaan yang saya lihat, termasuk yang telah kami usahakan setakat ini, tidak mengambil kira isu penting. Apabila kita menukar kedudukan elemen ke fixed
, ia meninggalkan aliran halaman, jadi elemen di bawah akan "melompat" kira -kira sama dengan bilangan piksel pada ketinggian elemen (ketinggian "lompat" ini bergantung pada margin, sempadan, dll.).
Penyelesaian yang mungkin adalah untuk menyuntik elemen letak dengan saiz yang sama seperti elemen yang kita mahu "tampal" supaya apabila kita mengemas kini gaya elemen melekit, tidak ada lompatan. Selain itu, jika nilai yang betul telah ditetapkan, kami tidak mahu menetapkan semula nilai berulang kali tanpa sebab. Akhirnya, kami mahu mengamalkan teknik yang saya nyatakan menggunakan kelas CSS.
versi akhir kod JavaScript adalah seperti berikut:
var menu = document.querySelector('.menu'); var menuPosition = menu.getBoundingClientRect(); var placeholder = document.createElement('div'); placeholder.style.width = menuPosition.width + 'px'; placeholder.style.height = menuPosition.height + 'px'; var isAdded = false; window.addEventListener('scroll', function() { if (window.pageYOffset >= menuPosition.top && !isAdded) { menu.classList.add('sticky'); menu.parentNode.insertBefore(placeholder, menu); isAdded = true; } else if (window.pageYOffset < menuPosition.top && isAdded) { menu.classList.remove('sticky'); menu.parentNode.removeChild(placeholder); isAdded = false; } });
Ini adalah blok pengisytiharan kelas sticky
:
.sticky { top: 0; position: fixed; }
Hasil akhir ditunjukkan dalam demo seterusnya:
Sekarang anda mempunyai pemahaman yang baik tentang apa masalahnya dan apakah penyelesaian berasaskan JavaScript yang mungkin, sudah tiba masanya untuk merangkul pemodenan dan membincangkan apa ini position: sticky
.
Apakah kedudukan: melekit?
Jika anda berani membaca bahagian sebelumnya dengan teliti, anda mungkin tertanya -tanya "Kenapa tidak boleh pelayar melakukan ini untuk saya?"
sticky
adalah nilai baru yang diperkenalkan untuk harta CSS position
. Nilai ini harus berkelakuan seperti position: static
dalam elemen induknya sehingga ambang offset yang diberikan dicapai, dalam hal ini ia seperti nilai ditetapkan kepada fixed
. Dalam erti kata lain, dengan menggunakan position: sticky
, kita dapat menyelesaikan masalah yang dibincangkan di bahagian sebelumnya tanpa JavaScript.
mengkaji contoh sebelumnya dan menggunakan nilai baru ini, kita boleh menulis:
.menu { margin: 0; padding: 0; width: 100%; background-color: #bffff3; position: sticky; }
Penyemak imbas akan melakukan yang lain! Itu mudah.
sokongan penyemak imbas dan polyfills
Sokongan untuk nilai baru ini kini sangat buruk. Inilah situasi timbunan untuk setiap penyemak imbas:
- Firefox 26 - disokong dengan menetapkan css.sticky.enabled untuk "benar" di bawah: config.
- Chrome 23 - disokong dengan membolehkan ciri -ciri platform web eksperimen di Chrome: // Flags.
- Chrome 38 (?) - Pasukan Chrome baru -baru ini mengeluarkan ciri ini dari Blink, jadi ia tidak tersedia di Chrome Canary (versi 38.x), walaupun dengan bendera. Anda boleh membaca laporan bug yang menerangkan penyingkiran, tetapi kami mengesyaki ciri ini akan diimplementasikan semula tidak lama lagi dan mungkin tidak mengganggu sokongan versi yang stabil.
- Safari 6.1 - Sokong nilai ini menggunakan awalan vendor
-webkit
(iaituposition: -webkit-sticky
) - Opera 23 - disokong dengan membolehkan ciri -ciri platform web eksperimen dalam kira -kira: bendera.
- Internet Explorer - tidak disokong (lihat status)
Lihat position: sticky
boleh saya gunakan ... untuk semua butiran.
bernasib baik, terdapat banyak polyfills untuk dipilih:
- Filament Group's Fixed-sticky (memerlukan jQuery)
- kedudukan Matthew Phillips-sticky- (pengesanan dengan Modernizr)
-
position: sticky
di perpustakaan Polyfill.js Philip Walton Demo Codepen Fabrice Weinberg (JQuery diperlukan) -
position: sticky
Oleg Korsunsky's Stickyfill (IE9) - Demo
Demonstrasi berikut menunjukkan kesan sebenar
. Seperti yang dinyatakan sebelum ini, untuk menjadikannya berfungsi, dan bergantung kepada penyemak imbas yang anda gunakan, anda mungkin perlu mengaktifkan bendera.
position: sticky
Walaupun ciri baru ini tidak mempunyai sokongan penyemak imbas yang baik, anda juga boleh menggunakan polyfill, jika anda menentukan gaya alternatif dengan Modernizr, ia akan menurunkan dengan lalai
atau. position: static
position: fixed
Jika anda telah mencuba harta ini atau mengetahui mana -mana polyfill lain, sila beritahu kami dalam komen.
Soalan Lazim mengenai kedudukan CSS Sticky (FAQ)
Apakah perbezaan antara kedudukan CSS Sticky dan lokasi CSS yang lain?
CSS
adalah campuran kedudukan relatif dan kedudukan tetap. Ia membolehkan elemen berkelakuan seperti kedudukan relatif dalam elemen induknya sehingga mencapai titik tatal yang diberikan, di mana ia menjadi kedudukan tetap. Ini berbeza dengan lokasi CSS yang lain. Sebagai contoh, kedudukan "relatif" membolehkan anda meletakkan elemen relatif terhadap kedudukan normal elemen, manakala kedudukan "tetap" kedudukan elemen relatif kepada tetingkap penyemak imbas, dan ia tidak akan bergerak walaupun halaman ditatal . Kedudukan "mutlak" menempatkan elemen relatif kepada nenek moyang yang paling terkini, "statik" adalah nilai lalai, dan menempatkan elemen mengikut aliran biasa halaman.Mengapa kedudukan CSS saya melekit tidak berfungsi?
CSS anda position: sticky
tidak berfungsi untuk beberapa sebab. Alasan yang sama ialah atribut overflow
elemen induk ditetapkan kepada hidden
, auto
atau scroll
. Sebab lain ialah elemen melekit mempunyai adik beradik yang lebih tinggi daripada itu, menyebabkan ia menatal dari viewport. Juga, pastikan elemen melekit bukan elemen meja, kerana dalam beberapa pelayar, CSS position: sticky
tidak berfungsi dengan elemen meja.
bagaimana membuat kedudukan CSS berfungsi melekit pada semua penyemak imbas saya?
Walaupun CSS position: sticky
disokong secara meluas dalam pelayar moden, ia mungkin tidak berfungsi dalam beberapa versi yang lebih lama. Untuk memastikan keserasian di semua pelayar, anda boleh menggunakan polyfill. Polyfill adalah skrip yang menyediakan teknologi yang anda harapkan untuk memberikan secara asli kepada penyemak imbas. Polyfill yang popular untuk CSS position: sticky
adalah Stickyfill.
Bolehkah saya menggunakan kedudukan CSS melekit dengan sifat CSS yang lain?
Ya, anda boleh menggunakan CSS position: sticky
dengan sifat CSS yang lain. Sebagai contoh, anda boleh menggunakannya dengan z-index
untuk mengawal susunan susunan, atau dengan box-shadow
untuk membuat kesan bayangan apabila elemen menjadi melekit.
Bagaimana kedudukan CSS melekit berkelakuan dalam bekas tatal?
Apabila elemen melekit berada di dalam bekas rolling, ia melekat pada bahagian atas bekas apabila anda menatal ke bawah, dan ia berhenti melekat apabila pinggir bawah bekas bergulung melewati.
Bolehkah saya menggunakan kedudukan CSS melekit di bahagian bawah elemen?
Ya, anda boleh menggunakan CSS position: sticky
di bahagian bawah elemen. Anda hanya perlu menentukan nilai negatif untuk atribut bottom
. Ini akan menjadikan elemen melekat pada bahagian bawah bekas.
kedudukan CSS melekit Bagaimana ia berfungsi dengan margin?
Perkahwinan dan CSS position: sticky
Bekerja dengan cara yang sama mereka bekerja dengan kedudukan relatif. Margin akan menggerakkan elemen melekit berbanding kedudukannya yang melekit, bukannya kedudukan asalnya.
Bolehkah saya menggunakan kedudukan CSS melekit untuk menatal mendatar?
Ya, anda boleh menggunakan CSS position: sticky
untuk menatal mendatar. Anda hanya perlu menentukan nilai untuk atribut left
atau right
, bukan atribut top
atau bottom
.
Bagaimana menggunakan kedudukan CSS Sticky untuk mengawal offset tatal?
tatal offset dikawal oleh sifat top
, right
, bottom
, dan left
. Nilai -nilai yang anda tentukan untuk sifat -sifat ini menentukan jarak ke tepi yang sepadan dari viewport di mana elemen mula menampal.
Bolehkah saya menggunakan kedudukan CSS melekat dengan peralihan CSS?
Ya, anda boleh menggunakan CSS position: sticky
dengan peralihan CSS. Walau bagaimanapun, ingat bahawa peralihan hanya terpakai apabila elemen berubah dari kedudukan relatif ke kedudukan tetap, bukan apabila ia disisipkan.
Perhatikan bahawa saya telah menggantikan pautan codepen dengan pemegang tempat kerana saya tidak dapat mengakses contoh codepen sebenar. Anda perlu menggantikan ruang letak ini dengan pautan sebenar. Di samping itu, saya menulis semula teks asal sebanyak mungkin, berusaha untuk menjadikan artikel itu lebih lancar dan lebih semula jadi tanpa mengubah makna asal.
Atas ialah kandungan terperinci CSS 'Kedudukan: Sticky' - Pengenalan dan Polyfills. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Perbezaan utama antara Python dan JavaScript ialah sistem jenis dan senario aplikasi. 1. Python menggunakan jenis dinamik, sesuai untuk pengkomputeran saintifik dan analisis data. 2. JavaScript mengamalkan jenis yang lemah dan digunakan secara meluas dalam pembangunan depan dan stack penuh. Kedua -duanya mempunyai kelebihan mereka sendiri dalam pengaturcaraan dan pengoptimuman prestasi yang tidak segerak, dan harus diputuskan mengikut keperluan projek ketika memilih.

Sama ada untuk memilih Python atau JavaScript bergantung kepada jenis projek: 1) Pilih Python untuk Sains Data dan Tugas Automasi; 2) Pilih JavaScript untuk pembangunan front-end dan penuh. Python disukai untuk perpustakaannya yang kuat dalam pemprosesan data dan automasi, sementara JavaScript sangat diperlukan untuk kelebihannya dalam interaksi web dan pembangunan stack penuh.

Python dan JavaScript masing -masing mempunyai kelebihan mereka sendiri, dan pilihan bergantung kepada keperluan projek dan keutamaan peribadi. 1. Python mudah dipelajari, dengan sintaks ringkas, sesuai untuk sains data dan pembangunan back-end, tetapi mempunyai kelajuan pelaksanaan yang perlahan. 2. JavaScript berada di mana-mana dalam pembangunan front-end dan mempunyai keupayaan pengaturcaraan tak segerak yang kuat. Node.js menjadikannya sesuai untuk pembangunan penuh, tetapi sintaks mungkin rumit dan rawan kesilapan.

Javascriptisnotbuiltoncorc; it'saninterpretedlanguagethatrunsonenginesoftenwritteninc .1) javascriptwasdesignedasalightweight, interpratedlanguageforwebbrowsers.2)

JavaScript boleh digunakan untuk pembangunan front-end dan back-end. Bahagian depan meningkatkan pengalaman pengguna melalui operasi DOM, dan back-end mengendalikan tugas pelayan melalui Node.js. 1. Contoh front-end: Tukar kandungan teks laman web. 2. Contoh backend: Buat pelayan Node.js.

Memilih Python atau JavaScript harus berdasarkan perkembangan kerjaya, keluk pembelajaran dan ekosistem: 1) Pembangunan Kerjaya: Python sesuai untuk sains data dan pembangunan back-end, sementara JavaScript sesuai untuk pembangunan depan dan penuh. 2) Kurva Pembelajaran: Sintaks Python adalah ringkas dan sesuai untuk pemula; Sintaks JavaScript adalah fleksibel. 3) Ekosistem: Python mempunyai perpustakaan pengkomputeran saintifik yang kaya, dan JavaScript mempunyai rangka kerja front-end yang kuat.

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.

Pengenalan Saya tahu anda mungkin merasa pelik, apa sebenarnya yang perlu dilakukan oleh JavaScript, C dan penyemak imbas? Mereka seolah -olah tidak berkaitan, tetapi sebenarnya, mereka memainkan peranan yang sangat penting dalam pembangunan web moden. Hari ini kita akan membincangkan hubungan rapat antara ketiga -tiga ini. Melalui artikel ini, anda akan mempelajari bagaimana JavaScript berjalan dalam penyemak imbas, peranan C dalam enjin pelayar, dan bagaimana mereka bekerjasama untuk memacu rendering dan interaksi laman web. Kita semua tahu hubungan antara JavaScript dan penyemak imbas. JavaScript adalah bahasa utama pembangunan front-end. Ia berjalan secara langsung di penyemak imbas, menjadikan laman web jelas dan menarik. Adakah anda pernah tertanya -tanya mengapa Javascr


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
