Hallitse CSS-aliruudukko tämän kattavan oppaan avulla. Opi luomaan täydellisesti kohdistettuja, monimutkaisia ja ylläpidettäviä verkkosivustoasetteluja globaalille yleisölle. Sisältää käytännön esimerkkejä ja parhaita käytäntöjä.
CSS Grid Aliruudukko: Syväsukellus Edistyneeseen Asettelukompositioon
Vuosien ajan web-kehittäjät ja suunnittelijat ovat hyödyntäneet CSS Gridin tehoa luodakseen kehittyneitä, kaksiulotteisia asetteluja ennennäkemättömällä hallinnalla ja joustavuudella. Grid mullisti tapamme ajatella web-sivujen rakennetta, siirtäen meidät pois float-elementtien rajoituksista ja Flexboxin yksiulotteisesta luonteesta. Kuitenkin, jopa sen tehon kanssa, jatkuva haaste säilyi: kohteiden kohdistaminen sisäkkäisissä ruudukoissa pääruudukon yläruudukkoon. Se oli yleinen turhautumisen lähde, mikä johti usein monimutkaisiin kiertoteihin, manuaalisiin laskelmiin tai kokonaan sisäkkäisen ruudukon rakenteen hylkäämiseen. Astu sisään CSS-aliruudukko, kauan odotettu ominaisuus, joka ratkaisee tyylikkäästi juuri tämän ongelman, avaten uuden tason tarkkuutta ja hienostuneisuutta asettelukompositioon.
Tämä kattava opas on suunniteltu globaalille front-end kehittäjien, web-suunnittelijoiden ja UI-insinöörien yleisölle. Tutkimme CSS-aliruudukon mitä, miksi ja miten -kohdat siirtyen peruskäsitteistä edistyneisiin käytännön sovelluksiin. Loppujen lopuksi et vain ymmärrä aliruudukkoa, vaan sinulla on myös valmiudet käyttää sitä rakentamaan vankempia, ylläpidettävämpiä ja kauniisti kohdistettuja asetteluja.
Haaste ennen aliruudukkoa: Sisäkkäisen ruudukon ongelma
Ymmärtääksemme täysin, mitä aliruudukko tuo pöytään, meidän on ensin ymmärrettävä maailma ilman sitä. Kuvittele, että sinulla on pääruudukon asettelu sivusi sisällölle. Yhden ruudukon kohteen sisällä sinun on luotava toinen ruudukko - sisäkkäinen ruudukko. Tämä on hyvin yleinen malli, erityisesti komponenttipohjaisessa suunnittelussa.
Tarkastellaan tyypillistä korttiasettelua. Sinulla on säiliö, joka sisältää useita kortteja, ja säiliö on CSS Grid. Jokainen kortti on ruudukon kohde. Jokaisen kortin sisällä haluat myös käyttää ruudukkoa sen sisällön jäsentämiseen - yläotsikko, päärunko ja alatunniste.
Ilman aliruudukkoa kortin sisällä olevalla sisäkkäisellä ruudukolla ei ole tietoa yläsäiliön ruudukon viivoista. Se luo oman, itsenäisen ruudukon muotoilukontekstin. Tämä tarkoittaa, että kortin sisällä määrittelemäsi raidat (sarakkeet ja rivit) ovat täysin eristettyjä pääsäiliön raidoista.
Visuaalinen esimerkki ongelmasta
Kuvittele tuoteluettelo, jossa jokainen tuote on kortti. Haluat tuotenimikkeiden kohdistuvan vaakasuunnassa kaikissa korteissa, ja "Lisää ostoskoriin" -painikkeet kunkin kortin alareunassa myös kohdistuvat riippumatta keskellä olevan kuvauksen pituudesta. Tavallisella sisäkkäisellä ruudukolla tätä on lähes mahdotonta saavuttaa turvautumatta kiinteisiin korkeuksiin tai JavaScript-laskelmiin.
Tässä on yksinkertaistettu koodiesimerkki tästä skenaariosta:
HTML-rakenne:
<div class="card-container">
<div class="card">
<h3>Tuote A</h3>
<p>Lyhyt, ytimekäs kuvaus.</p>
<button>Lisää ostoskoriin</button>
</div>
<div class="card">
<h3>Tuote B</h3>
<p>Tällä tuotteella on paljon pidempi kuvaus, joka rivittyy useille riveille aiheuttaen kohdistusongelmia sen alla oleville elementeille.</p>
<button>Lisää ostoskoriin</button>
</div>
<div class="card">
<h3>Tuote C</h3>
<p>Toinen kuvaus.</p>
<button>Lisää ostoskoriin</button>
</div>
</div>
CSS (ilman aliruudukkoa):
.card-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
.card {
border: 1px solid #ccc;
padding: 15px;
display: grid;
grid-template-rows: auto 1fr auto; /* Yläotsikko, runko (venyy), alatunniste */
gap: 10px;
}
.card h3 {
/* Ei tarvita erityistä tyylittelyä sijainnille */
}
.card p {
/* Tämä venyy, koska 1fr */
}
.card button {
align-self: end; /* Yrittää työntää painiketta ruudukkoalueensa alaosaan */
}
Tässä esimerkissä toisen kortin painike on alempana kuin muiden korttien painikkeet, koska sen kuvausteksti vie enemmän tilaa. Jokaisen kortin sisäinen ruudukko on täysin itsenäinen. Kappaleen rivin `1fr`-yksikköä käytetään vain kyseisen yksittäisen kortin käytettävissä olevan korkeuden yhteydessä. Painikkeilla ei ole jaettua ruudukon viivaa, johon kohdistua. Tämä on juuri se ongelma, jonka ratkaisemiseksi aliruudukko suunniteltiin.
CSS-aliruudukon esittely: Puuttuva osa täydelliseen kohdistukseen
CSS-aliruudukko on arvo `grid-template-columns`- ja `grid-template-rows`-ominaisuuksille. Kun sitä käytetään ruudukon kohteeseen (josta itsestään tulee ruudukon säiliö), se kehottaa kyseistä kohdetta olemaan luomatta omia uusia raitaluetteloita. Sen sijaan se lainaa ja ottaa käyttöön ruudukon raidat suoraan yläelementiltään.
Mikä aliruudukko on teknisesti?
Pohjimmiltaan aliruudukko luo suoran yhteyden sisäkkäisen ruudukon ja sen pääruudukon välille. Sisäkkäisestä ruudukosta tulee osallistuja pääruudukon muotoilukontekstissa määritetylle ulottuvuudelle (rivit, sarakkeet tai molemmat). Aliruudukoidun kohteen alielementit voidaan sitten sijoittaa tähän perittyyn ruudukkoon, jolloin ne voivat kohdistua muihin elementteihin välittömän pääelementin ulkopuolella, mutta samassa pääruudukossa.
Tärkein asia on tämä: Aliruudukko ei määrittele omia raitojaan; se käyttää pääelementtinsä raitoja.
`subgrid`-avainsana: Syntaksi ja käyttö
Syntaksi on kauniin yksinkertainen. Käytät `subgrid`-avainsanaa arvona `grid-template-columns`- ja `grid-template-rows`-ominaisuuksille tai molemmille elementille, joka on sekä ruudukon kohde että ruudukon säiliö.
Oletetaan, että alielementti `.nested-grid` on kohde `.parent-grid`-elementin sisällä. Tehdään siitä aliruudukko:
.parent-grid {
display: grid;
grid-template-columns: 1fr 2fr 1fr; /* Esimerkki pääelementin raidoista */
grid-template-rows: 100px auto 200px; /* Esimerkki pääelementin raidoista */
}
.nested-grid {
/* Tämän kohteen on katettava raidat, joita se haluaa käyttää */
grid-column: 1 / 4; /* Kattaa kaikki pääelementin 3 saraketta */
grid-row: 2 / 3; /* Sijaitsee pääelementin toisella rivillä */
/* Nyt aktivoimme aliruudukon */
display: grid;
grid-template-columns: subgrid; /* Perii pääelementin 3 sarakeraitaa */
grid-template-rows: subgrid; /* Perii pääelementin yhden "auto"-rivin */
}
Tärkeä muistettava asia: jotta aliruudukko perisi raitoja, sen on ensin varattava ne. Yllä olevassa esimerkissä `.nested-grid` kattaa kaikki pääelementtinsä kolme saraketta. Siksi, kun asetamme `grid-template-columns: subgrid;`, se saa pääsyn samoihin kolmeen raitaan. Sen omat lapset voidaan nyt sijoittaa käyttämällä pääelementin sarakeruudukon ruudukon viivoja 1–4.
Selainten tuki ja asteittainen parantaminen
Tätä kirjoitettaessa aliruudukko nauttii vahvaa tukea moderneissa selaimissa, mukaan lukien Firefox, Chrome, Edge ja Safari. Tämä tekee siitä toteuttamiskelpoisen työkalun tuotantosivustoille, jotka on suunnattu globaalille käyttäjäkunnalle. Kuten minkä tahansa modernin CSS-ominaisuuden kanssa, on kuitenkin viisasta ottaa huomioon käyttäjät vanhemmissa selaimissa.
Asteittainen parantaminen on tässä täydellinen strategia. Voimme käyttää CSS:n `@supports`-sääntöä tarjotaksemme vankan varasuunnittelun selaimille, jotka eivät ymmärrä aliruudukkoa, ja sitten soveltaa aliruudukon tehostamaa asettelua niille, jotka ymmärtävät.
/* --- Varasuunnittelu vanhemmille selaimille --- */
.card {
display: flex;
flex-direction: column;
justify-content: space-between; /* Hyvä flex-varasuunnittelu */
}
/* --- Aliruudukon parannus moderneille selaimille --- */
@supports (grid-template-rows: subgrid) {
.card {
display: grid;
grid-template-rows: subgrid; /* Ohittaa flex-näytön */
grid-row: span 3; /* Oletetaan, että pääruudukossa on 3 riviä otsikkoa, sisältöä, alatunnistetta varten */
}
}
Tämä lähestymistapa varmistaa toimivan ja hyväksyttävän kokemuksen kaikille ja toimittaa samalla erinomaisen, täydellisesti kohdistetun asettelun suurimmalle osalle käyttäjistä moderneissa selaimissa.
Käytännön syväsukellus: Aliruudukko toiminnassa
Teoria on olennaista, mutta aliruudukon näkeminen ratkaisemassa todellisia ongelmia on se, missä sen teho todella selviää. Palataan korttikomponenttiesimerkkiimme ja korjataan se aliruudukolla.
Esimerkki 1: Täydellisesti kohdistettu korttikomponentti
Tavoitteenamme on saada kortin otsikot, sisältöalueet ja alatunnisteet kohdistumaan kaikissa korteissa, luoden puhtaita vaakasuoria viivoja sisällön pituudesta riippumatta.
Ensinnäkin meidän on säädettävä pääruudukkoamme. Sarakkeiden määrittämisen sijaan määrittelemme myös rivit, jotka vastaavat korttiemme haluttuja osioita (otsikko, runko, alatunniste).
Uusi HTML (muutoksia ei tarvita):
<div class="card-container">
<!-- Kortit menevät tänne, samat kuin ennen -->
</div>
Uusi CSS (aliruudukolla):
.card-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
/* Määrittele rivit korttirakenteellemme */
grid-template-rows: auto 1fr auto; /* Rivi otsikoille, joustava runko, rivi alatunnisteille */
gap: 20px;
}
.card {
border: 1px solid #ccc;
padding: 15px;
/* --- Aliruudukko-taika --- */
display: grid;
/* Kortin itsensä on katettava kaikki rivit, joita se käyttää */
grid-row: 1 / 4; /* Kattaa kaikki kolme pääelementissä määritettyä riviä */
/* Nyt peri ne rivit */
grid-template-rows: subgrid;
}
/* Sijoita kortin lapset peritylle pääruudukolle */
.card h3 {
grid-row: 1; /* Sijoita pääelementin ruudukon ensimmäiselle riville */
}
.card p {
grid-row: 2; /* Sijoita toiselle (joustavalle) riville */
}
.card button {
grid-row: 3; /* Sijoita kolmannelle riville */
align-self: end; /* Valinnainen: kohdista rivin alaosaan */
}
Mitä juuri tapahtui?
- `.card-container` määrittelee nyt kolmirivisen ruudukon: yhden `auto`-kokoisen otsikoille, yhden `1fr`-joustavan rivin pääsisällölle ja toisen `auto`-kokoisen rivin painikkeille.
- Jokaiselle `.card`:ille kerrotaan, että sen on katettava kaikki kolme näistä rivistä (`grid-row: 1 / 4`).
- Ratkaisevaa on, että asetamme `.card`:lle `display: grid` ja `grid-template-rows: subgrid`. Tämä kertoo kortille: "Älä luo omia rivejäsi. Käytä niitä kolmea riviä, jotka olet kattanut pääelementistäsi."
- Nyt `h3`, `p` ja `button` jokaisessa kortissa sijoitetaan samalle jaetulle ruudukolle. Kortin 1 `h3` on samalla raiteella kuin kortin 2 `h3`. Kortin 1 `button` on samalla raiteella kuin kortin 2 painike. Lopputulos? Täydellinen vaakasuora kohdistus koko komponentissa.
Tämä on vallankumouksellinen muutos. Olemme saavuttaneet monimutkaisen kohdistustavoitteen yksinkertaisella, deklaratiivisella CSS:llä, ilman hakkerointia ja säilyttäen samalla puhtaan, semanttisen HTML-rakenteen.
Esimerkki 2: Lomakekenttien kohdistaminen monimutkaisessa asettelussa
Lomakkeet ovat toinen alue, jossa kohdistus on kriittistä puhtaan käyttökokemuksen kannalta. Kuvittele sivun osaa, joka on ruudukon kohde, ja kyseisen osion sisällä on lomake, jossa on otsikot ja syöttökentät, jotka haluat kohdistaa muiden sivun elementtien kanssa.
HTML-rakenne:
<div class="page-layout">
<aside>... sivupalkin sisältö ...</aside>
<main>
<h1>Profiiliasetukset</h1>
<form class="profile-form">
<label for="name">Koko nimi</label>
<input type="text" id="name" />
<label for="email">Sähköpostiosoite</label>
<input type="email" id="email" />
<label for="country">Maa/alue</label>
<input type="text" id="country" />
</form>
</main>
</div>
CSS käyttäen sarakekohtaista aliruudukkoa:
.page-layout {
display: grid;
/* Yleinen asettelu: sivupalkki, pääsisältö kahdella alasarakkeella */
grid-template-columns: 200px [main-start] 150px 1fr [main-end];
gap: 30px;
}
main {
grid-column: main-start / main-end; /* Kattaa kaksi pääsisältösaraketta */
display: grid;
/* Tämä on avain: peri pääelementin sarakkeet */
grid-template-columns: subgrid;
/* Voimme määritellä omia rivejä tarpeen mukaan */
grid-auto-rows: min-content;
align-content: start;
}
main h1 {
/* Anna otsikon kattaa molemmat perityt sarakkeet */
grid-column: 1 / 3;
}
.profile-form {
/* Tämä lomake on myös ruudukon kohde 'main' sisällä */
grid-column: 1 / 3;
display: grid;
/* Ja teemme siitä myös aliruudukon! */
grid-template-columns: subgrid;
gap: 15px;
grid-auto-rows: min-content;
}
/* Sijoita nyt otsikot ja syöttökentät peritylle sivutason ruudukolle */
.profile-form label {
grid-column: 1; /* Kohdistu ensimmäiseen sarakkeeseen (.page-layout:ista 150px) */
text-align: right;
}
.profile-form input {
grid-column: 2; /* Kohdistu toiseen sarakkeeseen (.page-layout:ista 1fr) */
}
Tässä edistyneessä esimerkissä meillä on sisäkkäinen aliruudukko. `main`-elementistä tulee aliruudukko perimään sarakeraidat `.page-layout`:ista. Sitten sen sisällä olevasta `form`:ista tulee myös aliruudukko, joka perii samat raidat uudelleen. Tämä mahdollistaa lomakkeen otsikoiden ja syöttökenttien sijoittamisen suoraan pääsivun ruudukolle, varmistaen, että ne kohdistuvat täydellisesti ylimmän tason säiliössä määritellyn yleisen sivurakenteen kanssa. Tällainen sävellyksellinen hallinta oli aiemmin mahdotonta pelkällä CSS:llä.
Aliruudukko riveille ja sarakkeille: Yksiulotteinen vs. kaksiulotteinen periytyminen
Sinun ei tarvitse käyttää aliruudukkoa molemmille akseleille samanaikaisesti. Voit halutessasi periä raidat vain sarakkeille, vain riveille tai molemmille. Tämä tarjoaa hienojakoisen hallinnan asetteluillesi.
Sarakekohtaiset aliruudukot: `grid-template-columns: subgrid;`
Tämä on ihanteellinen elementtien kohdistamiseen vaakasuunnassa komponenttien välillä, kuten yllä olevassa lomake-esimerkissä. Kun käytät `grid-template-columns: subgrid;`, sinun on silti määriteltävä omat riviraidat käyttäen vakiomääritelmiä, kuten `auto`, `1fr` tai pikseliarvoja (esim. `grid-template-rows: auto 1fr;`). Sisäkkäinen ruudukko perii sarakkeet, mutta on vastuussa omasta rivikoosta ja -lukumäärästä.
Rivipohjaiset aliruudukot: `grid-template-rows: subgrid;`
Tämä on täydellinen elementtien kohdistamiseen pystysuunnassa, kuten teimme korttikomponenttiesimerkissä. Se on erinomainen varmistamaan, että eri komponenttien vaakasuorat osiot ovat samalla linjalla. Kun käytät `grid-template-rows: subgrid;`, sinun on määriteltävä omat sarakeraitasi (esim. `grid-template-columns: 1fr 1fr;`).
Molemmat yhdistettynä: Täydellinen periytyminen
Kun asetat sekä `grid-template-columns: subgrid;` että `grid-template-rows: subgrid;`, sisäkkäisestä ruudukosta tulee todellinen välityspalvelin pääruudukolle sen määritellyn alueen sisällä. Se ei määrittele mitään omia raitojaan. Tämä on tehokasta komponenteille, joiden on oltava tiukasti rajattuja pääruudukon osaan, samalla kun niiden lapset voivat sijoittua vapaasti tähän perittyyn ruudukkorakenteeseen.
Harkitse kojelaudan widgettiä. Widgetti itse voi kattaa 3 saraketta ja 2 riviä kojelaudan pääruudukosta. Tekemällä widgetistä täydellisen aliruudukon, widgetin sisällä olevat elementit (kuten kaavion otsikko, itse kaavio ja selite) voidaan sijoittaa tarkasti noille 3 sarakkeelle ja 2 riville kohdistuen vierekkäisten widgettien elementteihin.
Edistyneet käsitteet ja vivahteet
Kun tulet mukavammaksi aliruudukon kanssa, kohtaat joitain sen hienovaraisempia ja tehokkaampia näkökohtia.
Aliruudukko ja `gap`
Pääruudukon `gap`-ominaisuus periytyy aliruudukkoon. Raitojen välinen tila on osa ruudukon määritystä. Tämä on yleensä mitä haluat, koska se ylläpitää tasaisen välin koko asettelussa. Voit kuitenkin määrittää `gap`:in itse aliruudukon säiliöön. Tämä lisää perittyä aukkoa, mikä on käytös, joka on tiedostettava. Useimmissa tapauksissa haluat määrittää aukon pääruudukossa ja antaa aliruudukon periä sen täydellisen johdonmukaisuuden saavuttamiseksi.
Koon muuttaminen ja kattaminen aliruudukon kontekstissa
Tämä on yksi tehokkaimmista ominaisuuksista. Kun sijoitat kohteen aliruudukkoon ja pyydät sitä kattamaan useita raitoja (esim. `grid-column: span 2;`), se kattaa alkuperäisen pääruudukon raidat. Se ei kata kahta raitaa aliruudukon säiliöstä; se kattaa kaksi raitaa, jotka aliruudukko peri.
Tämä mahdollistaa uskomattoman sävellyksellisen joustavuuden. Syvällä DOM-puussa oleva elementti voidaan kohdistaa ja kattaa sivun ylätason rakenteen kanssa murtautuen ulos välittömän säiliön visuaalisista rajoista hallitulla ja ennustettavalla tavalla. Tämä on fantastinen luotaessa dynaamisia, aikakauslehtityylisiä asetteluja, joissa kuva voi kattaa useita pääartikkelin ruudukon sarakkeita, vaikka se olisi sisäkkäin `figure`-elementin sisällä.
Esteettömyysnäkökohdat
Yksi CSS Gridin suurista eduista, joka ulottuu aliruudukkoon, on lähdekoodijärjestyksen erottaminen visuaalisesta esityksestä. Aliruudukon avulla voit ylläpitää loogista ja helppokäyttöistä HTML-dokumenttirakennetta (esim. otsikko, jota seuraa sen sisältö) samalla kun käytät ruudukkoa monimutkaisemman tai luovemman visuaalisen asettelun saavuttamiseksi.
Koska aliruudukko auttaa sinua välttämään asettelun hakkerointia, se johtaa usein puhtaampaan HTML:ään. Näytönlukija käy läpi loogisen dokumentin, kun taas visuaalinen käyttäjä näkee täydellisesti kohdistetun suunnittelun. Esimerkiksi korttiasettelussamme jokaisen kortin HTML säilyy itsenäisenä, loogisena yksikkönä (`h3` -> `p` -> `button`). Aliruudukko yksinkertaisesti koordinoi visuaalista kohdistusta näiden yksiköiden välillä muuttamatta dokumentin virtausta, mikä on suuri voitto esteettömyyden ja modernin web-kehityksen perusperiaatteiden kannalta.
CSS-asettelun tulevaisuus: Aliruudukon paikka ekosysteemissä
Aliruudukko ei ole Flexboxin tai tavallisen CSS Gridin korvaaja. Se on tehokas parannus, joka täyttää tietyn, kriittisen aukon. Moderni CSS-asettelu-ekosysteemi tarkoittaa oikean työkalun käyttöä työhön:
- Flexbox: Paras yksiulotteisille asetteluille, tilan jakamiseen yhtä akselia pitkin ja elementtien kohdistamiseen säiliön sisällä. Täydellinen navigointipalkeille, painikeryhmille ja yksinkertaisille komponenttien sisäosille.
- CSS Grid: Paras kaksiulotteisille sivutason asetteluille, suhteiden luomiseen rivien ja sarakkeiden välille. Perusta sivusi yleiselle rakenteelle.
- CSS-aliruudukko: Silta sisäkkäisten komponenttien ja pääsivun ruudukon välillä. Se on työkalu, johon tartut, kun ruudukon kohteen sisällä olevien elementtien on kohdistuttava sen ulkopuolella olevien elementtien kanssa.
Tulevaisuuteen katsoen aliruudukko toimii kauniisti muiden modernien CSS-ominaisuuksien, kuten säiliökyselyiden, kanssa. Sinulla voisi olla komponentti, joka ottaa käyttöön aliruudukkoasettelun, kun sen säiliö on leveä, mutta pinoaa yksinkertaiseksi lohkoksi tai flex-asetteluksi kapeassa säiliössä. Tämä makrotason asettelun (Grid), komponenttitasoisen kohdistuksen (aliruudukko) ja säiliötietoisen reagointikyvyn (säiliökyselyt) yhdistelmä antaa front-end-kehittäjille uskomattoman tehokkaan ja ilmeikkään työkalupakin seuraavan sukupolven web-käyttöliittymien rakentamiseen.
Johtopäätös: Hyödynnä kohdistetun koostumuksen voima
CSS-aliruudukko on enemmän kuin pelkkä uusi ominaisuus; se on paradigman muutos siinä, miten voimme säveltää monimutkaisia asetteluja verkossa. Se ratkaisee pitkäaikaisen ongelman tyylikkäällä ja intuitiivisella ratkaisulla, edistäen puhtaampaa koodia, ylläpidettävämpiä tyylitiedostoja ja visuaalisesti täydellisiä malleja.
Antamalla sisäkkäisten ruudukkojen osallistua pääelementtien asetteluun, aliruudukko antaa meille mahdollisuuden:
- Saavuttaa täydellisen kohdistuksen: Varmista, että erillisten komponenttien elementit kohdistuvat virheettömästi ilman hakkerointia tai JavaScriptiä.
- Kirjoittaa kuivempaa koodia: Määrittele ensisijainen ruudukkorakenne kerran ja anna sisäkkäisten elementtien periä se välttäen toistuvia raitamäärityksiä.
- Parantaa ylläpidettävyyttä: Asettelulogiikka on keskitetty pääruudukkoon, mikä tekee päivityksistä ja responsiivisista säädöistä paljon yksinkertaisempia.
- Parantaa esteettömyyttä: Luo hienostuneita visuaalisia asetteluja säilyttäen samalla loogisen ja semanttisen lähdekoodin järjestyksen.
Laajan selainten tuen ansiosta nyt on täydellinen aika kehittäjille ja suunnittelijoille ympäri maailmaa ottaa aliruudukko käyttöön työnkulussaan. Aloita tunnistamalla komponentit, jotka hyötyisivät elementtien välisestä kohdistuksesta, kokeile rivien ja sarakkeiden periytymistä ja koe sen tyytyväisyys, että rakennat asetteluja, jotka ovat yhtä vankkoja ja loogisia konepellin alla kuin ne ovat kauniita näytöllä. Kompromisseilla tehtyjen sisäkkäisten asettelujen aikakausi on ohi; edistyneen, kohdistetun komposiition aikakausi on todella alkanut.