Atribuut CSS aspect-ratio
võimaldab teil luua kaste, mis säilitavad proportsionaalsed mõõtmed, kus kasti height
ja width
kasti arvutatakse automaatselt suhtena. See on väike matemaatika-y, kuid idee on see, et saate sellel omadusel jagada ühe väärtuse teisega ja arvutatud väärtus tagab, et kast jääb sellesse proportsiooni.
.element ( aspect-ratio: 2 / 1; /* ↔️ is double the ↕️ */ ) .element ( aspect-ratio: 1 / 1; /* ⏹ a perfect square */ )
aspect-ratio
on määratletud CSS-i kasti suuruse mooduli 4. taseme spetsifikatsioonis, mis on praegu tööprojektis. See tähendab, et see on veel pooleli ja sellel on võimalus muutuda. Kuid kuna Chrome ja Firefox toetavad seda eksperimentaalse lipu taga ning Safari Technology Preview lisab sellele toe 2021. aasta alguses, on tugevaid signaale, mis aspect-ratio
saavad palju hoogu.
Süntaks
aspect-ratio: auto || ;
Selges inglise keeles: aspect-ratio
eeldatakse, et see auto
on vaikimisi, või aktsepteerib väärtusena a väärtust kus
.
- Algne väärtus:
auto
- Kehtib kõigi elementide kohta, välja arvatud tekstikastid ja sisemised rubiini- või lauakastid
- Päritud: ei
- Protsendid: n / a
- Arvutatud väärtus: määratud märksõna või paaripaar
- Animatsiooni tüüp: diskreetne
Väärtused
/* Keyword values */ aspect-ratio: auto; /* default */ /* Ratio values */ aspect-ratio: 1 / 1; /* width and height are equal proportion */ aspect-ratio: 2 / 1; /* width is twice the height*/ aspect-ratio: 1 / 2; /* width is half the height */ aspect-ratio: 16 / 9 /* typical video aspect ratio */ /* Global values */ aspect-ratio: inherit; aspect-ratio: initial; aspect-ratio: unset;
See töötab asendatud ja asendamata sisul
Kui mõtlete: "Uhm, jah, kas brauser ei tee seda juba meie jaoks piltidel?" vastus on: absoluutselt . Brauserid teevad väljamõeldud kuvasuhte arvutusi asendatud sisu, näiteks piltide jaoks. Nii et kui pildi laius on näiteks 500 pikslit, paindub brauser CSS-i paigutusalgoritme, et säilitada pildi sisemised või „loomulikud” mõõtmed. aspect-ratio
Vara saab tõhusalt alistavad looduslikud mõõtmed.
Kuid asendamata sisul pole loomulikku proportsiooni. See on enamik asju, millega me töötame, näiteks divs. Selle asemel, et püüda säilitada elemendi loomulikke proportsioone, aspect-ratio
määrab „eelistatud” suuruse.
Nüüd märgib spetsifikatsioon, et vanemad CSS-i spetsifikatsioonid, eriti CSS 2.1, ei sisalda selget vahet asendatud ja asendamata sisu vahel. See tähendab, et võiksime nende täpsustamiseks lisada spetsifikatsioonile veel mõned erijuhtumid. Praegu näeme, et brauserid toetavad eelistatud kuvasuhete seadmist asendatud ja asendamata eraldi, kus mõned varajase toega eksperimentaalse lipu taga olevad brauserid võivad toetada ainult aspect-ratio
asendamata sisu. Kindlasti tasub brauseri toel silma peal hoida, kui see areneb.
See töötab iseenesest ilma, et täpsustaksite width
võiheight
Nii, jah, me võime selle lihtsalt sellisele elemendile visata:
.element ( aspect-ratio: 16 / 9; )
... ja elemendi vaikimisi width: auto
paneb vaikimisi sisse elemendi mõõtmete määramine.

