Ho usato questo per attaccare il mio piè di pagina sul fondo e ha funzionato per me:
HTML
<body>
<div class="allButFooter">
<!-- Your page's content goes here, including header, nav, aside, everything -->
</div>
<footer>
<!-- Footer content -->
</footer>
</body>
Questa è l'unica modifica che devi fare nell'HTML, aggiungila div
alla "allButFooter"
classe. L'ho fatto con tutte le pagine, quelle che erano così brevi, sapevo che il piè di pagina non si sarebbe attaccato al fondo, e anche le pagine abbastanza lunghe da sapere già che dovevo scorrere. L'ho fatto, quindi ho visto che funziona bene nel caso in cui il contenuto di una pagina sia dinamico.
CSS
.allButFooter {
min-height: calc(100vh - 40px);
}
La "allButFooter"
classe ha un min-height
valore che dipende dall'altezza del viewport ( 100vh
significa il 100% dell'altezza del viewport) e dall'altezza del footer, che già sapevo fosse40px
.
È tutto ciò che ho fatto e ha funzionato perfettamente per me. Non l'ho provato in tutti i browser, solo Firefox, Chrome e Edge, e i risultati sono stati quelli che volevo. Il piè di pagina si attacca in basso e non è necessario pasticciare con z-index, position o altre proprietà. La posizione di ogni elemento nel mio documento era la posizione predefinita, non l'ho cambiata in assoluta o fissa o altro.
Lavorare con un design reattivo
Ecco qualcosa che vorrei chiarire. Questa soluzione, con lo stesso piè di pagina che era alto 40 px, non funzionava come mi aspettavo quando stavo lavorando in un design reattivo utilizzando Twitter-Bootstrap
. Ho dovuto modificare il valore che stavo sottraendo nella funzione:
.allButFooter {
min-height: calc(100vh - 95px);
}
Questo è probabilmente perché Twitter-Bootstrap
viene fornito con i suoi margini e le sue imbottiture, quindi è per questo che ho dovuto regolare quel valore.
Spero che questo sia di qualche utilità per voi ragazzi! Almeno, è una soluzione semplice da provare e non comporta modifiche sostanziali all'intero documento.