Legați subsolul la partea de jos a paginii css. Subsol fix

Cum împingeți subsolul în partea de jos a paginii? Această întrebare este pusă de mulți dintre cei care au întâlnit aspectul layout-urilor site-ului web. Faptul este că, dacă înălțimea blocurilor din aceste aspecte nu este specificată în mod explicit, atunci aceasta depinde de cantitatea conținutului lor; în consecință, dacă acest conținut este suficient de mic, atunci întregul aspect poate ocupa o înălțime mai mică decât fereastra browserului. . Desigur, toate acestea nu arată foarte bine. Acum vă voi arăta mai multe modalități de a împinge subsolul în partea de jos a paginii și, astfel, de a face aspectul mai atractiv și mai familiar.

În fiecare dintre exemple vom pleca de la faptul că aspectul site-ului are această structură obișnuită (dispunerea dvs. poate varia, dar metodele sunt universale):

Conţinut

Următorul de realizat rezultatul cerut Blocuri suplimentare, proprietăți CSS etc. vor fi adăugate la aspect. Cu toate acestea, în aspectul în care ați decis să împingeți subsolul în partea de jos a paginii, aceste blocuri sau unele proprietăți pot fi deja prezente, deci nu este nevoie să le adăugați din nou. Toate proprietățile CSS care sunt direct implicate în fixarea subsolului în partea de jos sunt furnizate cu comentarii.

Apăsați subsolul în partea de jos folosind poziționare

site web - apăsați subsolul în jos folosind poziționarea
Conţinut

Descrierea exemplului

  1. Toate blocurile de layout au fost închise în bloc suplimentar-wrapper id="wrapper" , căruia i s-a dat o înălțime minimă ( proprietate CSS) egal cu 100%, astfel încât să se întindă la toată înălțimea ferestrei browserului, dar dacă este necesar, se poate întinde și mai mult. Cu toate acestea, deoarece valorile procentuale sunt calculate în raport cu strămoșul, pentru ca acest lucru să funcționeze, a trebuit să specificăm în mod explicit înălțimea (CSS) pentru etichete și.
  2. Urmatorul pas a devenit poziționarea absolută (CSS) a subsolului în raport cu blocul de înveliș pe partea sa inferioară (CSS). Astfel, subsolul nostru a fost apăsat în partea de jos a paginii.
  3. Deoarece poziționarea absolută scoate elementul din flux, atunci când adăugați informații la blocuri cu conținut și meniuri, o parte din aceasta va trece sub subsolul apăsat. Pentru a preveni acest lucru, elementele id="content" și id="menu" au fost setate să aibă o umplutură de jos (CSS) egală cu înălțimea subsolului. Acum ei vor fi cei care vor intra sub subsol și îl vor împinge în jos.
  4. Deoarece în aspectul nostru blocul cu meniul este plutitor (CSS), subsolul tot nu îl va observa și, în consecință, meniul nu îl va împinge în jos. Pentru a remedia acest lucru, a fost creat un alt bloc (class="clear") care rupe împachetarea (proprietatea CSS). Apropo, dacă nu intenționați să acceptați IE6 și IE7, puteți aplica acest bloc la ultimul blocînainte de subsol (aici este „conținut”) un pseudo-element și faceți doar o întrerupere a fluxului pe el.

În primul punct, a fost aplicată o proprietate CSS pentru a specifica o înălțime minimă, ceea ce nu înțelege Internet Explorer 6. Dar el înțelege proprietatea ca doar înălțimea minimă. De asemenea, acest browser ignoră regula în anumite cazuri. Aceste două caracteristici au fost utilizate în în acest exemplu pentru a crea haka pentru a-l face să facă ceea ce trebuie să facă fără a afecta alte browsere.

Apăsați subsolul în partea de jos folosind blocuri suplimentare

site web - apăsați subsolul în partea de jos folosind blocuri suplimentare
Conţinut

