# 09: Dobivalci in namestitelji - CSS-triki

Anonim

Koncept getterjev in setterjev v JavaScript je le ena izmed stvari, ki bi jih morali razumeti. V jQueryju so lepi, ker je API tako skladen, da ko ga enkrat dobite, lahko ugibate, kako bo deloval za različne metode. Na najosnovnejši ravni ...

Monterji nekaj naredijo .
Pridobivalci vrnejo vrednost .

Pogosto je mogoče uporabiti eno samo metodo. Za primer vzemimo metodo višine.

// Used as a "setter" - will set the height $("#example").height(100); // Used as a "getter" - will return a value var theHeight = $("#example").height();

Vidiš razliko? Nastavitelj posreduje parameter, ko je uporabljena metoda. Pridobivalec ničesar ne prenese . Tako jQuery sam ve, kaj storiti. Preizkusi samo, ali obstaja kakšen parameter ali ne. Če ne, se obnaša kot pridobivalec. Če je tam, se obnaša kot postavljalec. To je zgolj prijetno priročnost API-ja, namesto da bi imeli ločene metode, kot sta getHeight in setHeight.

Omeniti velja, da uporabnik, ki ga uporablja sam po sebi, ne naredi ničesar.

// Useless $("#example").height();

In če nastavite vrednost spremenljivke z nastaviteljem, boste dobili vrnjen objekt jQuery.

// x will be a jQuery object containing #example var x = $("#example").height(100);

To je lahko za lase zmedeno, a tudi čudovit majhen trik za shranjevanje kode. Če veste, da morate ta objekt jQuery predpomniti in nastaviti njegovo višino, lahko to storite tudi v eni vrstici kode.

Oglejte si Pen 8ff68485673396d452f650bfb437fb2a Chrisa Coyierja (@chriscoyier) na CodePen

V članku je omenjeno tudi box-sizing: border-box;. Velikost škatel je izjemno uporabna lastnost CSS. Sem velik zagovornik tega, da ga nastavim na vse elemente, kot so:

* ( box-sizing: border-box; )

Kot je zapisano v videoposnetku, je to tudi height()v jQuery nekoliko bolj predvidljivo in dosledno. Brez nabora okvirjev height()je enako lastnosti višine v CSS ali katere koli višine, ki jo element naravno ima, minus oblazinjenje in obroba. Pri border-boxnastavitvi height()je natančno, koliko višine zavzame element na zaslonu, vključno z oblazinjenjem in obrobo. Brez border-boxnastavitve morate to uporabiti outerHeight()v jQueryju.