Diberikan HTML berikut:
<div id="container">
<!-- Other elements here -->
<div id="copyright">
Copyright Foo web designs
</div>
</div>
Saya ingin #copyright
tetap di bagian bawah #container
.
Dapatkah saya mencapai ini tanpa menggunakan penentuan posisi absolut? Jika properti float mendukung nilai 'bawah' tampaknya akan melakukan trik, tetapi sayangnya tidak.
Jawaban:
Mungkin tidak.
Tetapkan
position:relative
ke#container
, laluposition:absolute; bottom:0;
ke#copyright
.sumber
Sebenarnya, jawaban yang diterima oleh @ Pengguna hanya akan berfungsi jika jendelanya tinggi dan kontennya pendek. Tetapi jika kontennya tinggi dan jendelanya pendek, itu akan menempatkan info hak cipta di atas konten halaman, dan kemudian menggulir ke bawah untuk melihat konten akan meninggalkan Anda dengan pemberitahuan hak cipta mengambang. Itu membuat solusi ini tidak berguna untuk sebagian besar halaman (seperti halaman ini, sebenarnya).
Cara paling umum untuk melakukan ini adalah pendekatan "CSS sticky footer" yang ditunjukkan, atau variasi yang sedikit lebih ramping. Pendekatan ini sangat bagus - JIKA Anda memiliki footer tinggi yang tetap.
Jika Anda memerlukan footer tinggi variabel yang akan muncul di bagian bawah jendela jika konten terlalu pendek, dan di bagian bawah konten jika jendela terlalu pendek, apa yang Anda lakukan?
Telan harga diri Anda dan gunakan meja.
Sebagai contoh:
Cobalah. Ini akan berfungsi untuk ukuran jendela apa pun, untuk jumlah konten apa pun, untuk ukuran kaki berapa pun, di setiap browser ... bahkan IE6.
Jika Anda merasa ngeri membayangkan menggunakan tabel untuk tata letak, luangkan waktu sejenak untuk bertanya pada diri sendiri mengapa. CSS seharusnya membuat hidup kita lebih mudah - dan memang, secara keseluruhan - tetapi faktanya adalah bahwa setelah bertahun-tahun, itu masih berantakan, kontra-intuitif kekacauan. Itu tidak bisa menyelesaikan setiap masalah. Itu tidak lengkap.
Tabel tidak keren, tetapi setidaknya untuk saat ini, mereka kadang-kadang merupakan cara terbaik untuk memecahkan masalah desain.
sumber
Pendekatan flexbox!
Di browser yang didukung , Anda dapat menggunakan yang berikut:
Contoh Di Sini
Tampilkan cuplikan kode
Solusi di atas mungkin lebih fleksibel, namun, berikut ini adalah solusi alternatif:
Contoh Di Sini
Tampilkan cuplikan kode
Sebagai catatan tambahan, Anda mungkin ingin menambahkan awalan vendor untuk dukungan tambahan.
sumber
column-reverse
orang tua, jadi Anda tidak perlu menambahkan apa pun pada anak sama sekali?Ya Anda dapat melakukan ini tanpa
absolute
memposisikan dan tanpa menggunakantable
s (yang mengacaukan markup dan semacamnya).DEMO
Ini diuji untuk bekerja pada IE> 7, chrome, FF & adalah hal yang sangat mudah untuk ditambahkan ke tata letak yang ada.
Secara efektif melakukan apa yang
float:bottom
akan, bahkan akuntansi untuk masalah yang ditunjukkan dalam jawaban @Rick Reilly!sumber
<!DOCTYPE>
mengatur agar ini bekerja di IE (<= 8 setidaknya); versi yang lebih lama hanya mendukungdisplay:table-XXX
mode "standar". Tetapi mode standar juga akan memecah banyak halaman yang dirancang untuk, katakanlah, IE6..foot{display: table-footer-group}
. Aku tidak perluvertical-align
,height
atauborder-collapse
.#container
hanya berisi#foot
dan tidak ada konten lain?Ini pertanyaan lama, tetapi ini adalah pendekatan unik yang dapat membantu dalam beberapa kasus.
CSS Murni, Tanpa Penentuan Posisi Absolut, Tanpa Memperbaiki Tinggi, Peramban Silang (IE9 +)
lihat biola yang bekerja itu
Karena aliran normal adalah 'top-to-bottom' kita tidak bisa hanya meminta
#copyright
div untuk tetap pada bagian bawah orang tuanya tanpa benar-benar memposisikan semacam itu, tetapi jika kita ingin#copyright
div untuk menempel pada bagian atas orang tuanya, itu akan sangat sederhana - karena ini adalah cara aliran normal.Jadi kita akan menggunakan ini untuk keuntungan kita. kami akan mengubah urutan huruf
div
s dalam HTML, sekarang#copyright
div berada di atas, dan konten segera mengikutinya. kami juga membuat div konten membentang sepanjang jalan (menggunakan elemen pseudo dan teknik kliring)sekarang hanya masalah membalikkan urutan itu kembali ke tampilan. yang dapat dengan mudah dilakukan dengan transformasi CSS.
Kami memutar wadah sebanyak 180 derajat, dan sekarang: naik-turun. (dan kami membalikkan konten agar terlihat normal kembali)
Jika kita ingin memiliki scroolbar di dalam area konten, kita perlu menerapkan sedikit lebih banyak sihir CSS. seperti yang dapat ditunjukkan di sini [dalam contoh itu, konten di bawah tajuk - tetapi gagasan yang sama]
sumber
Buat wadah lain
div
untuk elemen-elemen di atas#copyright
. Tepat di atas hak cipta, tambahkan yang barudiv
:<div style="clear:both;"></div>
Ini akan memaksa footer berada di bawah segalanya, seperti halnya dalam menggunakan posisi relatif (bottom:0px;
).sumber
Coba ini;
sumber
Sementara tidak ada jawaban yang diberikan di sini tampaknya berlaku atau berfungsi dalam kasus khusus saya, saya menemukan artikel ini yang memberikan solusi rapi ini:
Saya merasa sangat berguna untuk menerapkan desain responsif untuk tampilan seluler tanpa harus menyusun ulang semua kode html situs web, mengatur
body
dirinya sendiri sebagai tabel.Perhatikan bahwa hanya yang pertama
table-footer-group
atau yangtable-header-group
akan dirender seperti itu: jika ada lebih dari satu, yang lain akan diterjemahkan sebagaitable-row-group
.sumber
Kotak CSS
Karena penggunaan CSS Grid meningkat, saya ingin menyarankan
align-self
elemen yang ada di dalam wadah grid.align-self
dapat berisi nilai-nilai:end
,self-end
,flex-end
untuk contoh berikut.sumber
Anda memang bisa
align
kotak kebottom
tanpa menggunakanposition:absolute
jika Anda tahuheight
tentang#container
penggunaan fitur penyelarasan teksinline-block
elemen.Di sini Anda dapat melihatnya beraksi.
Ini kodenya:
sumber
Menggunakan translateY dan properti teratas
Cukup atur elemen anak ke posisi: relatif dan daripada memindahkannya ke atas: 100% (itu adalah tinggi 100% dari induk) dan menempel ke bawah induk dengan mentransformasikan: menerjemahkan ((100%)) (itu -100% dari tinggi anak).
Manfaat
Tapi masih saja solusinya :(
Jangan lupa awalan untuk peramban yang lebih lama.
sumber
Tautan CodePen di sini .
sumber
Jika Anda ingin "menempel" ke bawah, terlepas dari ketinggian wadah, maka penentuan posisi absolut adalah cara yang harus dilakukan. Tentu saja, jika elemen hak cipta adalah yang terakhir dalam wadah itu akan selalu ada di bagian bawah.
Bisakah Anda memperluas pertanyaan Anda? Jelaskan dengan tepat apa yang Anda coba lakukan (dan mengapa Anda tidak ingin menggunakan penentuan posisi absolut)?
sumber
Juga, jika ada ketentuan dengan menggunakan
position:absolute;
atauposition:relative;
, Anda selalu dapat mencobapadding
orang tuadiv
atau meletakkanmargin-top:x;
. Bukan metode yang sangat baik dalam banyak kasus, tetapi mungkin berguna dalam beberapa kasus.sumber
Mungkin ini membantu seseorang: Anda selalu dapat menempatkan div di luar div lain dan kemudian mendorongnya ke atas menggunakan margin negatif:
sumber
sumber
Tidak ingin menggunakan "position: absolute" untuk footer lengket di bagian bawah. Maka Anda bisa melakukan ini:
sumber
Jika Anda tidak tahu ketinggian balok anak:
http://jsbin.com/ULUXIFon/3/edit
Jika Anda tahu ketinggian blok anak tambahkan blok anak kemudian tambahkan padding-top / margin-top:
sumber
Hanya karena ini belum disebutkan sama sekali, apa yang biasanya bekerja dengan baik dalam situasi seperti Anda:
Menempatkan div-hak cipta setelah div -wadah
Anda hanya perlu memformat div hak cipta dengan cara yang mirip dengan wadah lain (lebar keseluruhan yang sama, pemusatan, dll.), Dan semuanya baik-baik saja.
CSS:
HTML:
Satu-satunya saat ini mungkin tidak ideal adalah ketika wadah-div Anda dideklarasikan dengan
height:100%
, dan pengguna harus menggulir ke bawah untuk melihat hak cipta. Tetapi bahkan Anda masih dapat bekerja (misalnyamargin-top:-20px
- ketika ketinggian elemen hak cipta Anda adalah 20px).Selain itu: Saya tahu OP meminta solusi yang "... menempel pada bagian bawah wadah 'div ..." , dan bukan sesuatu di bawahnya, tetapi ayolah, orang mencari solusi yang baik di sini, dan ini adalah satu!
sumber
margin-top: -{element height}
.Berikut ini adalah pendekatan yang ditargetkan untuk membuat elemen dengan ketinggian dan lebar yang diketahui (setidaknya kira-kira) melayang ke kanan dan tetap di bagian bawah, sementara berperilaku sebagai elemen sebaris dengan elemen lainnya. Ini difokuskan di kanan bawah karena Anda dapat menempatkannya dengan mudah di sudut lain melalui metode lain.
Saya perlu membuat bilah navigasi yang akan memiliki tautan aktual di kanan bawah, dan elemen saudara kandung acak, sambil memastikan bahwa bilah itu meregang dengan benar, tanpa mengganggu tata letak. Saya menggunakan elemen "bayangan" untuk menempati ruang tautan bilah navigasi dan menambahkannya di akhir simpul anak kontainer.
sumber
Tidak ada yang disebut
float:bottom
dalam CSS. Cara terbaik adalah menggunakan pemosisian dalam kasus seperti ini:sumber
Untuk mereka yang hanya memiliki satu anak dalam wadah, Anda dapat menggunakan
table-cell
danvertical-align
pendekatan yang bekerja andal untuk memposisikan satu div di bagian bawah induknya.Perhatikan bahwa menggunakan
table-footer-group
jawaban lain yang disebutkan akan mematahkan perhitungan tinggi induktable
.sumber
Menurut: w3schools.com
Jadi, Anda perlu memposisikan elemen induk dengan sesuatu yang relatif atau absolut, dll, dan memposisikan elemen yang diinginkan ke absolut dan yang terakhir disetel ke bawah ke 0.
sumber
Div gaya,
position:absolute;bottom:5px;width:100%;
bekerja, tetapi diperlukan situasi scrollup lebih.sumber