Skip to content

Mihai Baboi

Vorbim despre mașini, tehnologie și nu numai

Menu
  • Home
  • Despre mine
  • Despre blog
  • Contact
  • Privacy Policy
Menu

Rezolvare simpla la o problema veche – div-uri si float-uri

Posted on May 20, 2010

Zilele trecute, in timp ce lucram la un site, am facut o descoperire care urmeaza sa-mi scuteasca mult timp, dar mai ales multa bataie de cap.

Multi dintre cei care fac webdesign s-au lovit la un moment dat de aceasta problema. Se da codul:

<div id="wrapper">
	<div id="header">
		<!-- Continut header -->
	</div>
	<div id="content">
		<!-- Continut principal -->
	</div>
	<div id="sidebar">
		<!-- Continut sidebar -->
	</div>
	<div id="footer">
		<!-- Continut footer -->
	</div>
</div>

Totul este minunat pana ajungem la partea cu continut si incepem sa folosim float-uri. De obicei CSS-ul pentru un astfel de layout arata asa:

#wrapper {
	width: 980px;
	margin: 0px auto 2px auto;
}

#header {
	width: 100%;
	float: left;
}

#content {
	width: 640px;
	float: left;
}

#sidebar {
	width: 340px;
	float: left;
}

#footer {
	width: 100%;
	float: left;
}

*Bineinteles ca acesta nu este CSS-ul complet. El ofera doar structura de baza a layout-ului.

Acum structura pare completa, dar exista o problema. Toate elementele din pagina sunt “float-ate”, mai putin unul: div-ul cu id=”wrapper”. Acest lucru, face ca div-ul numit in mod sugestiv “wrapper” sa nu se mai “infasoare” in jurul continutului.

Ce inseamna asta de fapt? Sa zicem ca vrem sa delimitam marginile site-ului cu un border. Vom avea un cod care arata asa:

#wrapper {
	width: 980px;
	margin: 0px auto 2px auto;
	border-left: 1px solid #e5e5e5;
	border-right: 1px solid #e5e5e5;
}

Din pacate, in loc sa vedem un border de-a lungul site-ului pe ambele parti, se va vedea un border “inghesuit” in partea de sus a site-ului. Motivul, este cel despre care vorbeam mai devreme. div-ul “wrapper” nu mai cuprinde toate celelalte elemente pana in partea de jos. El sta in partea de sus ca si cand ar fi gol.

Exista cateva solutii la aceasta problema. Ele sunt dupa cum urmeaza:

Prima solutie se foloseste de element-ul “footer” pentru a rezolva problema. Codul arata asa:

#footer {
	width: 100%;
	float: left;
	clear: both;
}

In felul acesta div-ul “wrapper” se intinde din nou pe toata suprafata site-ului. Problema apare atunci cand nu avem un element “footer” (problema poate aparea si la sub-elemente din pagina).

O alta metoda (care poate compensa cazul de mai sus), presupune folosirea unul pseudo-selector mai putin folosit. Codul arata asa:

#sidebar:after {
	content: ".";
	display: block;
	height: 0;
	clear: both;
	visibility: hidden;
}

Aceasta metoda foloseste acelasi princpiu cu cea dinainte, doar ca nu prespune tag-uri suplimentare in cod, ceea ce inseamna ca poate fi folosit in mod mai versatil.

Cea de-a 3-a metoda, cea pe care am descoperit-o de curand, este cea mai simpla si mai versatila dintre toate. Codul arata asa:

#wrapper {
	width: 980px;
	margin: 0px auto 2px auto;
	overflow: auto;
}

Se pare ca atunci cand setam proprietatea “overflow” pe auto, div-ul isi da seama ca trebuie sa se infasoare in jurul continutului.

Aceasta din urma este metoda mea preferata, mai ales pentru ca pare sa mearga in toate browser-ele (cel putin in cele testate de mine).

Share this:

  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on X (Opens in new window) X

Related

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Analiză Tehnică
  • Auto
  • Comunicate
  • Concurs
  • Diverse
  • Evenimente
  • Foto
  • Hardware
  • Întreabă-mă
  • Lansări
  • Mașini
  • Noutăți auto
  • Opinie
  • Programare
  • Review
  • Scurte
  • Șed și Cuget
  • Zvonuri

allview Android aspect autonomie browser bune practici camera CodeIgniter Code Igniter Cold Fusion concluzii concurs css3 display div dual core Evolio evoMAG evoMAG.ro hardware HTC html html5 instalare lansare laptop Library libris.ro marketonline Nikon nokia performanta pret programare review samsung Samsung Galaxy S II smartphone specificatii standarde Symbian tableta teste upgrade user experience

©2025 Mihai Baboi | Design: Newspaperly WordPress Theme