Suomi

Tutustu CSS:n container-kyselyiden tehokkuuteen ja luo niiden avulla responsiivisia ja mukautuvia asetteluita, jotka reagoivat säiliönsä kokoon.

Modernit CSS-asettelut: Syväsukellus container-kyselyihin

Vuosien ajan mediakyselyt ovat olleet responsiivisen verkkosuunnittelun kulmakivi. Ne mahdollistavat asettelujemme mukauttamisen näkymän koon perusteella. Mediakyselyt toimivat kuitenkin selaimen ikkunan mittojen mukaan, mikä voi joskus johtaa hankaliin tilanteisiin, erityisesti kun käsitellään uudelleenkäytettäviä komponentteja. Tässä astuvat kuvaan Container-kyselyt – mullistava CSS-ominaisuus, joka antaa komponenttien mukautua niiden sisältävän elementin koon, ei koko näkymän, perusteella.

Mitä ovat container-kyselyt?

Container-kyselyt, joita useimmat modernit selaimet virallisesti tukevat, tarjoavat yksityiskohtaisemman ja komponenttikeskeisemmän lähestymistavan responsiiviseen suunnitteluun. Ne antavat yksittäisille komponenteille mahdollisuuden säätää ulkoasuaan ja toimintaansa niiden vanhempi-säiliön mittojen perusteella, riippumatta näkymän koosta. Tämä mahdollistaa suuremman joustavuuden ja uudelleenkäytettävyyden, erityisesti monimutkaisten asetteluiden ja design-järjestelmien kanssa työskennellessä.

Kuvittele korttikomponentti, jonka on näytettävä erilaiselta riippuen siitä, onko se sijoitettu kapeaan sivupalkkiin vai leveään pääsisältöalueeseen. Mediakyselyiden avulla sinun pitäisi luottaa näkymän kokoon ja mahdollisesti kopioida CSS-sääntöjä. Container-kyselyiden avulla korttikomponentti voi älykkäästi mukautua sen säiliössä käytettävissä olevan tilan perusteella.

Miksi käyttää container-kyselyitä?

Tässä on erittely container-kyselyiden käytön tärkeimmistä eduista:

Container-kyselyiden käytön aloittaminen

Container-kyselyiden käyttöön liittyy muutama keskeinen vaihe:

  1. Säiliön määrittely: Määritä elementti säiliöksi käyttämällä `container-type`-ominaisuutta. Tämä luo rajat, joiden sisällä kysely toimii.
  2. Kyselyn määrittely: Määrittele kyselyn ehdot käyttämällä `@container`-sääntöä. Tämä on samanlainen kuin `@media`, mutta näkymän ominaisuuksien sijaan kysyt säiliön ominaisuuksia.
  3. Tyylien soveltaminen: Sovella tyylejä, jotka tulee ottaa käyttöön, kun kyselyn ehdot täyttyvät. Nämä tyylit vaikuttavat vain säiliön sisällä oleviin elementteihin.

1. Säiliön määrittäminen

Ensimmäinen vaihe on määrittää, mikä elementti toimii säiliönä. Voit käyttää tähän `container-type`-ominaisuutta. Sillä on useita mahdollisia arvoja:

Tässä on esimerkki:


.card-container {
  container-type: inline-size;
}

Tässä esimerkissä `.card-container`-elementti on määritetty säiliöksi, joka seuraa sen inline-kokoa (leveyttä).

2. Container-kyselyn määrittäminen

Seuraavaksi määrität itse kyselyn käyttämällä `@container`-sääntöä. Tässä määritellään ehdot, joiden on täytyttävä, jotta kyselyn sisällä olevat tyylit otetaan käyttöön.

Tässä on yksinkertainen esimerkki, joka tarkistaa, onko säiliö vähintään 500 pikseliä leveä:


@container (min-width: 500px) {
  .card {
    flex-direction: row; /* Muuta kortin asettelua */
  }
}

