Zamiki in robovi v html. Robovi in ​​oblazinjenje CSS: razlike med lastnostmi robov in oblazinjenja. Stare metode poravnave

V prejšnjem poglavju smo jih omenili Lastnosti CSS, kot sta rob (polje) in odmik (zamik). Zdaj si jih bomo podrobneje ogledali in razmislili, kako se med seboj razlikujejo in kakšne lastnosti imajo.

Presledke med elementi lahko ustvarite na tak ali drugačen način, a če je padding zamik od vsebine do roba bloka, potem je rob razdalja od enega bloka do drugega, medblokovni prostor. Posnetek zaslona prikazuje jasen primer:

Oblazinjenje ločuje vsebino od roba bloka, rob pa ustvarja vrzeli med bloki

Kot lahko vidite, se robovi in ​​oblazinjenje CSS med seboj razlikujejo, čeprav včasih brez pogleda kode ni mogoče ugotoviti, katera lastnost se uporablja za nastavitev razdalje. To se zgodi, če manjka okvir ali ozadje bloka vsebine.

Obstajajo naslednje lastnosti za nastavitev robov ali oblazinjenja v CSS na vsaki strani elementa:

Oblazinjenje:

  • oblazinjenje: pomen;
  • oblazinjenje-desno: pomen;
  • oblazinjenje-dno: pomen;
  • padding-left: pomen;

Polja:

  • rob zgoraj: pomen;
  • rob-desno: pomen;
  • margin-bottom: pomen;
  • rob-levo: pomen;

Vrednosti se lahko določijo v poljubnih enotah CSS - px, em, % itd. Primer: margin-top: 15px .

Obstaja tudi zelo priročna stvar, kot je okrajšava za rob in oblazinjenje CSS. Če morate nastaviti robove ali oblazinjenje na vseh štirih straneh elementa, vam ni treba pisati lastnosti za vsako stran posebej. Vse je poenostavljeno: za rob in oblazinjenje lahko določite 1, 2, 3 ali 4 vrednosti hkrati. Število vrednosti določa, kako so nastavitve porazdeljene:

  • 4 vrednosti: oblazinjenje je nastavljeno za vse strani elementa v naslednjem zaporedju: zgoraj, desno, spodaj, levo: oblazinjenje: 2px 4px 5px 10px;
  • 3 vrednosti: oblazinjenje se nastavi najprej za zgornjo stran, nato hkrati za levo in desno ter nato za dno: oblazinjenje: 3px 6px 9px;
  • 2 vrednosti: oblazinjenje se nastavi najprej istočasno z zgornje in spodnje strani, nato pa hkrati še levo in desno: oblazinjenje: 6px 12px;
  • 1 vrednost: enaka dolžina je nastavljena za vse strani elementa: dolžina: 3px;

Ista pravila veljajo za lastnost roba CSS. Upoštevajte, da lahko uporabite tudi negativne vrednosti za rob (na primer -3px), kar je lahko včasih zelo koristno.

Strni rob

Predstavljajte si situacijo: dva elementa bloka se nahajata drug na drugem in imata robna polja. Zgornji blok je nastavljen na rob: 60 slikovnih pik, spodnji blok pa nastavljen na rob: 30 slikovnih pik. Logično bi bilo domnevati, da se bosta mejni polji dveh elementov preprosto dotaknili in posledično bo razmik med bloki enak 90 pikslov.

Vendar pa so stvari drugačne. Pravzaprav se v takšni situaciji pojavi učinek, ki se imenuje kolaps, ko je iz dveh sosednjih polj elementov izbran največji po velikosti. V našem primeru bo končna vrzel med elementi 60 slikovnih pik.


Razdalja med bloki je enaka večji od vrednosti

