Raksta nosaukums
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
Izpētiet CSS konteineru vaicājumus, nākamo evolūciju adaptīvajā dizainā. Uzziniet, kā izveidot pielāgojamus komponentus, pamatojoties uz konteinera izmēru, ne tikai skata laukuma izmēru.
Adaptīvais dizains ir bijis tīmekļa izstrādes stūrakmens vairāk nekā desmit gadus. Tradicionāli mēs esam paļāvušies uz mediju vaicājumiem, lai pielāgotu mūsu izkārtojumus, pamatojoties uz skata laukuma izmēru. Tomēr šī pieeja dažreiz var šķist ierobežojoša, īpaši, strādājot ar sarežģītiem, uz komponentiem balstītiem dizainiem. Iepazīstinām ar CSS konteineru vaicājumiem – jaudīgu jaunu funkciju, kas ļauj komponentiem pielāgoties, pamatojoties uz to saturošā elementa izmēru, ne tikai skata laukumu.
Konteineru vaicājumi ir spēles noteikumu mainītājs, jo tie nodrošina uz elementiem balstītu adaptīvo dizainu. Tā vietā, lai jautātu "Kāds ir ekrāna izmērs?", jūs varat jautāt "Cik daudz vietas ir pieejams šim komponentam?" Tas paver iespēju pasauli, lai izveidotu patiesi atkārtoti izmantojamus un pielāgojamus komponentus.
Padomājiet par kartītes komponentu, kas varētu parādīties dažādos kontekstos: šaurā sānjoslā, platā varoņa sadaļā vai daudzkolonnu režģī. Izmantojot mediju vaicājumus, jums būtu jāraksta īpaši noteikumi katram no šiem scenārijiem, pamatojoties uz skata laukuma platumu. Izmantojot konteineru vaicājumus, kartīte var inteliģenti pielāgot savu izkārtojumu un stilu, pamatojoties uz tās vecākā konteinera izmēriem, neatkarīgi no kopējā ekrāna izmēra.
Konteineru vaicājumi piedāvā vairākas galvenās priekšrocības salīdzinājumā ar tradicionālajiem mediju vaicājumiem:
Iedziļināsimies konteineru vaicājumu praktiskajos aspektos. Pirmais solis ir deklarēt konteineru. To var izdarīt, izmantojot container-type rekvizītu vecākajā elementā:
container-type rekvizīts pieņem vairākas vērtības:
size: Konteineru vaicājumi reaģēs gan uz konteinera iekšējiem, gan bloku izmēriem.inline-size: Konteineru vaicājumi reaģēs tikai uz konteinera iekšējo (platumu horizontālajos rakstīšanas režīmos) izmēru. Šī ir visizplatītākā un bieži vien visnoderīgākā opcija.block-size: Konteineru vaicājumi reaģēs tikai uz konteinera bloku (augstumu horizontālajos rakstīšanas režīmos) izmēru.normal: Elements nav vaicājuma konteiners. Šī ir noklusējuma vērtība.style: Konteineru vaicājumi reaģēs uz stila vaicājumiem un konteinera nosaukumu vaicājumiem (par tiem tiks runāts vēlāk), ļaujot vaicāt pielāgotos rekvizītus, kas iestatīti uz konteinera.Šeit ir piemērs, kā definēt konteineru, kas reaģē uz tā iekšējo izmēru:
.card-container {
container-type: inline-size;
}
Varat arī izmantot saīsināto container rekvizītu, lai norādītu gan container-type, gan container-name (par ko mēs runāsim vēlāk) vienā deklarācijā:
.card-container {
container: card / inline-size;
}
Šajā gadījumā 'card' ir konteinera nosaukums.
Kad esat definējis konteineru, varat izmantot @container at-rule, lai rakstītu savus vaicājumus. Sintakse ir līdzīga mediju vaicājumiem, bet tā vietā, lai mērķētu uz skata laukuma izmēriem, jūs mērķējat uz konteinera izmēriem:
@container card (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
}
.card__content {
width: 50%;
}
}
Šajā piemērā mēs mērķējam uz "card" konteineru un piemērojam stilus .card, .card__image un .card__content elementiem, kad konteinera platums ir vismaz 400px. Ievērojiet `card` pirms `(min-width: 400px)`. Tas ir ļoti svarīgi, ja esat nosaucis savu konteineru, izmantojot `container-name` vai saīsināto `container` rekvizītu.
Ja neesat nosaucis savu konteineru, varat izlaist konteinera nosaukumu:
@container (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
}
.card__content {
width: 50%;
}
}
Varat izmantot to pašu mediju funkciju klāstu, kas ir pieejamas mediju vaicājumos, piemēram, min-width, max-width, min-height, max-height un orientation.
Konteineru nosaukšana var būt noderīga, īpaši, strādājot ar ligzdotiem konteineriem vai sarežģītiem izkārtojumiem. Varat piešķirt nosaukumu konteineram, izmantojot container-name rekvizītu:
.card-container {
container-name: card;
container-type: inline-size;
}
Pēc tam konteineru vaicājumos varat mērķēt uz konteineru pēc tā nosaukuma:
@container card (min-width: 400px) {
/* Stili 'card' konteineram */
}
Konteineru stila vaicājumi ļauj reaģēt uz jūsu konteinera stilu, nevis tā izmēru. Tas ir īpaši spēcīgi, ja to apvieno ar pielāgotiem rekvizītiem. Vispirms jums ir jādefinē savs konteiners ar container-type: style:
.component-container {
container-type: style;
}
Pēc tam varat izmantot @container style(--theme: dark), lai vaicātu pielāgotā rekvizīta --theme vērtību:
.component-container {
--theme: light;
}
@container style(--theme: dark) {
.component {
background-color: black;
color: white;
}
}
Tas ļauj jūsu komponentiem pielāgoties, pamatojoties uz konfigurāciju, kas ir iestatīta, izmantojot CSS, nevis skata laukuma izmēru. Tas paver lieliskas iespējas dizainam un dinamiskam stilam.
Iedomājieties kartītes komponentu, kas parāda informāciju par produktu. Šaurā konteinerā mēs, iespējams, vēlēsimies sakraut attēlu un saturu vertikāli. Platākā konteinerā mēs varam tos parādīt blakus.
HTML:
CSS:
.card-container {
container-type: inline-size;
}
.card {
display: flex;
flex-direction: column;
border: 1px solid #ccc;
padding: 16px;
}
.card__image {
width: 100%;
margin-bottom: 16px;
}
.card__content {
width: 100%;
}
@container (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
margin-bottom: 0;
}
.card__content {
width: 50%;
}
}
Šajā piemērā kartīte sākotnēji parādīs attēlu un saturu, kas sakrauts vertikāli. Kad konteinera platums sasniedz 400px, kartīte pārslēgsies uz horizontālu izkārtojumu.
Apsveriet navigācijas izvēlni, kas jāpielāgo, pamatojoties uz pieejamo vietu. Šaurā konteinerā (piemēram, mobilajā sānjoslā) mēs, iespējams, vēlēsimies parādīt izvēlnes vienumus vertikālā sarakstā. Platākā konteinerā (piemēram, darbvirsmas galvenē) mēs varam tos parādīt horizontāli.
HTML:
CSS:
.nav-container {
container-type: inline-size;
}
.nav {
list-style: none;
padding: 0;
margin: 0;
}
.nav__item {
margin-bottom: 8px;
}
.nav__item a {
display: block;
padding: 8px 16px;
text-decoration: none;
color: #333;
}
@container (min-width: 600px) {
.nav {
display: flex;
}
.nav__item {
margin-right: 16px;
margin-bottom: 0;
}
.nav__item a {
display: inline-block;
}
}
Šajā piemērā navigācijas izvēlne sākotnēji parādīs vienumus vertikālā sarakstā. Kad konteinera platums sasniedz 600px, izvēlne pārslēgsies uz horizontālu izkārtojumu.
Iedomājieties raksta izkārtojumu, kas jāpielāgo atkarībā no tā, kur tas ir novietots. Ja nelielā priekšskatījuma sadaļā, attēlam jābūt virs teksta. Ja tas ir galvenais raksts, attēls var būt sānos.
HTML
Raksta nosaukums
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
CSS
.article-container {
container-type: inline-size;
}
.article {
display: flex;
flex-direction: column;
}
.article-image {
width: 100%;
margin-bottom: 10px;
}
.article-content {
width: 100%;
}
@container (min-width: 768px) {
.article {
flex-direction: row;
}
.article-image {
width: 40%;
margin-right: 20px;
margin-bottom: 0;
}
.article-content {
width: 60%;
}
}
Konteineru vaicājumu pārlūkprogrammas atbalsts tagad ir lielisks visās modernajās pārlūkprogrammās, tostarp Chrome, Firefox, Safari un Edge. Ir svarīgi pārbaudīt Can I Use, lai iegūtu jaunāko informāciju par pārlūkprogrammas atbalstu, jo funkcijas un ieviešanas detaļas var mainīties.
Lai gan konteineru vaicājumi piedāvā jaudīgu alternatīvu mediju vaicājumiem, ir svarīgi saprast, kad katra pieeja ir vispiemērotākā.
Daudzos gadījumos jūs, visticamāk, izmantosiet gan mediju vaicājumu, gan konteineru vaicājumu kombināciju. Izmantojiet mediju vaicājumus, lai izveidotu savas lietojumprogrammas kopējo izkārtojumu, un pēc tam izmantojiet konteineru vaicājumus, lai precīzi noregulētu atsevišķu komponentu izskatu un uzvedību šajā izkārtojumā.
CSS konteineru vaicājumi ir nozīmīgs solis uz priekšu adaptīvā dizaina evolūcijā. Nodrošinot uz elementiem balstītu reaģētspēju, tie ļauj izstrādātājiem izveidot elastīgākus, atkārtoti izmantojamus un uzturamākus komponentus. Tā kā pārlūkprogrammas atbalsts turpina uzlaboties, konteineru vaicājumi ir gatavi kļūt par būtisku rīku katra tīmekļa izstrādātāja arsenālā.
Ieviešot konteineru vaicājumus globālai auditorijai, ņemiet vērā šo:
inline-start un inline-end fizisku rekvizītu, piemēram, left un right vietā.em, rem), lai nodrošinātu, ka teksts tiek atbilstoši mērogots.CSS konteineru vaicājumi ir jaudīgs rīks patiesi adaptīvu un pielāgojamu tīmekļa lietojumprogrammu izveidei. Pieņemot uz elementiem balstītu adaptīvo dizainu, varat izveidot komponentus, kas nemanāmi pielāgojas dažādiem kontekstiem, vienkāršot savu kodu un uzlabot kopējo lietotāja pieredzi. Tā kā pārlūkprogrammas atbalsts turpina pieaugt, konteineru vaicājumi ir gatavi kļūt par mūsdienu tīmekļa izstrādes neatņemamu sastāvdaļu. Izmantojiet šo tehnoloģiju, eksperimentējiet ar tās iespējām un atbloķējiet jaunu elastības līmeni savos adaptīvajos dizainos. Šī pieeja nodrošina labāku komponentu atkārtotu izmantošanu, uzturamību un intuitīvāku dizaina procesu, padarot to par nenovērtējamu priekšrocību priekšgala izstrādātājiem visā pasaulē. Pāreja uz konteineru vaicājumiem veicina uz komponentiem vērstu pieeju dizainam, kā rezultātā tiek nodrošināta robustāka un pielāgojamāka tīmekļa pieredze lietotājiem visā pasaulē.