Sfaturi de CSS pentru un începător.
  [ Ignoră ]
Avatar
RankRankRankRank
Administrator
Din: The Colony, TX
Macuser din: 11.10.05

Bătrân cunoscător de HTML3 și parțial HTML4 fiind, am decis să nu mai folosesc frame-uri și table-uri pentru aranjat chestii în pagini de Web și m-am apucat de CSS. Googluing și citind pe sărite. Adică cum se poate mai rău grin

Scopul inițial era să fac o pagină nouă pentru graficele de utilizare ale unui server. Am făcut și eu o pagină mică-mică cu paginație CSS 100% - totul este întrun singur HTML, pentru ușurința citirii.

http://partenie.com/mrtg/

Am zis să folosesc clase în loc de ID-uri ca să put folose aceleași setări pentru multe grafice.

Care vă pricepeți, dați și voi un Show Page Source și spuneți-mi ce tâmpenii am făcut.

Mulțumesc mult.

 Semnătură 

Apple:5x macmini (G4, 2007, 2009, 2010, 2012)
UNIX:IBM 7011-250/AIX 5.1, HP Jornada 680/JLime, HP 9000 F20/HP-UX 11.11
PC:PentiumD/Debian, HP t5300/Debian
Misc:Spectrum 48k, 8x Raspberry Pi, 2x CHIP