Strnjeni rob deluje samo za zgornje in spodnje robove elementov in ne velja za robove na desni in levi strani. Končna vrednost vrzeli se v različnih situacijah izračuna različno:

  • Ko sta obe vrednosti marže pozitivni, bo nastala velikost marže enaka večji vrednosti.
  • Če je ena od vrednosti negativna, morate za izračun velikosti polja dobiti vsoto vrednosti. Na primer, z vrednostmi 20px in -18px bo velikost polja:
    20 + (-18) = 20 – 18 = 2 slikovni piki.
  • Če sta obe vrednosti negativni, se primerjata modula teh števil in izbere se število z večjim modulom (torej manjše od negativnih števil). Primer: primerjati morate vrednosti polj -6px in -8px. Modula primerjanih števil sta 6 oziroma 8. Iz tega sledi, da je 6-8. Velikost dobljenega polja je -8 slikovnih pik.
  • V primeru, da so vrednosti navedene v različne enote CSS, se zmanjšajo na eno, nakar se primerjajo in izbere večja vrednost.
  • Velikost roba za podrejene elemente je določena na še bolj zanimiv način: če ima podrejeni element večji rob kot njegov nadrejeni element, ima prednost le-ta. V tem primeru bosta velikosti zgornjega in spodnjega roba nadrejenega elementa enaki tistima, določenima za podrejenega. V tem primeru med staršem in otrokom ne bo razdalje.

Robovi in ​​oblazinjenje so zelo pomembni slogi pri izdelavi strani HTML. Omogočajo vam natančnejše pozicioniranje elementov, ustvarjanje okvirja s potrebnimi režami itd. Oba stila sta si zelo podobna in opravljata podobne funkcije. Vendar še vedno obstajajo razlike.

Elementi so lahko ugnezdeni ali postavljeni drug poleg drugega. Poglejmo si naslednji primer:

Imamo dve mizi, limonasto in modro, ki se nahajata ena pod drugo. Tabele so sestavljene iz ene celice. V prvi celici tabele je rdeč blok. Na tem primeru si poglejmo, kako delujejo robovi in ​​zamiki.

Polja so nastavljena po slogu oblazinjenje. Ta slog velja samo za elemente vsebnika, ki lahko vsebujejo druge elemente. Slog vam omogoča nastavitev roba med robovi elementa in njegovo vsebino. Slog marža omogoča nastavitev zamikov od elementa do najbližjih robov drugega elementa. Obrobe drugega elementa so lahko obrobe nadrejenega vsebnika, pa tudi robovi same strani.

Te sloge lahko nastavite na več načinov. Na primer, neposredno določite velikost vseh robov ali zamikov z enim argumentom v neki merski enoti (px, ex, em, pt, cm in tako naprej):

oblazinjenje: 3px; rob: 3px;

V tem primeru bodo robovi in ​​zamiki enaki na vseh štirih straneh. Pri podajanju dveh argumentov, ločenih s presledkom:

oblazinjenje: 3px 5px; rob: 3px 5px;

prvi bo določil količino robov/zamikov zgoraj in spodaj, drugi pa levo in desno. Ko dobimo tri argumente:

oblazinjenje: 3px 5px 2px; rob: 3px 5px 2px;

prvi je rob/vdolbina na vrhu, drugi je levo in desno, tretji je na dnu. S štirimi argumenti:

oblazinjenje: 3px 5px 2px 6px; rob : 3px 5px 2px 6px ;

prvi je rob/prostor na vrhu, drugi je na desni, tretji je na dnu, četrti je na levi. Zapomniti si ga je enostavno: prvi je od zgoraj, nato v smeri urinega kazalca. Poleg tega lahko ločeno nastavite robove in oblazinjenje za določen rob z uporabo ustreznih slogov: oblazinjenje-top, oblazinjenje-desno, oblazinjenje-dno, oblazinjenje-levo, margin-top, margin-desno, margin-bottom, rob-levo. Vrednost teh slogov je lahko samo en argument, ki določa količino roba/oblazinjenja za določeno stran.

Na sliki je rdeči blok znotraj celice tabele in ob njenih mejah, kar pomeni, da celica nima robov. Nastavimo robove celic s slogom:

oblazinjenje: 5px;

Posledično se bo stran spremenila v naslednje:

Poglejmo zdaj vdolbine. Dve tabeli ležita ena ob drugi, če ju želimo nekoliko odmakniti, lahko uporabimo zamike. Tukaj sta dve možnosti: ali nastavite spodnji zamik prve tabele ali zgornji zamik druge tabele. Uporabimo drugo:

zgornji rob: 5px;

Upoštevajte, da smo zamik nastavili posebej za tabelo in ne za celico tabele, kot je to v primeru polj. Tukaj je rezultat:

Mimogrede, v prvem primeru (vrzel med rdečim blokom in mejami nadrejene celice) bi lahko enak učinek dosegli z nastavitvijo zamikov blokov. Na splošno, če kaj ni jasno, nam to sporočite v komentarjih.

HTML koda testne strani:

<html > <glava > <naslov > Test</naslov> <meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" > </glava> <telo > <slog > tabela (širina: 200 slikovnih pik; višina: 150 slikovnih pik; obroba: 1 slikovnih pik polna #555; strnjena meja: strnjena) td (navpična poravnava: zgoraj; oblazinjenje: 0 slikovnih pik) div (širina: 100 slikovnih pik; višina: 100 slikovnih pik; ozadje: rdeče)</slog> <tabela style = "ozadje: limeta" > <tr > <td style = "padding: 5px" > <div style = "margin: 0px" ></div> </td> </tr> </tabela> <slog tabele = "ozadje: nebesno modro; zgornji rob: 5 slikovnih pik"> <tr > <td ></td> </tr> </tabela> </telo> </html> Oblazinjenje-top

Upam, da ste že seznanjeni s strukturo bloka. Če ne, je predstavljeno spodaj.

Bločna struktura

torej. Verjetno že veste, da so robovi in ​​robovi bloka predstavljeni z lastnostmi oblazinjenja in robov. In v prejšnjem članku smo se že delno dotaknili te teme. Na tej strani si bomo podrobneje ogledali polja ( oblazinjenje) in oblazinjenje ( marža ).

Lastnosti robov in oblazinjenja so si med seboj zelo podobne in opravljajo podobne funkcije, zato jih pogosto zamenjujemo. Seveda pa tega ne smete storiti, saj so robovi in ​​zamiki popolnoma različni stvari. Vendar je to jasno razvidno iz slike, saj ni naključje, da je tukaj prikazano.

torej. Robovi so določeni z lastnostjo oblazinjenja. To so notranje razdalje od meja bloka do njegove vsebine.

Lastnost velja za vse elemente.