Tässä esimerkissä, jos `.card-container`-elementti on vähintään 500 pikseliä leveä, `.card`-elementin `flex-direction`-arvoksi asetetaan `row`.

Voit myös käyttää `max-width`, `min-height`, `max-height` ja jopa yhdistää useita ehtoja käyttämällä loogisia operaattoreita kuten `and` ja `or`.


@container (min-width: 300px) and (max-width: 700px) {
  .card-title {
    font-size: 1.2em;
  }
}

Tämä esimerkki soveltaa tyylejä vain, kun säiliön leveys on 300px ja 700px välillä.

3. Tyylien soveltaminen

`@container`-säännön sisällä voit soveltaa mitä tahansa CSS-tyylejä säiliön sisällä oleviin elementteihin. Nämä tyylit otetaan käyttöön vain, kun kyselyn ehdot täyttyvät.

Tässä on täydellinen esimerkki, joka yhdistää kaikki vaiheet:


Tuotteen otsikko

Lyhyt kuvaus tuotteesta.

Lue lisää

.card-container {
  container-type: inline-size;
  border: 1px solid #ccc;
  padding: 1em;
}

.card {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.card-title {
  font-size: 1.5em;
  margin-bottom: 0.5em;
}

.card-button {
  background-color: #007bff;
  color: white;
  padding: 0.5em 1em;
  text-decoration: none;
  border-radius: 5px;
}

@container (min-width: 500px) {
  .card {
    flex-direction: row;
    align-items: flex-start;
  }

  .card-title {
    font-size: 1.8em;
  }
}

Tässä esimerkissä, kun `.card-container` on vähintään 500 pikseliä leveä, `.card`-elementti vaihtaa vaaka-asetteluun ja `.card-title` kasvaa kooltaan.

Säiliöiden nimet

Voit antaa säiliöille nimen käyttämällä `container-name: my-card;`. Tämä antaa sinun olla tarkempi kyselyissäsi, varsinkin jos sinulla on sisäkkäisiä säiliöitä.

.card-container {
  container-type: inline-size;
  container-name: my-card;
}

@container my-card (min-width: 500px) {
  /* Tyylit, joita sovelletaan, kun "my-card"-niminen säiliö on vähintään 500px leveä */
}

Tämä on erityisen hyödyllistä, kun sivulla on useita säiliöitä ja haluat kohdistaa kyselysi tiettyyn niistä.

Container-kysely-yksiköt

Aivan kuten mediakyselyillä, myös container-kyselyillä on omat yksikkönsä, jotka ovat suhteessa säiliöön. Nämä ovat:

Nämä yksiköt ovat hyödyllisiä määritettäessä kokoja ja välejä, jotka ovat suhteessa säiliöön, mikä lisää entisestään asettelujesi joustavuutta.


.element {
  width: 50cqw;
  font-size: 2cqmin;
}

Käytännön esimerkkejä ja käyttötapauksia

Tässä on joitakin todellisen maailman esimerkkejä siitä, kuinka voit käyttää container-kyselyitä luodaksesi mukautuvampia ja uudelleenkäytettävämpiä komponentteja:

1. Responsiivinen navigointivalikko

Navigointivalikko voi mukauttaa asetteluaan sen säiliössä käytettävissä olevan tilan perusteella. Kapeassa säiliössä se voi kutistua hampurilaisvalikoksi, kun taas leveämmässä säiliössä se voi näyttää kaikki valikon kohteet vaakasuunnassa.

2. Mukautuva tuotelistaus

Verkkokaupan tuotelistaus voi säätää rivillä näytettävien tuotteiden määrää säiliönsä leveyden perusteella. Leveämmässä säiliössä se voi näyttää enemmän tuotteita rivillä, kun taas kapeammassa säiliössä se voi näyttää vähemmän tuotteita tilanahtauden välttämiseksi.

3. Joustava artikkelikortti

Artikkelikortti voi muuttaa asetteluaan käytettävissä olevan tilan mukaan. Sivupalkissa se voi näyttää pienen pikkukuvan ja lyhyen kuvauksen, kun taas pääsisältöalueella se voi näyttää suuremman kuvan ja yksityiskohtaisemman yhteenvedon.

4. Dynaamiset lomake-elementit

Lomake-elementit voivat mukauttaa kokoaan ja asetteluaan säiliön perusteella. Esimerkiksi hakupalkki voi olla leveämpi verkkosivuston ylätunnisteessa ja kapeampi sivupalkissa.

5. Kojelaudan widgetit

Kojelaudan widgetit voivat säätää sisältöään ja esitystapaansa säiliönsä koon mukaan. Kaaviowidget voi näyttää enemmän datapisteitä suuremmassa säiliössä ja vähemmän datapisteitä pienemmässä säiliössä.

Maailmanlaajuiset huomiot

Kun käytät container-kyselyitä, on tärkeää ottaa huomioon suunnitteluvalintojesi maailmanlaajuiset vaikutukset.

Selainten tuki ja polyfillit

Container-kyselyillä on hyvä tuki moderneissa selaimissa, mukaan lukien Chrome, Firefox, Safari ja Edge. Jos sinun kuitenkin tarvitsee tukea vanhempia selaimia, voit käyttää polyfilliä, kuten @container-style/container-query. Tämä polyfill lisää tuen container-kyselyille selaimiin, jotka eivät tue niitä natiivisti.

Ennen container-kyselyiden käyttöönottoa tuotantoympäristössä on aina hyvä tarkistaa nykyinen selainten tuki ja harkita tarvittaessa polyfillin käyttöä.

Parhaat käytännöt

Tässä on joitakin parhaita käytäntöjä, jotka kannattaa pitää mielessä työskennellessäsi container-kyselyiden kanssa:

Container-kyselyt vs. mediakyselyt: Vertailu

Vaikka sekä container-kyselyitä että mediakyselyitä käytetään responsiiviseen suunnitteluun, ne toimivat eri periaatteilla ja sopivat parhaiten erilaisiin tilanteisiin.

Ominaisuus Container-kyselyt Mediakyselyt
Kohde Säiliön koko Näkymän koko
Laajuus Komponenttitaso Globaali
Uudelleenkäytettävyys Korkea Matalampi
Spesifisyys Tarkempi Yleisempi
Käyttötapaukset Yksittäisten komponenttien mukauttaminen niiden kontekstiin Kokonaisasettelun mukauttaminen eri näyttökokoihin

Yleisesti ottaen container-kyselyt soveltuvat paremmin yksittäisten komponenttien mukauttamiseen niiden kontekstiin, kun taas mediakyselyt soveltuvat paremmin kokonaisasettelun mukauttamiseen eri näyttökokoihin. Voit jopa yhdistää molempia monimutkaisempia asetteluita varten.

CSS-asetteluiden tulevaisuus

Container-kyselyt edustavat merkittävää edistysaskelta CSS-asetteluiden kehityksessä. Antamalla komponenteille mahdollisuuden mukautua säiliönsä perusteella ne mahdollistavat joustavamman, uudelleenkäytettävämmän ja ylläpidettävämmän koodin. Selainten tuen jatkaessa parantumistaan container-kyselyistä on tulossa olennainen työkalu front-end-kehittäjille.

Yhteenveto

Container-kyselyt ovat tehokas lisä CSS-maisemaan, tarjoten komponenttikeskeisemmän lähestymistavan responsiiviseen suunnitteluun. Ymmärtämällä, miten ne toimivat ja miten niitä käytetään tehokkaasti, voit luoda mukautuvampia, uudelleenkäytettävämpiä ja ylläpidettävämpiä verkkosovelluksia. Ota container-kyselyt haltuun ja avaa uusi joustavuuden taso CSS-asetteluissasi!