Profil
 
  [ Ignoră ]   [ # 1 ]
Avatar
RankRank
Jr. Member
Din: București
Macuser din: 14.12.09

Nu prea am înțeles cerința. grin Ce e acolo e ok făcut, mai ales că se vede cum trebuie în mai multe browsere. Ce-i drept e și puțin, după ce mai dezvolți poate o să vedem dacă sunt chestii ce pot fi îmbunătățite. Pe moment eventual ar fi bine să scoți codul CSS în fișiere separate, nu să apară în cadrul HTML-ului, așa poate fi folosit în mai multe pagini.

Bănui că știi cum poți vedea ușor ce CSS are un anumit nod, nu? Cu Inspectorul care e inclus în Chrome sau Firefox, sau cu extensia Firebug. Tot cu el poți chiar modifica direct ce atribute CSS sunt pe un nod și să vezi rezultatul imediat în browser, ca să testezi și să alegi ce îți convine mai mult. Dacă nu ai folosit până acum să îmi zici, să revin cu mai multe detalii.

În rest, să înveți bine cum e cu float-urile, că te ajută mult în design, la fel și cu poziționările. Mai departe poți sări la framework-uri care deja au multe chestii gata făcute incluse și mai ales care sunt responsive (se schimbă modul de afișare în funcție de rezoluția device-ului folosit). Un bun început e cu Bootstrap (http://getbootstrap.com).

Spune-mi cum pot să ajut, sau dacă pot să mai explic mai concret ceva, cum ziceam cerința a fost destul de ambiguă.

 Semnătură 

iMac “Core 2 Duo” 3.06 21.5-Inch (Late 2009)
iPhone 4S 16G

Profil
 
  [ Ignoră ]   [ # 2 ]
Avatar
RankRankRankRank
Administrator
Din: The Colony, TX
Macuser din: 11.10.05

Pentru performanță, prefer să fie totul (CSS + JS + HTML) în același fișier. Este nevoie de un singur request la serverul de web ca să afișeze toată pagina, nu mai multe. Internet-ul devine din ce în ce mai laggy pe zi ce trece - un html care încarcă 2 .js-uri și un .css care și ele la rândul lor mai referențiază altele, se încarcă MULT mai încet peste internet decât o singură pagină monolitică. Dar asta este o altă discuție.

Sțiu de inspectorul din browser (inclusiv Safari) smile bun la casa omului pt bibilit un pixel în sus sau în jos.

Chestiile care mă interesează:

- Este bine cum am făcut cu o clasă separată pentru fiecare element, sau există metode mai elegante ? Adică: eu specific “width: 697px;” în 3 locuri - aș putea să specific parametrul ăsta într-un sigur loc ? Nu m-am prins încă cum e cu inheritance.

- Am făcut bine cu imaginea + textul vertical atașat fiind un img+span într-un singur div ? Sau trebuia să fac 2 div-uri cumva poziționate la pixel ? Am încercat eu cum m-am priceput și așa, dar șmecheria cu animația la hover/touch făcea foarte urât.

Mersi mult !

 Semnătură 

Apple:5x macmini (G4, 2007, 2009, 2010, 2012)
UNIX:IBM 7011-250/AIX 5.1, HP Jornada 680/JLime, HP 9000 F20/HP-UX 11.11
PC:PentiumD/Debian, HP t5300/Debian
Misc:Spectrum 48k, 8x Raspberry Pi, 2x CHIP

Profil
 
  [ Ignoră ]   [ # 3 ]
Avatar
RankRank
Jr. Member
Din: București
Macuser din: 14.12.09

Dacă ai doar o pagină HTML, ca în cazul tău, probabil e optim să fie tot în ea. Însă dacă ai mai multe (sau o aplicație măricică server side), devine foarte complicat să faci mentenanță pe părțile comune (dacă te hotărăști sa schimbi ceva în CSS sau JS, va trebui să intri în toate fișierele HTML care conțin respectivul cod).

Oricum, teoretic js-urile și css-urile se trag doar o dată, cât să ajungă în cache-ul browserului. Pe lânga asta există și minify, ca să “cântărească” cât mai puțin, mai sunt chestii și pe serverul web care ajută la compresie… într-adevăr, e o altă discuție, la care mă pricep mai puțin, mai ales dacă implică serverul.

Atributul class de pe un tag HTML permite să enumeri în el mai multe clase, așa că pentru eleganță și optimizare ai putea să faci o clasă separată:

.my-width {
  width: 697px;
}

și apoi în HTML scrii:

<img class=“my-width xpandr-full”>
<img class=“my-width xpandr-small”>

Clasele din enumerare au proprietățile din clasele anterioare și pot să facă și override, adică de exemplu daca ai enumerarea “my-width xpandr-full” și în clasa .xpandr-full pui un alt width, atunci width-ul din .my-width nu mai are efect.

Tot ca optimizare, nu mai e nevoie să pui width-ul în clasele cu hover, pentru că deja au tot ce e în clasa de bază. Pui numai ce trebuie să se schimbe la mouse over. Deci, în .xpandr-small:hover, width și border-image-width sunt redundante, poți lăsa acolo numai height, că numai el se modifică.

Inheritance e ceva diferit, anume e ceva ce se moștenește de la proprietățile CSS ale nodurilor de deasupra. Nu toate proprietățile CSS au inheritance. Font-size are, deci dacă pui un font-size pe un tag, toate tagurile copil ale lui îl vor avea, dacă nu se specifică altfel. În ce privește width, acesta nu are inheritance. Poți vedea ușor pe net care atribute au inheritance si care nu, de exemplu pe w3schools.

http://www.w3schools.com/cssref/pr_font_font-size.asp (Inherited:  yes)

Tot acolo mai vezi ceva important, default value. Uneori ai nevoie de ea, ca să pui la valoarea default o proprietate pe care ai specificat-o. De exemplu, dacă ai pe un tag position: absolute și vrei la un moment dat să nu mai fie așa, nu ai cum să îi zici “elimină proprietatea position”, ci o resetezi la valoarea default pe care o afli de acolo, anume position: static. Toate astea o să le înveți în timp.

Mai ziceai de specificat parametrul de width. Există posibilitatea asta, să ai variabile, dar nu cu CSS scris de mână ci cu chestii gen LESS (http://lesscss.org/) sau SASS (http://sass-lang.com/). În astea ai deja un adevărat limbaj de programare, din câte am înțeles, iar CSS-urile finale se generează cu niște executabile. N-am folosit deocamdată și nici nu îți recomand să îți bați acum capul, doar să știi că există, poate vreodată o să fii interesat.

E ok cu imaginea și span-ul într-un singur div, ideal e să grupezi pe cât se poate elementele similare în div-uri. Oricum, până la urmă nu e o rețetă infailibilă, în funcție de caz poți face și tag-uri separate. Contează să funcționeze, chiar tu ai observat că în celălalt caz făcea urât la hover, așa că ai căutat altă cale.

Întreabă-mă când mai ai neclarități sau dacă nu îți iese ceva, aici sau în PM.

Spor!

 Semnătură 

iMac “Core 2 Duo” 3.06 21.5-Inch (Late 2009)
iPhone 4S 16G

Profil