Razdalja je določena v dolžinskih enotah CSS, % ali ( privzeto

Lastnost padding je univerzalna, ker nastavi robove od robov elementa do njegove vsebine za vse njegove strani, s čimer združuje lastnosti padding-top, padding-right, padding-bottom in padding-left, ki nastavijo širino robovi za vsak stranski element posebej.

Zamiki se nastavijo z lastnostjo roba, ki določa razdaljo od meja bloka do najbližjih elementov ali do robov okna brskalnika.

Lastnost roba velja tudi za vse elemente.

Oblazinjenje je določeno tudi v dolžinskih enotah CSS, % ali ( privzeto) brskalnik samodejno zazna.

Lastnost roba je univerzalna, saj nastavi količino zamika od robov elementa za vse njegove stranice in tako združuje lastnosti margin-top , margin-right , margin-bottom in margin-left , ki določajo širino zamikov od vsake obrobe elementa posebej.

In še nekaj: vdolbine ( marža) se nahajajo zunaj bloka, robovi ( oblazinjenje) znotraj njega, torej ozadje bloka ali njega slika ozadja velja samo za robove, zamiki pa so vedno prosojni ali imajo ozadje glavnega ( starševski) blok ali ozadje strani.

Delček kode:



; ">

Tabela se nahaja v posodi z rdečo obrobo in modrim ozadjem.


Širina odmika od roba tabele do rdečega roba vsebnika je 10 slikovnih pik.


Celica na levi vsebuje sliko. Robovi od slike do robov celic so 25 slikovnih pik.


Rob desne celice je 10 slikovnih pik!


Zadnja posodobitev: 08.04.2016

Enovrstično besedilno polje je ustvarjeno z uporabo vnosnega elementa, ko je njegov atribut tipa nastavljen na besedilo:

Besedilno polje lahko prilagodite s številnimi dodatnimi atributi:

    dirname: nastavi smer besedila

    maxlength : največje dovoljeno število znakov v besedilnem polju

    vzorec : definira vzorec, s katerim se mora ujemati vneseno besedilo

    placeholder : nastavi besedilo, ki je privzeto prikazano v besedilnem polju

    readonly : besedilno polje naredi samo za branje

    obvezno : označuje, da mora besedilno polje imeti vrednost

    velikost : nastavi širino besedilno polje v vidnih znakih

    vrednost : nastavi privzeto vrednost v besedilnem polju

Uporabimo nekaj atributov:

Besedilna polja v HTML5

V tem primeru drugo besedilno polje takoj nastavi atributa maxlength in size. V tem primeru je velikost - to je število znakov, ki se prilegajo v vidni prostor polja, večje od dovoljenega števila znakov. Vendar še vedno ne bomo mogli vnesti več znakov od maxlength.

V tem primeru je pomembno tudi razlikovati med atributoma value in placeholder, čeprav oba določata vidno besedilo v polju. Vendar ograda nastavi nekakšen namig ali poziv za vnos, zato je običajno zatemnjena. Medtem ko vrednost predstavlja privzeto besedilo, vneseno v polje:

Zaradi atributov samo za branje in onemogočenih polje z besedilom ni na voljo, vendar ima drugačen vizualni učinek. Če je onemogočeno, je besedilno polje zatemnjeno:

Med atributi besedilnega polja je treba omeniti tudi tak atribut kot seznam. Vsebuje sklic na element seznama podatkov, ki definira niz vrednosti, ki se prikažejo kot opis orodja, ko jih vnesete v besedilno polje. Na primer:

Besedilna polja v HTML5

Atribut seznama besedilnega polja kaže na ID elementa seznama podatkov. Element seznama podatkov sam definira elemente seznama z uporabo ugnezdenih elementov možnosti. Ko vnesete besedilno polje, se ta seznam prikaže kot opis orodja.

Iskalno polje

Če želite ustvariti iskalna polja, uporabite vnosni element z atributom type="search". Formalno je preprosto besedilno polje:

Išči v HTML5

Polje za geslo

Za vnos gesla uporabite vnosni element z atributom type="password". Njegovo posebnost je, da so vneseni znaki zamaskirani s pikami:

V tem članku bi vam rad povedal, kako pravilno postaviti polja(oblazinjenje) in vdolbina(rob) v CSS.

Najprej se spomnimo definicije robov in oblazinjenja po specifikaciji W3C. V modelu polja so robovi razdalja med vsebino in robom polja. Obloga je razdalja med robom bloka in robom sosednjega ali nadrejenega elementa.

Torej, če obroba in ozadje elementa nista določena, potem ni razlike, uporabite lastnost oblazinjenja ali roba za nastavitev zamikov, vendar pod pogojem, da širina (širina) in višina (višina) elementa nista določeni in algoritem za izračun velikosti vsebine z uporabo lastnosti velikosti polja.

V vsakem primeru ne pozabite, da so robovi lahko ali pa tudi ne vključeni v širino ali višino elementa. Zamiki so vedno nastavljeni zunaj elementa.

Zdaj pa poglejmo, kako pravilno postaviti robove in prostor med elementi. Za primer vzemimo naslednji blok.

To je blok novic. Sestavljen je iz glave, seznama novic in povezave »Druge novice«. Dajmo jim naslednja imena razredov: news__title, news__list in news__more-link.

Novice

Ker ima vsak od teh elementov enak levi in ​​desni rob, je bolje nastaviti robove za nadrejeni blok, namesto da bi nastavljali levi in ​​desni rob za vsak element posebej.

Novice ( odmik: 20px 25px; )

Torej, če morate spremeniti vrednost polj na desni in levi, bo to treba storiti Na enem mestu. In ko dodate nov element znotraj bloka novic, bo že imel potrebne zareze na levi in ​​desni.

Pogosto se zgodi, da imajo vsi elementi znotraj bloka enako oblazinjenje na levi in ​​desni strani, razen enega, ki oblazinjenja sploh ne bi smel imeti, na primer zaradi ozadja. V tem primeru lahko za element nastavite negativno polnjenje. Potem vam ne bo treba odstraniti polj znotraj bloka za druge elemente.

Zdaj morate nastaviti navpične robove med elementi. Če želite to narediti, morate ugotoviti, kateri od elementov je obvezno. Jasno je, da blok novic ne more obstajati brez seznama novic, hkrati pa morda ne bo povezave »Druge novice«, naslov se lahko tudi odstrani, na primer, ko se spremeni dizajn.

Upoštevajoč to smo za naslov določili zamik na dnu, za povezavo »Ostale novice« pa zamik na vrhu.

News__title ( margin-bottom: 10px; ) .news__more-link ( margin-top: 12px; )

Enak zunanji rezultat bi lahko dosegli z dodajanjem oblazinjenja na vrhu in dnu za seznam novic.

News__list ( rob: 10px 0 12px 0; )

Zdaj morate nastaviti zamike med posameznimi novicami. Še enkrat upoštevajte, da se lahko število novic razlikuje in da je lahko navedena samo ena novica.

Nastavite lahko zgornji zamik za vsako novico, razen za prvo, ali spodnji zamik za vsako novico, razen za zadnjo. Prva možnost je boljša, ker je bil psevdoizbirnik:first-child dodan v specifikaciji CSS 2.1 in ima širšo podporo, za razliko od psevdoizbirnika:last-child, ki je bil dodan samo v specifikaciji CSS 3.0.

News__list-item ( margin-top: 18px; ) .news__list-item:first-child ( margin-top: 0; )

Tako vam pravilna postavitev robov in zamikov omogoča prilagodljivo spreminjanje videz kateri koli blok brez spreminjanja slogov in brez kršitev v oblikovanju. Najpomembneje je ugotoviti, kateri elementi bloka so glavni ( obvezno), in katere neobvezno.

Včasih se ne moremo zanesti na potrebne elemente. Na primer, imamo pojavno okno, znotraj katerega se lahko prikaže nekaj naslovov in besedila. Poleg tega v nekaterih primerih morda ni besedila, v nekaterih primerih pa morda ni naslova. To pomeni, da sta oba elementa neobvezna.

V tem primeru lahko uporabite naslednji način dodelitve zamikov.

Popup__header + .popup__text ( margin-top: 15px; )

Potem se bo vdolbina pojavila le, če sta uporabljena oba elementa. V primeru prikaza samo naslova ali samo besedila ne bo dodatnega zamika.

Strnjeni navpični robovi

Še en odtenek, za katerega vsi ne vedo, je povezan z navpičnimi prostori med sosednjimi bloki. Definicija vdolbine, ki sem jo dal zgoraj, pravi, da je vdolbina razdalja med meje sedanjega in sosednjih blokov. Če torej dva bloka postavimo enega pod drugega in enemu od njiju damo spodnji rob 30px, drugemu pa zgornji rob 20px, rob med njima ne bo 50px, ampak 30px.

To pomeni, da se bodo vdolbine prekrivale, vdolbina med bloki pa bo enaka največji vdolbini in ne vsoti vdolbin. Ta učinek se imenuje tudi "kolaps".

Upoštevajte, da se vodoravne alineje, za razliko od navpičnih, ne "zrušijo", ampak se seštejejo. Polja (padding) se tudi seštejejo.

Ker vemo o "sesedanju" alinej, lahko to lastnost izkoristimo sebi v prid. Na primer, če moramo zamakniti naslove in besedilo znotraj članka, bomo za naslov prve ravni spodnji zamik nastavili na 20 slikovnih pik, za naslov druge ravni pa zgornji zamik 20 slikovnih pik in spodnji 10 slikovnih pik, za vseh odstavkih nastavimo zgornji zamik na 10 slikovnih pik.

H1 (rob-spodnji: 24px; ) h2 (rob-zgoraj: 24px; rob-spodnji: 12px;) p (rob-zgoraj: 12px;)

Zdaj lahko naslov h2 postavite za naslov h1 ali za odstavek. V vsakem primeru zgornji rob ne bo presegel 24 slikovnih pik.

Splošna pravila

Če povzamem, bi rad navedel pravila, ki se jih držim pri urejanju robov in zamikov.

  1. če sosednji elementi imajo enake zamike, jih je bolje nastaviti na nadrejeni vsebnik kot na elemente.
  2. Pri nastavljanju zamikov med elementi morate upoštevati, ali je element obvezen ali neobvezen.
  3. Za seznam podobnih elementov ne pozabite, da se lahko število elementov razlikuje.
  4. Bodite pozorni na navpično oblazinjenje in uporabite to funkcijo, kjer vam bo koristila.

Oznake: dodajte oznake