Saya memiliki halaman berikut (deadlink:) http://www.workingstorage.com/Sample.htm
yang memiliki footer yang tidak dapat saya duduki di bagian bawah halaman.
Saya ingin catatan kaki
- tetap ke bawah jendela ketika halaman pendek dan layar tidak terisi, dan
- tetap di ujung dokumen dan turun seperti biasa ketika ada lebih dari satu layar penuh konten (alih-alih tumpang tindih konten).
CSS diwarisi dan membingungkan saya; Sepertinya saya tidak bisa mengubahnya dengan benar untuk menempatkan ketinggian minimum pada konten atau membuat catatan kaki ke bawah.
flexbox
.Jawaban:
Sebuah metode sederhana adalah dengan membuat tubuh
100%
halaman Anda, denganmin-height
dari100%
juga. Ini berfungsi dengan baik jika ketinggian footer Anda tidak berubah.Beri footer margin-negatif atas:
sumber
box-sizing: border-box;
untuk tubuh [dan#container
].Saya telah mengembangkan metode yang cukup mudah untuk menempelkan Footer di bagian bawah, tetapi sebagai metode yang paling umum, Anda perlu menyesuaikannya agar sesuai dengan tinggi Footer Anda.
LIHAT DEMO
Metode Flexbox:
Metode di bawah ini menggunakan "trik" dengan menempatkan
::after
elemen pseudo padabody
, dan mengaturnya untuk memiliki ketinggian yang tepat dari footer, sehingga akan menempati ruang yang sama persis dengan yang dilakukan footer, sehingga ketika footerabsolute
diposisikan di atasnya, itu akan tampak seperti footer benar-benar mengambil ruang dan menghilangkan dampak negatif dari posisi absolut itu (misalnya, menelusuri konten tubuh)position:absolute
metode: (tidak memungkinkan tinggi footer dinamis)Metode tata letak meja:
sumber
display: table
display: table-row
display:table-cell
. Namun saya merasa perlu menambahkanbody {margin-top: 0; padding-top: 0; margin-bottom: 0; padding-bottom: 0;}
untuk menghindari bilah gulir. Anda dapat memenuhi ini dengan menyesuaikanbody:after height
tetapi saya menetapkan milik saya di rem bukan px sehingga menjadi bermasalah.flexbox
Pendekatan yang sangat sederhana yang bekerja lintas browser bagus adalah ini:
http://matthewjamestaylor.com/blog/keeping-footers-at-the-bottom-of-the-page
sumber
Saya menggunakan ini untuk menempelkan footer saya ke bawah dan itu berhasil untuk saya:
HTML
Itu satu-satunya modifikasi yang harus Anda lakukan dalam HTML, tambahkan itu
div
dengan"allButFooter"
kelas. Saya melakukannya dengan semua halaman, yang sangat pendek, saya tahu footer tidak akan menempel ke bawah, dan juga halaman cukup lama sehingga saya sudah tahu saya harus menggulir. Saya melakukan ini, sehingga saya bisa melihat bahwa itu berfungsi ok jika konten halaman dinamis.CSS
The
"allButFooter"
kelas memilikimin-height
nilai yang tergantung pada ketinggian viewport ini (100vh
berarti 100% dari tinggi viewport) dan tinggi footer, bahwa aku sudah tahu itu40px
.Hanya itu yang saya lakukan, dan itu bekerja dengan baik untuk saya. Saya belum mencobanya di setiap browser, hanya Firefox, Chrome dan Edge, dan hasilnya seperti yang saya inginkan. Footer menempel ke bawah, dan Anda tidak perlu mengacaukan indeks-z, posisi, atau properti lainnya. Posisi setiap elemen dalam dokumen saya adalah posisi default, saya tidak mengubahnya menjadi absolut atau tetap atau apa pun.
Bekerja dengan desain responsif
Inilah sesuatu yang ingin saya jelaskan. Solusi ini, dengan Footer yang sama dengan tinggi 40px tidak berfungsi seperti yang saya harapkan ketika saya bekerja dalam desain responsif menggunakan
Twitter-Bootstrap
. Saya harus mengubah nilai yang saya kurangi dalam fungsi:Ini mungkin karena
Twitter-Bootstrap
dilengkapi dengan margin dan bantalannya sendiri, jadi itu sebabnya saya harus menyesuaikan nilai itu.Saya harap ini berguna bagi kalian! Setidaknya, ini adalah solusi sederhana untuk dicoba, dan itu tidak melibatkan membuat perubahan besar pada keseluruhan dokumen.
sumber
display: none
Terima kasih. Itu bagus dan sederhana juga.position: fixed; bottom: 0
dan yang satu ini. Solusi ini adalah yang terbaik karena footer tidak menempel ke bawah, tetapi tetap di akhir halaman yang dapat digulir..footer {max-height: calc(100vh+40px); position: absolute}
. Karena ini juga berfungsi, Anda harus tahu ukuran tubuh Anda.Dari IE7 dan seterusnya Anda cukup menggunakan
Lihat caniuse untuk dukungan.
sumber
Solusi sederhana yang saya gunakan, bekerja dari IE8 +
Berikan min-height: 100% pada html sehingga jika konten kurang dari halaman diam mengambil tinggi-port view penuh dan footer sticks di bagian bawah halaman. Ketika konten meningkat, footer bergeser ke bawah dengan konten dan terus menempel ke bawah.
JS fiddle working Demo: http://jsfiddle.net/3L3h64qo/2/
Css
Html
sumber
Namun, solusi lain yang sangat sederhana adalah yang ini:
jsFiddle
Caranya adalah dengan menggunakan
display:table
untuk seluruh dokumen dandisplay:table-row
denganheight:0
untuk catatan kaki.Karena footer adalah satu-satunya badan anak yang memiliki tampilan seperti
table-row
, ia ditampilkan di bagian bawah halaman.sumber
height: 100%
benar-benar 100% ketika rasio viewport 1/1 (persegi). Ketika viewport menjadi lebih luas (lanskap) tinggi akan lebih dari 100% dan jika lebih sempit (potret) kurang dari 100%. Jadi tingginya sebanding dengan lebar jendela. Mencoba menyelesaikannya dengan pembungkus lain tetapi ini tidak berhasil. Seseorang punya solusi atau setidaknya petunjuk ???Solusi fleksibel yang sangat sederhana yang tidak mengasumsikan ketinggian tetap atau mengubah posisi elemen.
HTML
CSS
Dukungan Browser
Semua browser utama, kecuali IE11 dan di bawahnya.
Pastikan untuk menggunakan Autoprefixer untuk awalan yang sesuai.
Tampilkan cuplikan kode
sumber
Satu hal yang perlu diwaspadai adalah perangkat seluler, karena mereka menerapkan gagasan viewport dengan cara yang 'tidak biasa':
http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html#//apple_ref/doc/uid/TP40006509-SW25
Karena itu, menggunakan
position: fixed;
(seperti yang saya lihat direkomendasikan di tempat lain) biasanya bukan cara yang tepat. Tentu saja, itu tergantung pada perilaku yang Anda cari.Apa yang saya gunakan, dan telah bekerja dengan baik di desktop dan seluler, adalah:
dengan
sumber
Melakukan hal ini
Anda juga dapat membaca tentang flex yang didukung oleh semua browser modern
Pembaruan : Saya membaca tentang flex dan mencobanya. Ini berhasil untuk saya. Semoga itu melakukan hal yang sama untuk Anda. Inilah cara saya menerapkannya. Berikut ini bukan ID-nya melainkan div
Di sini Anda dapat membaca lebih lanjut tentang flex https://css-tricks.com/snippets/css/a-guide-to-flexbox/
Perlu diingat itu tidak didukung oleh versi IE yang lebih lama.
sumber
flex-grow: 1
sesuatu di atas footer akan menjaga footer di bagian bawah dengan benar.Saya baru saja menjawab pertanyaan serupa di sini:
Footer posisi di bagian bawah halaman memiliki header tetap
Saya cukup baru dalam pengembangan web, dan saya tahu ini sudah dijawab, tetapi ini adalah cara termudah yang saya temukan untuk menyelesaikannya dan saya pikir agak berbeda. Saya menginginkan sesuatu yang fleksibel karena catatan kaki aplikasi web saya memiliki ketinggian yang dinamis, saya akhirnya menggunakan FlexBox dan spacer.
Saya mengasumsikan
column
perilaku untuk aplikasi kami, jika Anda perlu menambahkan header, pahlawan, atau konten apa pun yang selaras secara vertikal.Anda dapat bermain dengannya di sini https://codepen.io/anon/pen/xmGZQL
sumber
Ini dikenal sebagai footer lengket. Sebuah pencarian google untuk itu datang dengan banyak hasil. CSS Sticky Footer adalah yang saya gunakan dengan sukses. Tetapi masih ada lagi.
Sumber untuk kode ini
sumber
Metode jquery saya, yang ini menempatkan footer di bagian bawah halaman jika konten halaman kurang dari tinggi jendela, atau hanya menempatkan footer setelah konten sebaliknya:
Juga, menyimpan kode di dalam kandangnya sendiri sebelum kode lain akan mengurangi waktu yang diperlukan untuk memposisikan ulang catatan kaki.
sumber
Saya sendiri telah melihat masalah ini. Saya telah melihat beberapa solusi dan masing-masing dari mereka memiliki masalah, sering melibatkan beberapa angka ajaib.
Jadi menggunakan praktik terbaik dari berbagai sumber saya datang dengan solusi ini:
http://jsfiddle.net/vfSM3/248/
Hal yang ingin saya capai secara khusus di sini adalah untuk mendapatkan konten utama untuk menggulir di antara footer dan header di dalam area hijau.
di sini adalah css sederhana:
sumber
Inilah bagaimana saya memecahkan masalah yang sama
sumber
Ini berfungsi dengan baik
sumber
Kustomisasi saja bagian footer
sumber
ini dua sen saya. Sebagai perbandingan dengan solusi lain, orang tidak perlu menambahkan wadah tambahan. Karenanya solusi ini sedikit lebih elegan. Di bawah contoh kode saya akan menjelaskan mengapa ini berhasil.
Jadi hal pertama yang kita lakukan adalah membuat wadah terbesar (html) 100%. Halaman html adalah sebesar halaman itu sendiri. Selanjutnya kita mengatur tinggi badan, itu bisa lebih besar dari 100% dari tag html, tetapi setidaknya harus sama besar, oleh karena itu kami menggunakan min-height 100%.
Kami juga membuat tubuh relatif. Relatif berarti Anda dapat memindahkan elemen blok di sekitar relatif dari posisi aslinya. Kami tidak menggunakannya di sini. Karena relatif memiliki penggunaan kedua. Setiap elemen absolut adalah mutlak untuk root (html) atau untuk orang tua / kakek nenek relatif pertama. Itulah yang kami inginkan, kami ingin footer menjadi absolut, relatif terhadap tubuh, yaitu bagian bawah.
Langkah terakhir adalah mengatur footer ke absolut dan bawah: 0, yang memindahkannya ke bagian bawah orang tua / kakek-nenek pertama yang relatif (body ofcourse).
Sekarang kita masih memiliki satu masalah untuk diperbaiki, ketika kita mengisi halaman lengkap, konten berjalan di bawah footer. Mengapa? baik, karena footer tidak lagi di dalam "aliran html", karena itu mutlak. Jadi bagaimana kita memperbaikinya? Kami akan menambahkan padding-bottom ke tubuh. Ini memastikan tubuh sebenarnya lebih besar dari kontennya.
Saya harap saya membuat banyak yang jelas untuk kalian.
sumber
Dynamic satu liner menggunakan jQuery
Semua metode CSS yang saya temui terlalu kaku. Juga, mengatur footer ke
fixed
bukanlah pilihan jika itu bukan bagian dari desain.Diuji pada:
Dengan asumsi tata letak ini:
Gunakan fungsi jQuery berikut:
Apa yang dilakukan adalah mengatur
min-height
untuk#content
untuk ketinggian jendela - ketinggian catatan kaki apa yang pernah ada pada saat itu.Karena kami menggunakan
min-height
, jika#content
tinggi melebihi tinggi jendela , fungsi terdegradasi dengan anggun dan tidak berpengaruh apa-apa karena tidak diperlukan.Lihat dalam aksi:
Cuplikan yang sama di JsFiddle
Bonus:
Kita dapat mengambil ini lebih jauh dan membuat fungsi ini beradaptasi dengan mengubah ukuran ketinggian penampil dinamis seperti:
sumber
Kamu bisa melakukan ini
sumber
Cukup atur html, body, dan baris lainnya kecuali footer ke 100%. misalnya
css menjadi
sumber
sumber
Bagaimana dengan itu:
sumber
Saya telah menggunakan banyak proyek saya dan tidak pernah mendapat masalah apa pun :)
untuk referensi Anda, Kode dalam cuplikan
sumber