Kumipöytä flex javascript css. FlexBoxin käytännöllinen sovellus. Pääakselin kohdistus: tasaus-sisältö

Danny Markov

Suunnittelu on melko yksinkertainen - se koostuu keskelle kohdistetusta säiliöstä, jonka sisällä meillä on otsikko, pääosio, sivupalkki ja alatunniste. Tässä ovat tärkeimmät "testit", jotka meidän tulisi suorittaa pitäen CSS ja HTML mahdollisimman puhtaina:

  1. Sijoita asettelun neljä pääosaa.
  2. Tee sivusta responsiivinen (sivupalkki jää pääsisällön alapuolelle pienillä näytöillä).
  3. Tasaa otsikon sisältö - vasen navigointi, oikea painike.

Kuten näette, vertailun vuoksi pidimme kaiken mahdollisimman yksinkertaisena. Aloitetaan ensimmäisestä testistä.

Testi 1: Sivuosien asettaminen

Flexbox ratkaisu

Lisää näyttö: taivuta säilöön ja aseta alatason elementtien pystysuunta. Tämä asettaa kaikki osat toistensa alle.

Säiliö ( näyttö: flex; flex-direction: sarake; )

Nyt meidän on varmistettava, että pääosa ja sivupalkki sijaitsevat vierekkäin. Koska flex-säiliöt ovat yleensä yksisuuntaisia, meidän on lisättävä ylimääräinen elementti.

Asetamme sitten tämän elementin näytön: flex ja flex-direction vastakkaiseen suuntaan.

Pää- ja sivupalkin kääre ( näyttö: flex; flex-suunta: rivi; )

Viimeinen vaihe on pääosan ja sivupalkin mitat. Haluamme pääsisällön olevan kolme kertaa sivupalkin leveys, mikä on helppo tehdä flexillä tai prosenteilla.

Kuten näette, Flexbox teki kaiken hyvin, mutta tarvitsimme myös melko paljon CSS-ominaisuuksia sekä ylimääräisen HTML-elementin. Katsotaan kuinka CSS Grid toimii.

CSS Grid -ratkaisu

CSS-ruudukon käyttämiseen on useita vaihtoehtoja, mutta käytämme grid-template-areas -syntaksia tarkoituksiin sopivimpana.

Ensin määritetään neljä ruudukkoaluetta, yksi kullekin sivun osalle:

header ( grid-area: header; ) .main ( grid-area: main; ) .sidebar ( grid-area: sidebar; ) alatunniste ( grid-area: alatunniste; )

Nyt voimme asettaa verkkomme ja määrittää kunkin alueen sijainnin. Koodi saattaa aluksi tuntua melko monimutkaiselta, mutta kun ruudukkojärjestelmään tutustuu, se on helpompi ymmärtää.

Container ( näyttö: grid; /* Määritä ruudukkomme sarakkeiden koko ja lukumäärä. fr-yksikkö toimii kuten Flexbox: sarakkeet jakavat rivillä olevan tilan arvojensa mukaan. Meillä on kaksi saraketta - ensimmäinen on kolminkertainen toisen */ grid-template -sarakkeen koko: 3fr 1fr /* Yhdistä aiemmin tehdyt alueet ruudukon toiseen riviin sivupalkki */ grid-template-areas: "header header" pääsivupalkki" "alatunnisteen alatunniste"; /* Ruudukon solujen välinen etäisyys on 60 pikseliä */ grid-gap: 60px; )

Siinä kaikki! Asettelumme noudattaa nyt yllä olevaa rakennetta ja olemme määrittäneet sen niin, että meidän ei tarvitse käsitellä marginaaleja tai pehmusteita.

Testi 2. Tee sivusta responsiivinen

Flexbox ratkaisu

Tämä vaihe liittyy tiukasti edelliseen. Flexbox-ratkaisussa meidän on muutettava flex-suuntaa ja säädettävä marginaalia.

@media (max-width: 600px) ( .main-and-sidebar-wrapper ( flex-direction: sarake; ) .main ( margin-right: 0; margin-bottom: 60px; ) )

Sivumme on melko yksinkertainen, joten mediakyselyssä ei ole paljon työtä, mutta monimutkaisempi ulkoasu vaatisi paljon uudelleenkäsittelyä.

CSS Grid -ratkaisu

Koska olemme jo määrittäneet ruudukkoalueet , meidän on vain määritettävä niiden järjestys uudelleen mediakyselyssä. Voimme käyttää samaa kaiutinasetusta.

@media (max-width: 600px) ( .container ( /* Tasaa mobiiliasettelun ruudukkoalueet */ grid-template-areas: "header header" "main main" "sivupalkin sivupalkki" "alatunnisteen alatunniste"; ) )

Tai voimme määrittää koko asettelun uudelleen tyhjästä, jos tämä ratkaisu on mielestämme puhtaampi.

@media (max-width: 600px) ( .container ( /* Muunna ruudukko yhden sarakkeen asetteluksi */ grid-template-columns: 1fr; grid-template-areas: "header" "main" "sivupalkki" " alatunniste"; ) )

Testi 3: Otsikkokomponenttien kohdistaminen

Flexbox ratkaisu

Olemme jo tehneet samanlaisen asettelun Flexboxin kanssa yhdessä vanhoista artikkeleistamme -. Tekniikka on melko yksinkertainen:

Otsikko ( näyttö: flex; tasaus-sisältö: välilyönti; )

Navigointiluettelo ja -painike on nyt kohdistettu oikein. Jäljelle jää vain tavaroiden sijoittaminen sisään