Očuvanje vertikalnog ritma s CSS-om i jQueryjem

Autor: Louise Ward
Datum Stvaranja: 12 Veljača 2021
Datum Ažuriranja: 18 Svibanj 2024
Anonim
Očuvanje vertikalnog ritma s CSS-om i jQueryjem - Kreativan
Očuvanje vertikalnog ritma s CSS-om i jQueryjem - Kreativan

Sadržaj

Pod pretpostavkom da dizajnirate sadržaj, prva je odluka da učinite svoj dizajn ima biti srodan tipu. Čak i do ne odabirom slova učinili ste nešto što utječe na vašu web lokaciju. Tip je srž tiska i web dizajna i složen je; postoji puno nakupljenih pojmova, praksi, pravila i tehnika koje se dobro koriste. Ovaj se članak bavi jednom tehnikom upravljanja jednim aspektom tipa, onim koji je bilo teško izvoditi na mreži, ali je uobičajen u tisku: održavanje dosljednog vertikalnog ritma, što nam zauzvrat omogućuje postizanje profesionalnog izgleda.

Vrsta izlaganja

U tiskanom obliku, za bilo koju stavku s značajnom količinom teksta temelj dizajna vjerojatno će biti osnovna mreža. Koristi se za donošenje strukture na stranicu i vodi vertikalni protok sadržaja. Gotovo je sve postavljeno s obzirom na tu osnovnu mrežu. Ne brinite ako ne prepoznate pojmove, nitko nije upoznat s osnovnim linijama ili osnovnim mrežama; već znate za njih. Sjetite se škole, kad ste nesumnjivo pisali na obloženom papiru - dok ste pisali, dno svojih slova uredno ste postavili na svaki redak na papiru. Osnovna i osnovna mreža u akciji. Osnovna linija je zamišljena crta na koju se poravnava dno slova. Ako sada pogledate ovaj članak, vidjet ćete osnovnu liniju, iako linija zapravo ne postoji. Tvoj mozak stavlja jedan za vas, zato možete čitati rečenice. Redovi na obloženom papiru? Oni su osnovna mreža. Ravno, tako da su vaše rečenice ravne i postavljene u pravilnim intervalima, tako da vaš tekst ima redoviti vertikalni ritam.


Okomiti ritam

Okomiti ritam diktira gdje se na stranici nalazi tekst. To je jedna komponenta koja utječe na našu sposobnost skeniranja i čitanja blokova teksta i pomaže u informiranju naših emocionalnih odgovora. Kad tekst ima snažan vertikalni ritam i dobar razmak, osjećamo da je profesionalan, pažljiv, autoritativan i ugodan za čitanje. Kad tekst ima loš ritam i razmake, osjećamo da je manje promišljen, manje profesionalan i često ga je teže čitati. Okomiti ritam jednim je dijelom upotrebljivost, a jednim dijelom estetika.

Vođenje ritma

Nažalost, web je još uvijek loš rođak grafike u smislu njegove sposobnosti da usvoji neke temeljne prakse u vezi s tipom. Na webu ne možemo koristiti osnovnu mrežu na isti način na koji to čini dizajner ispisa (ili dijete u školi) - ne možemo poravnati osnovnu liniju teksta s matičnom mrežom dokumenta. CSS nema koncept osnovne mreže. Dakle, naš tekst neće točno stajati na crtama matične mreže. Umjesto toga, centrirat će se okomito u razmak između crta. To je najbolje što web može učiniti.


Idemo praktično s primjerom dokumenta. Prvo ćemo postaviti ritam tako što ćemo napraviti vidljivu osnovnu mrežu. Da bismo to učinili, upotrijebit ćemo ponavljajuću pozadinsku sliku za crtanje pravilnih vodoravnih crta od 22 piksela:

html {background: #fff url (baseline_22.png); }

Ura, imamo naš obloženi papir!

Primijetit ćete da se ništa ne slaže. Da bi se sve poravnalo želimo da donji rub svih elemenata pogodi jednu od tih linija. Najlakši način da to napravite jest da svi elementi zauzmu vertikalnu visinu (uključujući margine) koja je višestruka od 22. Evo nekoliko CSS-a koji upravo to čine. Koristim REM jedinicu, ali dajem zamjensku EM vrijednost za preglednike koji ne razumiju REM. U komentare ubrajam i ekvivalent PX jedinice. Ako još uvijek ne razumijete REM / EM, umjesto toga možete upotrijebiti vrijednosti px - sve su jednake:

html {/ * veličina fonta: 16px, visina linije: 22px * / font: 100% / 1.375 "Helvetica Neue", Helvetica, Arial, sans-serif; pozadina: #fff url (baseline_22.png); } h1, h2, h3, h4, h5, h6 {/ * margin-top i bottom su po 22px * / / * em zamjenski * / margina: 1.375em 0; marža: 1.375rem 0; } h1 {/ * veličina fonta je 32 piksela, visina retka je 44 piksela * / / * em zamjenski * / veličina fonta: 2em; veličina slova: 2rem; visina crte: 1.375; } h2 {/ * veličina fonta je 26px, visina linije je 44px * / / * em zamjenski * / veličina fonta: 1,75em; veličina slova: 1,75rem; visina crte: 1,5714285714; } h3, h4, h5, h6 {/ * veličina fonta je 22px, visina linije je 22px * / / * em zamjenski * / veličina fonta: 1.375em; veličina slova: 1.375rem; visina crte: 1; } p, ul, blockquote {/ * donja margina iznosi 22 piksela, visina crte nasljeđuje se iz html (22 piksela) * / / * em povratno * / margin-top: 0; margina-dno: 1.375em; margin-top: 0; margin-bottom: 1.375rem; }

Pogledajmo što nam to daje. Primijetite kako se sav tekst lijepo poravnava? Ne sjedi na osnovnoj liniji, ali ima predvidljiv vertikalni ritam. Lijepo je i uredno.


Suočavanje sa slikama

Slike sve čine složenijim.Pogledajte što se događa s našim ritmom kad uključimo neke. Ometaju ga kao preskakanje zapisa - tempo je ispravan, ali vrijeme je isključeno. Poravnanje postaje pomaknuto. To je zato što je malo vjerojatno da će slike imati visinu koja je višekratnik osnovne linije, tako da se donji rub ne poravnava s našom mrežom osnovne linije.

Da bismo to popravili, sve što zapravo moramo učiniti je dodati marginu svakoj slici, čineći dno margine poravnanom s našom mrežom. Što je dovoljno jednostavno automatizirati s malo JavaScript-a. Evo našeg osnovnog plana:

  1. Shvatite visinu svake slike.
  2. Pogledajte koliko se puta osnovna vrijednost podijeli u vertikalni prostor koji slika trenutno zauzima i dobijte ostatak.
  3. Oduzmite ostatak od osnovne linije kako biste dobili odmak koji moramo primijeniti na slici.
  4. Primijenite pomak kao marginu na dno slike.

Dno okomitog prostora slike sada bi se ispravno poravnalo s mrežom osnovne linije. Evo osnovne funkcije u jQueryju koja to čini:

$ (window) .bind ('load', function () {$ ("img"). svaka (function () {/ * varijable * / var this_img = $ (this); var baseline = 22; var img_height = this_img.height (); / * radi matematiku * / var ostatak = parseFloat (img_height% baseline); / * koliko trebamo dodati? * / var offset = parseFloat (baseline-ostatak); / * primijeni marginu na sliku * / this_img.css ("margin-bottom", offset + "px");});});

Zašto prozor.vezati crta? Jer moramo pričekati dok se slike ne učitaju da bismo mogli pouzdano dobiti njihove veličine. Evo primjera pokretanja ovog osnovnog koda.

Poboljšanje jQueryja

Svijet je rijetko ravnopravan, a to se ovdje i pokazalo - moramo se pozabaviti s popriličnim detaljima implementacije. Što nije u redu s funkcijom koju imamo? Dosta:

  • Daje gadne rezultate sa slikama koje su umetnute, a ne plutajuće ili blokirane.
  • Čini se "buggy" na nekim slikama, posebno onima u spremnicima.
  • Ne bavi se rasporedima tekućina.
  • Nije baš za ponovnu upotrebu.

Ne želimo primijeniti ovo ponašanje na slike koje su u liniji, poput smajlića u primjeru. Umetnute slike poravnane su tako da donji rub sjedi na istoj osnovici kao i tekst (ne osnovna mreža). To znači da je slika pomaknuta okomito. Ni CSS ni JS ne daju nam način da saznamo gdje je osnovna crta za element teksta, tako da ne znamo odmak. Moramo zanemariti umetnute slike i primijeniti svoj popravak samo na slike koje su postavljene na prikaz: blok (srećom, bilo koja plutajuća slika automatski se postavlja na blok prikaza).

Ako se slika nalazi u spremniku, margina primijenjena na sliku može biti skrivena zbog postavki preljeva na spremniku. Također, možda ne želimo marginu na slici, već na elementu spremnika. U primjeru bismo radije imali margine na bijelom okviru nego na slici unutar okvira, tako da možemo izbjeći čudne praznine koje se pojavljuju u okviru.

Funkcija se izvodi samo jednom, ali na tekućem dizajnu slike mijenjaju visinu kad se preglednik preusmjeri (pokušajte promijeniti primjer na nešto prilično usko da biste to vidjeli). Promjena veličine ponovno ruši ritam. Funkcija nam je potrebna za pokretanje nakon promjene veličine preglednika, kao i nakon učitavanja stranice. Raspored tekućina donosi i druge probleme; slike mogu biti visoke razlomljene piksele, na primjer 132,34 px. To zauzvrat može dovesti do neočekivanih rezultata, čak i ako primijenimo razlomljenu marginu (ako ste zainteresirani, evo zašto: trac.webkit.org/wiki/LayoutUnit). Dakle, morat ćemo sliku umasirati u cijelu visinu piksela kako bismo izbjegli pogreške u rasporedu uzrokovane razlomljenim pikselima.

Na kraju, trebali bismo ovo pretvoriti u funkciju koja se može više koristiti. Zapravo, s obzirom na složenost koja je praktičnom rješenju potrebna u odnosu na teoretsko rješenje, trebali bismo napraviti dodatak koji se može ponovno koristiti u drugim projektima.

U posljednjem ćete primjeru pronaći kôd koji sve ovo postiže. Dodatak JavaScript je teško komentiran, tako da ga možete pratiti. Dodatak možete koristiti pozivom na sljedeći način:

$ (window) .bind (’load’, function () {$ ("img"). baselineAlign ();});

Ili možete reći dodatku da primijeni marginu na imenovani spremnik, ako on postoji kao roditelj slike:

$ (window) .bind (’load’, function () {$ ("img"). baselineAlign ({container: ’. popup’});});

Zaključak

Održavanje dobrog vertikalnog ritma suptilna je, ali učinkovita dizajnerska praksa koja se redovito koristi u tisku. Sada znate osnovna načela, radno poznajete polazne crte i osnovnu mrežu i znate neka ograničenja rasporeda CSS teksta u odnosu na ispis. Također znate kako zaobići ta ograničenja, sastaviti dokumente u bilo kojem vertikalnom ritmu koji želite i imate alat koji vam pomaže u rješavanju ometajućeg sadržaja slike.

Kako CSS sazrijeva, i dalje dobivamo više značajki u skladu s našim rođacima, tako da će dobro razumijevanje vrste postati važnije za stvaranje kvalitetnih web stranica. Ako želite saznati više o tipu općenito, toplo preporučujem www.thinkingwithtype.com (i kupnju knjige da biste je priložili). Ako se bavite CSS člancima o liječenju tipova, postoje brojni članci ovdje i drugdje na webu. Također bih preporučio da stignete najnovije vijesti Marka Boultona i Elliota Jaya Stocksa, obojica često govore o tipu u vezi s web dizajnom.

Zabavi se!

Zanimljivi Postovi
Kako stvoriti Redshift proxy u Cinema 4D
Čitati

Kako stvoriti Redshift proxy u Cinema 4D

Cinema 4D jajan je u mnogim tvarima, ali e može u poriti kad na ceni ima puno objekata, što je pravi problem pri generiranju geometrije.Red hift, pri trani mehanizam za renderiranje na GPU-u, po tao j...
Ovladati slikanjem akvarela mokro u mokrom
Čitati

Ovladati slikanjem akvarela mokro u mokrom

Akvarel je predivan. Otkrila am njegovu privlačno t dok am još bila na fakultetu za umjetno t i kori tila am malenu paletu za izradu kica dok am bila na biciklu u Leice ter hireu u Velikoj Britaniji. ...
Video tutorial: Pretvorite ravna slova u 3D tip u Illustrator CS6
Čitati

Video tutorial: Pretvorite ravna slova u 3D tip u Illustrator CS6

Nova značajka Illu trator C 6 za primjenu gradijenata na poteze brz je i učinkovit način za pretvaranje jedno tavne taze u loženi oblik. Možete dodati dubinu ilu traciji, pa čak i brzo tvoriti 3D vr t...