Saya memiliki tata letak 2 kolom sederhana dengan catatan kaki yang menghapus div kanan dan kiri di markup saya. Masalah saya adalah saya tidak bisa mendapatkan footer untuk tetap di bagian bawah halaman di semua browser. Ini berfungsi jika konten mendorong footer ke bawah, tapi itu tidak selalu terjadi.
css
html
footer
sticky-footer
Bill the Lizard
sumber
sumber
Jawaban:
Untuk mendapatkan catatan kaki yang lengket:
Memiliki
<div>
denganclass="wrapper"
konten Anda.Tepat sebelum penutupan
</div>
dariwrapper
tempat<div class="push"></div>
.Tepat setelah penutupan
</div>
dariwrapper
tempat<div class="footer"></div>
.sumber
Gunakan unit CSS vh!
Mungkin cara yang paling jelas dan non-hacky tentang sticker footer adalah dengan menggunakan unit viewport css baru .
Ambil contoh markup sederhana berikut:
Jika tajuknya mengatakan 80px tinggi dan footer 40px tinggi, maka kita dapat membuat footer lengket kami dengan satu aturan tunggal pada div konten:
Yang berarti: biarkan ketinggian div konten setidaknya 100% dari tinggi viewport dikurangi tinggi gabungan header dan footer.
Itu dia.
Tampilkan cuplikan kode
... dan inilah cara kode yang sama berfungsi dengan banyak konten di div konten:
Tampilkan cuplikan kode
NB:
1) Tinggi header dan footer harus diketahui
2) Versi lama IE (IE8-) dan Android (4.4-) tidak mendukung unit viewport. ( caniuse )
3) Sekali waktu webkit memiliki masalah dengan unit viewport dalam aturan kalk. Ini memang sudah diperbaiki ( lihat di sini ) sehingga tidak ada masalah di sana. Namun jika Anda ingin menghindari menggunakan kalk karena alasan tertentu, Anda dapat mengatasinya dengan menggunakan margin negatif dan lapisan dengan ukuran kotak -
Seperti itu:
Tampilkan cuplikan kode
sumber
Footer lengket dengan
display: flex
Solusi yang terinspirasi oleh catatan kaki Philip Walton .
Penjelasan
Solusi ini hanya berlaku untuk :
Ini didasarkan pada
flex
tampilan , meningkatkanflex-grow
properti, yang memungkinkan suatu elemen tumbuh dengan tinggi atau lebar (ketikaflow-direction
diatur ke salah satucolumn
ataurow
masing masing), untuk menempati ruang ekstra dalam wadah.Kami juga akan memanfaatkan
vh
unit,1vh
yang didefinisikan sebagai :Karena itu ketinggiannya
100vh
adalah cara ringkas untuk memberi tahu elemen untuk merentangkan ketinggian viewport penuh.Ini adalah bagaimana Anda akan menyusun halaman web Anda:
Agar footer menempel di bagian bawah halaman, Anda ingin ruang antara tubuh dan footer tumbuh sebanyak yang diperlukan untuk mendorong footer di bagian bawah halaman.
Karenanya tata letak kita menjadi:
Penerapan
Anda bisa bermain dengannya di JSFiddle .
Keanehan Safari
Ketahuilah bahwa Safari memiliki implementasi
flex-shrink
properti yang cacat , yang memungkinkan barang menyusut lebih dari ketinggian minimum yang diperlukan untuk menampilkan konten. Untuk memperbaiki masalah ini, Anda harus menetapkanflex-shrink
properti secara eksplisit ke 0 ke.content
danfooter
pada contoh di atas:sumber
.Site-content
elemen solusi Walton memainkan peran yang sama denganspacer
. Hanya disebut berbeda..Site-content
memiliki analog.content
dalam markup ini .. tetapi tidak pernah, saya meminta case gcedo memiliki beberapa ide spesifik tentang hal itu, tidak perlu menebakAnda bisa menggunakan
position: absolute
berikut ini untuk meletakkan footer di bagian bawah halaman, tetapi kemudian pastikan 2 kolom Anda memiliki yang sesuaimargin-bottom
sehingga mereka tidak pernah terhambat oleh footer.sumber
0px
di semua lembar gaya yang saya lihat seharusnya adil0
.Berikut ini adalah solusi dengan jQuery yang bekerja seperti pesona. Ia memeriksa apakah ketinggian jendela lebih besar dari ketinggian tubuh. Jika ya, maka itu mengubah margin-top dari footer untuk mengkompensasi. Diuji di Firefox, Chrome, Safari dan Opera.
Jika catatan kaki Anda memiliki margin-top (50 piksel, misalnya), Anda perlu mengubah bagian terakhir untuk:
sumber
Tetapkan CSS untuk
#footer
ke:Anda kemudian perlu menambahkan
padding
ataumargin
ke bawah Anda#sidebar
dan#content
untuk mencocokkan ketinggian#footer
atau ketika mereka tumpang tindih, itu#footer
akan menutupi mereka.Juga, jika saya ingat dengan benar, IE6 memiliki masalah dengan
bottom: 0
CSS. Anda mungkin harus menggunakan solusi JS untuk IE6 (jika Anda peduli tentang IE6).sumber
Solusi serupa dengan @gcedo tetapi tanpa perlu menambahkan konten perantara untuk menekan footer. Kami cukup menambahkan
margin-top:auto
ke footer dan itu akan didorong ke bagian bawah halaman terlepas dari tinggi atau tinggi konten di atas.sumber
.content
flex: 1 0 auto;
untuk membuatnya tumbuh dan tidak bisa ditipiskan, tetapimargin-top: auto;
merupakan trik yang bagus yang melibatkan penata gaya, bukan "tidak terkait".content
yang bagus. Sebenarnya, saya ingin tahu mengapa flex diperlukan dalam pendekatan ini ..display:flex
tidak akan berfungsi, Anda akan memiliki aliran elemen blok normalmargin:0 auto
elemen blok pusat yang terkenal ) TETAPI kita tidak memiliki arah kolom sehingga tidak ada margin otomatis dengan atas / bawah. Flexbox memiliki kedua arah baris / kolom;). Ini adalah sedikit perbedaan, tetapi margin juga digunakan dalam flexbox untuk menyelaraskan elemen sehingga bahkan dalam arah baris Anda dapat menggunakan margin-top / bottom otomatis untuk menyelaraskan secara vertikal .. Anda dapat membaca lebih lanjut di sini: w3.org/TR/css- flexbox-1 / # auto-marginindex.html:
main.css:
Sumber: https://www.freecodecamp.org/news/how-to-keep-your-footer-where-it-belongs-59c6aa05c59c/
sumber
Saya sendiri kadang-kadang berjuang dengan ini dan saya selalu menemukan bahwa solusi dengan semua div dalam satu sama lain adalah solusi yang berantakan. Saya hanya sedikit mengacaukannya, dan saya pribadi mengetahui bahwa ini berhasil dan tentu saja merupakan salah satu cara paling sederhana:
Apa yang saya suka tentang ini adalah bahwa tidak ada HTML tambahan yang perlu diterapkan. Anda dapat menambahkan CSS ini dan kemudian menulis HTML Anda kapan saja
sumber
Karena solusi Grid belum disajikan, ini dia, dengan hanya dua deklarasi untuk elemen induk , jika kita menerima
height: 100%
danmargin: 0
menerima:align-content: space-between
sumber
CSS:
HTML:
Ini harus dilakukan jika Anda mencari footer responsif yang disejajarkan di bagian bawah halaman, yang selalu menjaga margin atas 80% dari tinggi viewport.
sumber
Gunakan penentuan posisi absolut dan indeks-z untuk membuat div footer lengket pada resolusi apa pun menggunakan langkah-langkah berikut:
position: absolute; bottom: 0;
dan ketinggian yang diinginkandiv
yang membungkus isi tubuh denganposition: relative; min-height: 100%;
div
yang sama dengan tinggi plus padding dari footerz-index
footer lebih besar dari wadahdiv
jika footer dipotongBerikut ini sebuah contoh:
sumber
Untuk pertanyaan ini banyak jawaban yang saya lihat kikuk, sulit diterapkan dan tidak efisien jadi saya pikir saya akan mencobanya dan menghasilkan solusi saya sendiri yang hanya sedikit css dan html
ini bekerja dengan mengatur ketinggian footer dan kemudian menggunakan css calc untuk mengetahui tinggi minimum halaman dengan footer masih di bagian bawah, semoga ini membantu beberapa orang :)
sumber
Salah satu solusinya adalah dengan mengatur min-height untuk kotak. Sayangnya sepertinya itu tidak didukung oleh IE (kejutan).
sumber
Tak satu pun dari solusi css murni ini berfungsi dengan baik dengan mengubah ukuran konten secara dinamis (setidaknya pada firefox dan Safari) misalnya, jika Anda memiliki latar belakang yang ditetapkan pada div wadah, halaman dan kemudian mengubah ukuran (menambahkan beberapa baris) tabel di dalam div, Tabel dapat menjulur keluar dari bagian bawah area gaya, yaitu, Anda dapat memiliki setengah meja putih di tema hitam dan setengah meja putih lengkap karena baik warna font dan warna latar belakang putih. Ini pada dasarnya tidak bisa diperbaiki dengan halaman-halaman tema.
Layout multi-kolom div bersarang adalah retas yang jelek dan tubuh / wadah div 100% tinggi untuk sticker footer adalah retas yang lebih buruk.
Satu-satunya solusi tanpa skrip yang berfungsi pada semua browser yang saya coba: tabel yang jauh lebih sederhana / lebih pendek dengan thead (untuk header) / tfoot (untuk footer) / tbody (td untuk sejumlah kolom) dan tinggi 100%. Tapi ini dianggap kerugian semantik dan SEO (tfoot harus muncul sebelum tbody. Peran ARIA dapat membantu mesin pencari yang layak).
sumber
Banyak orang telah memberikan jawaban untuk masalah sederhana ini di sini, tetapi saya memiliki satu hal untuk ditambahkan, mengingat betapa frustrasinya saya sampai saya menemukan kesalahan saya.
Seperti yang disebutkan cara paling mudah untuk melakukan ini adalah seperti itu ..
Namun properti yang tidak disebutkan dalam posting, mungkin karena biasanya default, adalah posisi: statis pada tag tubuh. Posisi relatif tidak akan berfungsi!
Tema wordpress saya telah mengesampingkan tampilan tubuh default dan itu membingungkan saya untuk waktu yang lama.
sumber
Sebuah utas lama yang saya tahu, tetapi jika Anda mencari solusi yang responsif, penambahan jQuery ini akan membantu:
Panduan lengkap dapat ditemukan di sini: https://pixeldesigns.co.uk/blog/responsive-jquery-sticky-footer/
sumber
Saya telah membuat perpustakaan yang sangat sederhana https://github.com/ravinderpayal/FooterJS
Ini sangat sederhana digunakan. Setelah memasukkan pustaka, panggil saja baris kode ini.
Footer dapat diubah secara dinamis dengan mengingat fungsi di atas dengan parameter / id yang berbeda.
Catatan: - Anda belum mengubah atau menambahkan CSS. Pustaka adalah dinamis yang menyiratkan bahwa bahkan jika layar diubah ukurannya setelah memuat halaman, itu akan mengatur ulang posisi footer. Saya telah membuat perpustakaan ini, karena CSS memecahkan masalah untuk sementara waktu tetapi ketika ukuran layar berubah secara signifikan, dari desktop ke tablet atau sebaliknya, mereka tumpang tindih konten atau mereka tidak lagi tetap lengket.
Solusi lain adalah Permintaan Media CSS, tetapi Anda harus secara manual menulis gaya CSS yang berbeda untuk ukuran layar yang berbeda sementara pustaka ini bekerja secara otomatis dan didukung oleh semua browser pendukung JavaScript dasar.
Edit solusi CSS:
Sekarang, jika ketinggian tampilan lebih dari panjang konten Anda, kami akan membuat footer diperbaiki ke bawah dan jika tidak, itu akan muncul secara otomatis di bagian paling akhir layar karena Anda perlu menggulir untuk melihatnya.
Dan, sepertinya ini solusi yang lebih baik daripada JavaScript / library.
sumber
Saya tidak beruntung dengan solusi yang disarankan di halaman ini sebelumnya tetapi akhirnya, trik kecil ini berhasil. Saya akan memasukkannya sebagai solusi lain yang mungkin.
sumber
Solusi Flexbox
Tata letak fleksibel lebih disukai untuk ketinggian header dan footer alami. Solusi fleksibel ini diuji di browser modern dan benar-benar berfungsi :) di IE11.
Lihat JS Fiddle .
HTML
CSS
sumber
Bagi saya cara terbaik untuk menampilkannya (footer) adalah tetap pada bagian bawah tetapi tidak mencakup konten sepanjang waktu:
sumber
jQuery CROSS BROWSER CUSTOM PLUGIN - $ .footerBottom ()
Atau gunakan jQuery seperti saya, dan setel tinggi kaki Anda ke
auto
atau kefix
, apa pun yang Anda suka, itu tetap akan berhasil. plugin ini menggunakan pemilih jQuery sehingga untuk membuatnya berfungsi, Anda harus memasukkan perpustakaan jQuery ke file Anda.Inilah cara Anda menjalankan plugin. Impor jQuery, salin kode plugin jQuery khusus ini dan impor setelah mengimpor jQuery! Ini sangat sederhana dan mendasar, tetapi penting.
Ketika Anda melakukannya, yang harus Anda lakukan adalah menjalankan kode ini:
tidak perlu menempatkannya di dalam acara siap dokumen. Ini akan berjalan dengan baik seperti apa adanya. Ini akan menghitung ulang posisi footer Anda ketika halaman dimuat dan ketika jendela diubah ukurannya.
Ini kode plugin yang tidak perlu Anda mengerti. Hanya tahu cara mengimplementasikannya. Itu melakukan pekerjaan untuk Anda. Namun, jika Anda ingin tahu cara kerjanya, lihat saja kodenya. Saya meninggalkan komentar untuk Anda.
sumber
Solusi flex bekerja untuk saya sejauh membuat footer lengket, tetapi sayangnya mengubah tubuh untuk menggunakan tata letak flex membuat beberapa tata letak halaman kami berubah, dan bukan menjadi lebih baik. Yang akhirnya berhasil bagi saya adalah:
Saya mendapatkan ini dari tanggapan ctf0 di https://css-tricks.com/couple-takes-sticky-footer/
sumber
sumber
Jika Anda tidak ingin itu menggunakan posisi tetap, dan mengikuti Anda dengan mengganggu di ponsel, ini sepertinya bekerja untuk saya sejauh ini.
Cukup atur html ke
min-height: 100%;
danposition: relative;
, kemudianposition: absolute; bottom: 0; left: 0;
di footer. Saya kemudian memastikan bahwa kaki adalah elemen terakhir dalam tubuh.Beri tahu saya jika ini tidak berhasil untuk orang lain, dan mengapa. Saya tahu peretasan gaya yang membosankan ini dapat berperilaku aneh di antara berbagai keadaan yang tidak pernah saya pikirkan.
sumber
Coba letakkan div kontainer (dengan overflow: otomatis) di sekitar konten dan bilah sisi.
Jika itu tidak berhasil, apakah Anda memiliki tangkapan layar atau tautan contoh di mana footer tidak ditampilkan dengan benar?
sumber