Descrierea exemplului

  1. Toate blocurile de aspect, cu excepția subsolului, au fost împachetate într-un bloc suplimentar id="wrapper", care a fost setat la o înălțime minimă (CSS) de 100%. Acest lucru a fost făcut astfel încât învelișul blocului să se întindă cel puțin la înălțimea completă a ferestrei browserului, dar dacă este necesar (dacă era mult conținut) s-ar putea întinde și mai mult. Acum, înălțimea wrapper-ului nostru este egală cu înălțimea ferestrei browserului, iar înălțimea întregii pagini HTML = înălțimea wrapperului + înălțimea subsolului.
  2. Ca urmare a acțiunilor din primul punct, deși subsolul nostru a fost apăsat în partea de jos a paginii, a depășit marginea de jos a ferestrei browserului, ceea ce nu este bine. Pentru a-l aduce la vedere, i s-a atribuit o marjă negativă superioară (CSS) a cărei dimensiune egală cu înălțimea subsolul propriu-zis. Gata, subsolul este apăsat și situat în partea de jos a paginii.
  3. Din moment ce în paragraful anterior Am specificat o marjă negativă superioară pentru subsolul apăsat, apoi atunci când adăugați informații la blocuri de conținut sau meniuri, o parte din aceasta va trece sub acest subsol. Pentru a evita acest lucru, a fost creat un alt bloc cu id="footer_correct" , a cărui înălțime este egală (puteți să-l măriți și puțin) cu înălțimea subsolului. Astfel, acest bloc corectiv este cel care va merge sub subsolul apăsat și îl va împinge în jos, împiedicând ascunderea informațiilor.
  4. La blocul de ajustare a fost adăugată o întrerupere a împachetarii (CSS) pentru a-l împiedica să se încadreze în meniu dacă depășește înălțimea conținutului. În consecință, această întrerupere a fluxului a fost eliminată din subsol ca fiind inutilă.

Ca și în primul exemplu, pentru IE6 a fost folosit aici un hack special care vă permite să setați înălțimea minimă.

02.05.15 21.5K

Acesta este un fel de coșmar! De ce subsolul site-ului tău „apare” din nou și schimbă designul? Este chiar imposibil să apăsați corect subsolul din partea de jos a paginii cu ceva? Conținut sau cărămizi măcar! Cărămida nu se potrivește în monitor?


Văd, apoi stai și nu faci nimic până nu citești articolul nostru până la sfârșit.

Realizarea subsolului potrivit pentru site-ul dvs

