Snelle tip het oplossen van het kolomhoogtepuntrum

Er is één bekend probleem in webontwerp dat al bestaat sinds we zijn overgestapt van de dagen van tafelgebaseerd ontwerp naar het CSS-tijdperk, en dat is:

Hoe kan ik 100% hoogte-achtergronden hebben in mijn flexibele indeling met meerdere kolommen?

Er zijn een paar oplossingen voor dit dilemma. Echter, degene die we gaan dekken, is misschien wel geschikt voor uw project als u:

  1. Achtergrondafbeeldingen, randen, CSS3-effecten enz. Toegepast op uw kolommen
  2. Meer dan drie kolommen
  3. Flexibele kolommen met hoogte en breedte

Een optie is om een ​​van de snelle, efficiënte aanpassingsservices voor websites van Envato Studio te bestellen. U kunt kiezen uit verschillende ervaren providers, hun beoordelingen bekijken en vervolgens de details sturen van de exacte wijzigingen die u nodig hebt.

Anders beginnen we met een snelle blik op het probleem.

Standaard Kolom Achtergrond Gedrag

Hieronder ziet u een eenvoudige lay-out met drie kolommen, waarbij u een standaardbenadering gebruikt om elke kolom aan de linkerkant te laten zweven. Als achtergronden standaard worden toegepast, passen de kolommen zich aan aan de hoogte van hun inhoud, zoals zo:

Dit is functioneel, maar niet de meest aangename lay-out voor het oog vanwege het grote hoogteverschil.

De HTML voor het bovenstaande plaatst drie "kolominhoud" -elementen in een wrapper:

...
...
...

De CSS voor deze elementen "kolominhoud" is:

.inhoud breedte: 60%; float: left; opvulling: 20px 30px; achtergrond: #fff; kleur: # 6d7072;  .sidebar width: 20%; float: left; opvulling: 20px 30px; achtergrond: # 5f6673; kleur: # ebeef3; tekengrootte: 90%;  .sidebar_two width: 20%; float: left; opvulling: 20px 30px; achtergrond: # 434750; kleur: # ebeef3; tekengrootte: 90%; 

Een oplossing: pseudo-elementen voor de redding

Wanneer we naar kolommen met gelijke hoogte verwijzen, willen we doorgaans aan twee voorwaarden voldoen:

  1. Sta kolomhoogte toe om flexibel in te passen op de hoeveelheid inhoud daarin.
  2. Stel een uniforme achtergrondhoogte in onafhankelijk van de hoeveelheid inhoud in elke kolom.

In ons voorbeeld hierboven hebben we al de eerste voorwaarde van flexibele hoogte voldaan. De achtergrondstijlen en flexibele hoogteregels maken echter allemaal deel uit van dezelfde klasse, toegepast op hetzelfde element. Welke hoogte regels dat element ook volgt, de achtergrond volgt ze ook.

Als we daarom willen dat de achtergronden verschillende hoogte-instellingen hebben, hebben we afzonderlijke elementen nodig waarop we de achtergrondstijlen kunnen toepassen samen met hun eigen set hoogteregels. Om deze afzonderlijke elementen te maken zonder extra markeringen toe te voegen, gaan we gebruiken pseudo-elementen.

Voor elke kolom gebruiken we de :voor pseudo-selector om een ​​apart pseudo-element te genereren, waarop we achtergrondstyling toepassen. We zullen dan een combinatie van absolute positionering en gebruiken z-index om deze achtergronden achter de inhoud van elke kolom te plaatsen en ze op een uniforme hoogte in te stellen.

De nieuwe CSS voor elke kolom wordt:

.content, .content: before width: 60%;  .content float: left; opvulling: 20px 30px; kleur: # 6d7072;  .content: before content: "; position: absolute; top: 0; bottom: 0; z-index: -1; left: 0; background: #fff;
.zijbalk, .sidebar: before width: 20%;  .sidebar float: left; opvulling: 20px 30px; kleur: # ebeef3; tekengrootte: 90%;  .sidebar: before content: "; position: absolute; top: 0; bottom: 0; z-index: -1; left: 60%; background-colour: # 5f6673;
.sidebar_two, .sidebar_two: before width: 20%;  .sidebar_two float: left; opvulling: 20px 30px; kleur: # ebeef3; tekengrootte: 90%;  .sidebar_two: before content: "; position: absolute; top: 0; bottom: 0; z-index: -1; left: 80%; background-color: # 434750;

Dat geeft ons de presentatie van mooie, zelfs kolomhoogtes:

Hoe het gedaan wordt

In een notendop wat we hier doen, is het absoluut plaatsen van "achtergrondhouder" pseudo-elementen achter de reguliere "kolominhoud" -elementen om achtergrondstijlen te creëren. 

Omdat deze "achtergrondhouder" pseudo-elementen absoluut gepositioneerd zijn, kunnen we hen exact vertellen waar hun buitenste randen zouden moeten zijn, terwijl ze toch toestaan ​​dat de "kolominhoud" -elementen elke hoogte of breedte hebben die ze nodig hebben.

De .wikkelen element, de drie onderliggende elementen en hun pseudo-elementenElk kolomelement heeft een overeenkomstig pseudo-element, dat als achtergrond fungeert

Belangrijk:Uw kolommen moeten zich in een bovenliggende wrapper bevinden (.wikkelen in dit geval) ingesteld op positie: relatief; om de absolute positionering te laten werken. Dit moet na de zwevende kolommen worden verwijderd om ervoor te zorgen dat het een hoogtewaarde ontvangt voor de achtergronden die worden uitgerekt.

Perks en alternatieve benaderingen

Er zijn een aantal geweldige benaderingen die andere manieren suggereren om dit probleem op te lossen. Als u de specifieke voordelen van deze aanpak niet nodig hebt, hebt u misschien de voorkeur voor een van de volgende oplossingen.

Vlakke kleuren versus achtergrondafbeeldingen en extra effecten

Als u van plan bent om alleen platte kleuren in uw achtergronden te gebruiken, dan is een heel slimme oplossing om een ​​horizontale CSS-gradiënt toe te passen, waarbij u kleurenbundels maakt die overeenkomen met uw kolommen. Bekijk hoe, dankzij Chris Coyier.

Als uw ontwerp echter afbeeldingen, randen, CSS3-effecten enzovoort nodig heeft voor uw achtergronden, kan onze "achtergrondhouder" div-techniek een betere pasvorm zijn, bijvoorbeeld.

Minder dan of meer dan drie kolommen

Een andere erg coole oplossing is om de pseudo-selectors te gebruiken :voor en :na op de bovenliggende wrapper van de kolommen om maximaal drie kolommen met gelijke hoogte-achtergronden te maken. Je kunt over deze techniek lezen, uitgelegd door Nicolas Gallagher.

Aan de andere kant, als u meer dan drie kolommen nodig heeft, zou u onze "achtergrondhouder" -techniek kunnen gebruiken, omdat u zoveel kolommen kunt hebben als u wilt. bv.

Conclusie

Zodra we brede ondersteuning voor de browser voor flexbox zien, zou het vrij eenvoudig moeten worden om dit soort dingen te doen zonder te hoeven vertrouwen op pseudo-elementen..

Maar tussen nu en toen is dit een geweldige manier om de klus te klaren. Hiermee kunt u de flexibele breedte behouden voor responsieve lay-outs, zoveel kolommen gebruiken als u wilt en elk type achtergrondstijl toepassen.