See muutub samal elemendil width
või height
samal ajal
Oletame meil elemendi laius 300px
ja aspect-ratio
on 3/1
.
.element ( aspect-ratio: 3 / 1; width: 300px; )
Oma olemuselt aspect-ratio
soovib ta elemendi mõõtmed ise arvutada ja teeb seda lähtuvalt kontekstist, kus seda kasutatakse. Kui see sisse width
visatakse, käsib see kuvasuhtega arvutada elemendi kuvasuhte kasti 300px
laiusena. Selle tulemusena on justkui just kirjutatud:
.element ( height: 100px; width: 300px; )
See on mõistlik! Pidage meeles, et kui pole width
või height
pole määratud, eeldab brauser, et need on auto
ja lähevad sealt edasi. Kui pakume selgesõnalisi width
ja height
väärtusi, siis harjuvad just need.
Mõnes olukorras seda ignoreeritakse
See on koht, kus asjad muutuvad veidi mõistlikuks, sest on juhtumeid, kus aspect-ratio
see jäetakse tähelepanuta või mõjutavad selle arvutusi muud omadused. See hõlmab järgmist:
Kui nii width
ja height
deklareeritakse element
Nägime just, kuidas kummagi width
või height
edasi ja elemendi deklareerimine mõjutab väärtuse arvutamist aspect-ratio
. Kuid kui elemendil on juba nii a width
kui ka height
, siis harjuvad need selle asemel aspect-ratio
. Alistamiseks on vaja mõlemat omadust aspect-ratio
; Kummagi height
või width
üksinda määramine ei riku elemendi kuvasuhet.

aspect-ratio
ignoreeritakse nii width
ja height
on seatud sama element.
Teeb senese, eks? Kui kasutate kas width
või height
sunnib aspect-ratio
seda väärtust kasutada arvutamisel, siis loogiliselt järeldub, et kasutades nii oleks täiesti alistada aspect-ratio
üldse, sest mõlemad väärtused on juba antud ja seatud.
Kui sisu suhtest välja murdub
Lihtsamalt öeldes, kui teil on kuvasuhtega element ja sisu on nii pikk, et sunnib elementi laienema, siis element laieneb. Ja kui element laieneb, muutuvad selle mõõtmed ja seega enam kuvasuhet. Seetõttu ütleb spetsifikatsioon, et atribuut määrab „eelistatud” kuvasuhte. See on eelistatud, kuid pole ette nähtud.
Kas sulle ei meeldi, kuidas see töötab? min-height: 0;
Elemendi seadistamine võimaldab sisul laiendamise asemel eelistatud kuvasuhet üle voolata.

Kui see "kaotab" min-*
ja max-*
omadused
Me lihtsalt nägime, kuidas see töötab, eks? Kui sisu ületab kasti mõõtmeid, aspect-ratio
on see tegelikult kadunud, kuna kast laieneb koos sisuga. Saame selle tühistada min-width: 0
.
Selle põhjuseks on see, et kõik omadused min-*
ja max-*
omadused võitlevad tavaliselt Box Model'i arvutuste sõjas width
ja height
ülemvõimu eest. Näiteks:
.element ( min-width: 500px; /* ? Winner! */ width: 100px; )
Aga:
.element ( min-width: 500px; width: 700px; /* ? Winner! */ )
Selle põhjuseks min-width
on see, et see takistab width
teatud väärtusest madalamale jõudmist või seda ignoreeritakse, sest width
element on juba seadnud elemendi minimaalsest laiusest kaugemale, kui see peab olema. Sama asi kehtib ka min-height
, max-width
ja max-height
.
Kõige selle mõte: kui seame mõlemad elemendi min-*
või max-*
omaduse samale elemendile aspect-ratio
ja nad „võidavad“ width
või height
, siis need alistavad aspect-ratio
. Ütlesin teile, et see oli natuke meeltmööda. ?
Brauseri tugi
IE | Edge | Firefox | Chrome | Safari | Ooper |
---|---|---|---|---|---|
Ei | Ei | 86 1.2,3 | 90 4 | TP 5 | Ei |
Android Chrome | Android Firefox | Androidi brauser | iOS-i Safari | Opera Mobile |
---|---|---|---|---|
Ei | Ei | Ei | Ei | Ei |
1 Saab lubada, seadistades
layout.css.aspect-ratio.enabled
väärtusele true
.2 Firefox 81. sisse viidud plokkide ja asendatud elementide tugi .
3 Firefox 83-s sisse viidud paindlike üksuste tugi.
4 Saab lubada,
#enable-experimental-web-platform-features
lubades suvandi Enabled.5 Saadaval Safari Technology eelvaates 118.
Rohkem informatsiooni
Artikkel 1. juulist 2020Esimene vaade kuvasuhtele