Mulți proprietari de site-uri web se confruntă cu această problemă atunci când subsolul paginii plutește pur și simplu în partea de sus. Și atunci nu este clar ce să faci. Cel mai adesea, design de site-uri realizate pe o remediere rapidă, pe cont propriu ( cerc" mâini nebune» ) sau webmasteri începători.

În același timp, nu se întâmplă nimic groaznic în primele etape ale vieții site-ului. Și această idilă continuă atâta timp cât conținutul își pune „greutatea” pe subsol, împiedicându-l să se ridice. Dar merită să plasați volume mai mici de material pe pagină, iar subsolul recent „calm” se ridică instantaneu în partea de sus, aducând întregul design al site-ului într-un aspect nepotrivit.

Pentru a elimina acest „defect” al șablonului proiectat, nu este necesar să cheltuiți bani pe serviciile unui webmaster. Cel mai adesea, subsolul site-ului poate fi instalat singur. Să luăm în considerare totul opțiuni posibile Pentru a rezolva această problemă:

Prima cale

Pe primul mod de a „lega” subsolul „în partea de jos” a paginii se bazează Bazat pe CSS. Să începem cu exemplul de cod și apoi să aruncăm o privire mai atentă asupra implementării acestuia:

html ( înălțime: 100%; ) antet, navigare, secțiune, articol, deoparte, subsol ( afișare: bloc; ) corp ( înălțime: 100%; ) #wrapper ( lățime: 1000px; margine: 0 auto; înălțime minimă: 100 %; înălțime: automat !important; înălțime: 100%; ) #header (înălțime: 150px; culoarea fundalului: rgb(0.255.255); ) #conținut (padding: 100px; înălțimea: 400px; culoarea fundalului: rgb(51.255.102) ; ) #footer ( lățime: 1000px; margine: -100px auto 0; înălțime: 100px; poziție: relativă; culoarea fundalului: rgb(51,51,204); )

Pentru a atașa o etichetă de subsol în partea de jos a paginii

l-am mutat în afara containerului (layer wrapper ). Întindem întreaga pagină și conținutul „corpului” până la marginile ecranului. Pentru a face acest lucru, setăm înălțimea etichetelor în codul CSS Și la 100%:

html ( înălțime: 100%; ) corp ( înălțime: 100%; )

De asemenea, am stabilit înălțimea minimă a stratului de container la 100%. În cazul în care lățimea conținutului este mai mare decât înălțimea containerului, setați proprietatea la auto . Datorită acestui fapt, wrapper-ul se va ajusta automat la lățimea conținutului plasat pe pagină:

#wrapper ( înălțime minimă: 100%; înălțime: automat !important; înălțime: 100%; )

Linia de cod „înălțime: 100%” este destinată versiunilor mai vechi de IE care nu acceptă proprietatea min-height.

Pentru a separa spațiul pentru un subsol în designul paginii, setăm o indentare pentru etichetă la 100 pixeli:

#conținut ( umplutură: 100px; )

Pe în această etapă Ajungem cu o pagină web pe ecran complet plus 100 de pixeli suplimentari, care este „neutralizat” printr-o marjă negativă pentru subsol (marja: -100px) atunci când poziția sa este setată la relativă (poziție: relativă). Deci, folosind o valoare de umplutură negativă, „tragem” subsolul în zona containerului, care are înălțimea setată la 100%.

În acest exemplu, marcarea documentului web este specificată utilizând opțiunea relativ nouă Etichete HTML 5 care pot fi interpretate greșit versiuni învechite browsere. Din acest motiv, este posibil ca întregul design al paginii să nu fie afișat corect. Pentru a evita acest lucru, trebuie să înlocuiți noile etichete din arsenalul versiunii 5 a limbajului hipertext cu unele obișnuite.

:

conţinut

Versiune îmbunătățită

Metoda discutată mai sus despre cum să faceți subsolul din partea de jos a paginii „de nezdruncinat” nu este potrivită pentru toată lumea. Dacă urmează să modificați și să îmbunătățiți designul site-ului dvs. folosind ferestre pop-up în viitor, atunci este mai bine să încetați să utilizați implementarea anterioară.

Proprietatea CSS cel mai frecvent utilizată pentru ferestrele pop-up este z-index . Folosind valorile sale, specificați ordinea în care straturile sunt stivuite unul peste altul.

Cu cât valoarea indicelui z a unui element este mai mare, cu atât va apărea mai mare în stiva generală de „stratificare”.

Dar pentru că am folosit o valoare de umplere negativă pentru subsol în exemplul anterior, partea de jos a ferestrei pop-up se va suprapune pe zona de subsol de sus. Chiar dacă va avea valoare mai mare indicele z. Deoarece părintele (învelișul) ferestrei pop-up mai are o valoare mai mică pentru această proprietate.

Iată o opțiune mai avansată:

CSS - exemplu de cod:

html, body ( înălțime: 100%; ) .header ( înălțime: 120px; culoare de fundal: rgb(0,255,102); ) .main ( înălțime min: 100%; poziție: relativă; culoare de fundal: rgb(100,255,255); ) .footer ( înălțime: 150px; poziție: absolut; stânga: 0; jos: 0; lățime: 100%; culoare de fundal: rgb(0,0,153); )


După cum puteți vedea din cod, am plasat subsolul ca parte a elementului principal. Punem recipientul poziționare relativă, iar pentru subsol – absolut. Am fixat subsolul chiar în partea de jos a containerului, setându-i poziția în stânga și sus la 0.

Opțiune pentru un subsol cu ​​o înălțime nefixă

Implementările anterioare pot asigura că subsolul este întotdeauna în partea de jos a paginii. Dar numai dacă subsolul are o lățime fixă. Dar ce se întâmplă dacă cantitatea de conținut postată în el nu poate fi prezisă?

Salutare tuturor!

Site-ul arată plăcut din punct de vedere estetic dacă toate elementele sale sunt la locul lor. Cu toate acestea, există adesea cazuri în care totul pare să fie normal, dar ceva nu este încă în neregulă... De exemplu, dacă pagina este scurtă, subsolul nu este apăsat în partea de jos a paginii, ci este situat acolo unde ar trebui să fie - după blocul principal al site-ului. Nu arata foarte frumos.

Prin urmare, astăzi vă vom vorbi despre cum să apăsați subsolul site-ului limita inferioara fereastra browserului.

Deci, vom stabili următoarele cerințe pentru subsol:

  • subsolul este apăsat în partea de jos a ecranului atunci când înălțimea ferestrei browserului este mai mare decât înălțimea paginii, indiferent de conținut;
  • subsolul este la locul său când volumul de conținut este mai mare decât înălțimea ferestrei browserului;
  • funcționează în toate browserele populare;
  • fiabilitate - nu depinde de complexitatea aspectului.

De exemplu, să luăm pagina simpla, format din două blocuri principale: principal (principal) și subsol (subsol). Să facem ca blocul principal să ocupe întreaga zonă a ferestrei browserului, indiferent de cantitatea de conținut, apăsând în același timp subsolul în partea de jos a ecranului, astfel încât să nu apară în browser dungă verticală sul. Cum facem:

Pasul 1

Realizam 2 blocuri: principal (principal) si subsol (subsol). Întindem containerul principal la toată înălțimea ecranului browserului (înălțime minimă) și specificăm strict înălțimea subsolului (înălțimea).

În acest caz, înălțimea totală a site-ului va fi înălțimea ecranului + înălțimea subsolului.

Pasul 2

Folosim o marjă negativă (margin-top) pentru a „intra” în blocul principal, astfel încât înălțimea site-ului să fie doar 100% din înălțimea ecranului.

Cu această aranjare a blocurilor și cu o cantitate suficientă de conținut (de exemplu, text) în blocul principal, este posibil să suprapuneți conținutul din blocul principal pe subsol:

Pasul 3

Pentru a evita această potențială problemă, adăugați un bloc gol la sfârșitul blocului principal, a cărui înălțime nu este mai mică decât înălțimea subsolului (sau mai bine, puțin mai mult, astfel încât să existe un spațiu între conținut și subsol):

Acum, dacă există mult conținut, va muta blocul gol în jos. Și acest lucru va coborî subsolul, împiedicând conținutul să se potrivească pe el.

Să vedem cum arată în cod:

<html> <cap> <titlu > Subsolul este apăsat în partea de jos</titlu> <tip stil = "text/css" >* (marja: 0; padding: 0;) /* reset padding */ body ( background: #fff;) html,body ( înălțime: 100%; /* setează înălțimea corpului documentului */).main ( / * bloc principal , care ar trebui să se întindă până la subsol */ fundal: #999; /* culoarea de fundal a blocului principal (pentru claritate) */ înălțime minimă: 100%; /* setează înălțimea minimă a blocului principal */ ) * html .main ( /* hack pentru ie6 */ înălțime: 100%; /* pentru ie6, pentru că nu înțelege min-height */).hFooter ( /* acesta este un distanțier în blocul principal - ne rezervăm spațiu pentru subsol */ înălțime: 40px; /* înălțime subsolul nostru */).footer ( /* subsol */ fundal: #0000CC; /* culoare de fundal subsol (pentru claritate) */ culoare: #fff; înălțime: 40px ; /* înălțimea subsolului */ margin-top: -40px ; /* faceți o liniuță negativă în înălțime egală cu înălțimea subsolului pentru a se potrivi clar în dimensiunea ecranului */)</stil> </cap> <corp > <div class = "principal" > Acesta este blocul principal<div class = "hFooter" > </div> <div class = "subsol" > Acesta este subsolul</div> </corp> </html>

Notă: atunci când utilizați aspectul bloc și blocurile principale (coloane) plutitoare pentru .hFooter, ar trebui să adăugați clear: ambele astfel încât subsolul să fie situat sub coloane.:

.hFooter ( clar : ambele ; înălțime : 40 px ; )

Dacă ați stăpânit deja puțin, atunci poate apărea întrebarea: „De ce să folosiți un element suplimentar când puteți utiliza padding-bottom?”

Răspunsul este că nu poate fi folosit aici atât de simplu, deoarece dimensiunea blocului este egală cu dimensiunile + lățimea acestuia. căptușeală+ lățimea chenarului. O combinație de înălțime minimă: 100% și partea de jos a căptușelii va oferi site-ului înălțimea mai mare decât înălțimea ecranului. Drept urmare, chiar dacă nu există deloc conținut, subsolul va fi în afara ecranului.

Dezavantajul acestei tehnici este utilizarea unui element suplimentar hFooter gol. ÎN conditii reale(când conținutul site-ului nu este gol și este aplicat aspectul blocului) acest lucru poate fi evitat prin utilizarea - această tehnică va ajuta la curățarea fluxului fără a utiliza element suplimentar, și pentru ca conținutul să nu încapă în subsol, vom scrie padding-bottom în coloane.

Probleme cu straturile z

În tehnica descrisă mai sus, subsolul a fost ridicat cu o liniuță negativă în sus. În acest caz, apare potenţială problemă cu straturi z. De exemplu, trebuie să arătăm o fereastră pop-up (să fie un div), care va fi poziționată în raport cu containerul principal.

<div class = "principal" > [...] <div class = "popup" > [...] </div> </div> <div class = "subsol" > [...] </div>
.principal ( pozitie : relativ ; z-index : 1 ; /* z-index mai mic decât cel al subsolului, astfel încât să fie vizibil */) .popup ( poziție : absolut ; z-index : 100 ; [ ...] ) .footer ( înălțime : 50px ; margin-top : -50px ; poziție : relativă ; /* astfel încât să puteți seta z-index */ indicele z: 2; /* mai mult decât principal să fie vizibil */}

Totul este bine până când fereastra pop-up și subsolul nostru se intersectează (și această situație apare destul de des) - aici încep problemele. În ciuda faptului că fereastra pop-up are cel mai mare indice z, aceasta va fi suprapusă de subsol, deoarece pop-up-ul părinte are un z-index mai mic decât subsolul:

În acest caz, trebuie să căutați o oportunitate de a poziționa fereastra nu în raport cu principal, ci față de alt element copil care se află în interiorul principal. Astfel, vom scăpa de specificarea z-index pentru main și subsol. Dar această opțiune nu este întotdeauna posibilă, așa că să luăm în considerare a doua opțiune de apăsare a subsolului.

Soluția 2 - poziționare absolută

Ideea este similară cu soluția 1:

  • Întindem blocul principal pe toată înălțimea ecranului;
  • Rezervam spatiu pentru subsol;
  • Față de blocul principal, poziționăm subsolul în partea de jos folosind poziționarea absolută.

HTML: relativ; /* la elemente copil pozitionat fata de acest bloc */) .footer ( înălțime : 50px ; poziție : absolut ; stânga : 0 ; jos : 0 ; lățime : 100% ; ) * html .footer ( bottomy : expression(parentNode.offsetHeight % 2 ? style.bottom= "-1px" : style.bottom= "0px" ); /* hack pentru e6, care are un jamb cu un offset de 1px */}

Această abordare va rezolva problema cu ferestrele pop-up, deoarece... atât footer-ul, cât și popup-ul vor avea un părinte comun, ceea ce înseamnă că nu vor exista surprize cu straturi-z.

Dezavantajul ambelor metode este că ambele metode sunt potrivite doar pentru un subsol cu ​​o înălțime fixă.

Asta e tot pentru azi. Acum știți cum să apăsați subsolul în partea de jos a ecranului căi diferiteși ce probleme pot apărea.

Abonați-vă la actualizări și așteptați cu nerăbdare noi publicații interesante. Pa.