Zločin i kazna by W3C Validator(ski) 3 - CSS

napisano u kategoriji: CSS i XHTML 14 jul 2009

Zašto vršiti validaciju CSS-a?

Šta je najgore što može da se desi ukoliko postoje greške? Jedino što može da se desi to je da broweser(i) ignorišu linje koda sa greškama i da vaš sajt izgleda sasvim drugačije od onog kako ste zamislili.

Sledeći link Why Validate Cascading Style Sheets? ilustruje razloge zbog kojih treba ispravljati greške (ili grehe... )

Svi CSS fajlovi podvrgnuti validaciji koriste podrazumevane postavke:

Upozorenja: Normalni izveštaj; Profile: CSS Version 2; Medium: Sve. Napredniji korisnici mogu da koriste neku od opcija dodatnog podešavanja.

Podaci se kategorizuju u tri sekcije:

"Author-Generated Errors" kada su greške uzrokovali sami autori

"Vendor-Specific Errors" greške proizvodjačkog koda

"Validator-Generated Errors" greške koje nisu u skladu sa specifikacijama CSS-a

CSS kodovi u nastavku su uzesti samo kao primer radi ilustracije i lakšeg razumevanja.

Navešćemo samo najčešće i najrasprostranjenije greške.

1. Tipografske greške

Ovi primeri su tipografske greške. One su ujedno i najčešće greške koje se javljaju i najlakše ih je identifikovati i ispraviti.

Line: 63 Context : h3
Invalid number : font-weight ligher is not a font-weight value : ligher
Line: 441 Context : #footer
Invalid number : margin Unknown dimension : 2x
Line: 199
Invalid number : color 00000 is not a valid color 3 or 6 hexadecimals numbers : #00000
Line: 102 Context : .primary .item .pagetitle
Invalid number : background Too many values or values are not recognized : ffffff
Line: 47 Context : #portfolio .right .c0
Invalid number : width only 0 can be a length. You must put an unit after your number : 280

 

2. Whitespace greške

Line: 240
Parse error - Unrecognized : . label { font-style: italic; }

U kodu to izgleda ovako:

. label {
font-style: italic;
}

Prazno mesto ili "Whitespace" je između indikatora klase "." i imena.

Sledeća greška je nešto drugačija:

Line: 324 Context : input#author
Invalid number : font only 0 can be a length. You must put an unit after your number : 1.0 em "Lucida Sans Unicode",Arial,Helvetica,Sans-Serif

Kod:

input#author {
margin: 0;
padding: 2px;
font: 1.0 em "Lucida Sans Unicode", Arial, Helvetica, Sans-Serif

"Whitespace" je između veličine fonta i jedinice mere

 

3. "Auto" greške

Line: 17 Context : body
Invalid number : padding auto is not a padding-right value : 0 auto

Kod:

body {
margin: 0 auto;
padding: 0 auto;
background-color: #fff;
text-align: center;
font-family: "Trebuchet MS", Verdana, Arial, Serif;
font-size: 10pt;
color: #666;
}

Najčešća upotreba "auto" je vrednost za horizontalno centriranje bloka. Padding ne radi. [Videti: Cascading Style Sheets, level 2 revision 1, CSS 2.1 Specification, [W3C Working Draft 11 April 2006], 10 Visual formatting model details, 10.3 Calculating widths and margins should other uses be wanted.]

 

4. Greške u definisanju vrednosti

Greška kada se napišu dve jedinice mere za istu prednost i % i px.

Line: 616 Context : #formuway
Invalid number : width Too many values or values are not recognized : 100% px

Kod:

#formuway {
color: #666;

 

5. Important! greške

Line: 573 Context : .imagelist ul li a img.lastfmimage
Parse Error - !important }

Kod:

.imagelist ul li a img.lastfmimage {
height: 100px; !important
}

Cascading Style Sheets, level 2, CSS2 Specification, 4.1 Syntax, 4.1.8 Declarations and properties

Po pravilim apisanja CSS-a posle dve tačke (:) mora da sledi neka vrednost. Može biti prazno mesto ispred ili iza. Zbog načina rada, višestruke deklaracije jednog selektora moraju biti odvojeni sa tačka-zarez (;)

Primer:

Ovako napisan kod:

H1 { font-weight: bold }
H1 { font-size: 12pt }
H1 { line-height: 14pt }
H1 { font-family: Helvetica }
H1 { font-variant: normal }
H1 { font-style: normal }

isto je što i:

H1 {
font-weight: bold;
font-size: 12pt;
line-height: 14pt;
font-family: Helvetica;
font-variant: normal;
font-style: normal
}

Primetićete da u poslednjem redu nema ; (tačka-zarez) - nemojte da vam to bude praksa. Poštujte principe dobrog i ispravnog formatiranja "well-formedness", uvek koristite ovaj interpunkcijski znak, za završetak deklaracija sa jednom vrednošću, kao i za poslednji u nizu kod višestrukog definisanja vrednosti. Da se vratimo na !important - koji treba da bude pre tačka-zarez (;)

 

6. Greške Font skraćenica

Line: 336 Context : #sidebar #searchform #s
Invalid number : font Parse Error - [empty string]

kod:

#sidebar #searchform #s {
width: 125px;
padding: 2px;
font: .8em;
}

 

Line: 412 Context : .primary .item .itemtext
Invalid number : font 'Lucida Grande' is not a font-size value : 'Lucida Grande', Verdana, Arial, Sans-Serif

kod:

.primary .item .itemtext {
font: 'Lucida Grande', Verdana, Arial, Sans-Serif;
text-align: justify;
font-size: 11px;
line-height: 16px;
color: #444;
}

 

Pravila za skraćenice

Postoji mogućnost da pojedine vrednosti definišete u okviru jedne osobine. Npr. 'font' u skraćenom obliku sadrži 'font-style', 'font-variant', 'font-weight', 'font-size', 'line-height', i 'font-family' sve odjednom.

Kada se piše u skraćenom obliku svaka od izostavljenih vrednosti dobija neku svoju "inicijalnu" vrednost.

Primer:

 

h1 {
font-weight: bold;
font-size: 12pt;
line-height: 14pt;
font-family: Helvetica;
font-variant: normal;
font-style: normal;
}

može da se napiše i na sledeći način:

h1 { font: bold 12pt/14pt Helvetica }

U ovom primeru 'font-variant' i 'font-style' dobijaju inicijalne vrednosti i to je ispravan "font shorthand".

 

7. Greške sa zarezima (,)

Line: 19 Context : body
Invalid number : font Too many values or values are not recognized : normal 80%/15px 'Trebuchet MS' Helvetica,Arial,Geneva,sans-serif

Kod:

h1 {
font: normal 80%/15px 'Trebuchet MS' Helvetica, Arial, Geneva, sans-serif;
line-height: 18px;
color: #007CB9;
padding-bottom: 0px;
margin: 0;
}

Nedostaje zarez posle 'Trebuchet MS' - "'Trebuchet MS' Helvetica" je neispravno, ovo je jedna od grešaka koja se veoma često javlja.

 

8. Greške kad nedostaje ; (tačka-zarez)

Line: 57 Context : h2
Invalid number : font attempt to find a semi-colon before the property name. add it
h3 {
font: normal 1em 'Trebuchet MS' Arial, 'Times New Roman', Serif
color: #222;
padding: 0;
}

 

9. Legacy greške

Line: 604 Context : entry img.wp-smiley
Invalid number : vertical-align absmiddle is not a vertical-align value : absmiddle

Kod:

.entry img.wp-smiley {
float: none;
margin: 0;
vertical-align: absmiddle;
}

10. Underscore Hack Errors

Line: 110 Context : .secondary
Property _width doesn't exist : 28%

Ovo je tzv. "underscore hack". [ videti The Underscore Hack prvi put objavljeno November, 21 2003 by Wellstyled.]

Posebne proizvodjačke specifikacije:

Inicijalna crtica (-) ili donja crta (_) se ne koriste niti će se koristiti u budućim verzijama CSS-a, kao naredba ili ključna reč.

Primer:
-moz-box-sizing
-moz-border-radius
-wap-accesskey

Pročitajte ovo 4.1.3 Characters and case,

 

11. "None" greške

Line: 216 Context : #grav-signup-holder label.evil-checkbox input
Invalid number : background-color none is not a color value : none

Kod:

#grav-signup-holder label.evil-checkbox input {
float: left;
background-color: none;
border: none;
}

Line: 183 Context : #quickiesChoice
Invalid number : font-weight none is not a font-weight value : none
Line: 100 Context : #maincontent li
Invalid number : padding none is not a padding-top value : none
Line: 100 Context : #maincontent li
Invalid number : margin none is not a margin-top value : none

Primer koda:

#maincontent li {
padding: none;
margin: none;
}

Upotreba "none" je vrlo popularna. Koristi se u svim mogućim kombinacijama za definisanje nulte vrednosti - što naravno ne mora da znači i da je to ispravno. Za vrednosti koje zahtevaju broj umesto "None" koristite nulu - "0"; u slučaju background-colors, umesto "None" ili sasvim izbacite tu "background-color" ili koristite "Transparent".

"display: none" - je OK.

 

12. Cursor Hand Errors

Line: 393 Context : #right .image:hover
Invalid number : cursor hand is not a cursor value : hand
Line: 21 Context : a:link, a:visited, a:active
Invalid number : cursor hand is not a cursor value : hand

Cascading Style Sheets, level 2, CSS2 Specification, 18 User interface, 18.1 Cursors: the 'cursor' property preporučuje : auto

 

Line: 336 Context : a:hover
Invalid number : color grey is not a color value : grey
a:hover {
text-decoration: underline;
color: grey;
font-weight: 700;
}

Cascading Style Sheets, level 2, CSS2 Specification, 4 CSS2 syntax and basic data types, 4.1.2 Keywords

Ključne reči ne smeju biti unutar zagrada ("..." ili..'). Red je ključna reč ali "red" nije (to je string).

Drugi primeri:

width: "auto";
border: "none";
font-family: "serif";
background: "red";

Sintaksa i osnovni tipovi podataka, 4.1 Syntax, 4.3 Values, 4.3.6 Colors naredbe,

<color> je i ključna reč i/ili numerička vrednost RGB.

Lista boja: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white i yellow.

Grey nije uključena kao boja.

 

14. Mešane greške (smuti pa prospi)

Line: 61 Context : h3
Invalid number : line-height Parse Error - [empty string]
h3 {
line-height: 1;
}

Cascading Style Sheets, level 2 revision 1, CSS 2.1 Specification [W3C Working Draft 11 April 2006], 10 Visual formatting model detail, 10.8 Line height calculations: 'line-height' i 'vertical-align', 10.8.1 Leading and half-leading treba pisati na sledeći način,

'line-height'

vrednost:

normal | <number> | <length> | <percentage> | inherit

Početna odn. inicijalna vrednost:

normal

Odnosi se na :

all elements

Inherited:

yes

Procenat:

refer to the font size of the element itself

Media:

visual

Izračunata vrednost:

za <length> i <percentage> apsol; u drugim slučaejvima kako je specificirano

U slučaju block-level, table-cell, table-caption ili inline-block elemenata, koji su sastavljeni od inline-level elemenata, 'line-height' specificira minimalnu visinu boksa u okviru elementa. Minimalna visina predstavlja minimalnu visinu iznad osnovne linije bloka i minimalnu dubinu ispod, tačnije svaki line-box počinje sa nultom širinom inline boksa sa visinom blok fonta i line height ("strut").

U slučaju inline-level elementa, 'line-height' određuje visinu koja se koristi za izračunavanje visine line box-a (izuzev za inline replaced elements, gde je visina boksa definisana u 'height' property).

Vrednosti imaju sledeće značenje:

normal

Vrednost se bazira na veličini fonta elementa. Ova vrednost ima isto značenje kao i <number>. Preporuka je da se za 'normal' koriste vrednosti između 1.0 to 1.2.

<length>

Specificirana dužina se koristi za izračunavanje visine line boksa. Negativne vrednosti nisu dozvoljene.

<number>

Vrednost ovog izraza (visina linije) je broj pomnožen sa veličinom fonta elementa. Nije dozvoljena negativna vrednost..

<percentage>

Izračunata vrednost je procentualno povećanje u odnosu na veličinu fonta. Nije dozvoljena negativna vrednost.

Primeri:

div { line-height: 1.2; font-size: 10pt }     /* number */
div { line-height: 1.2em; font-size: 10pt } /* length */
div { line-height: 120%; font-size: 10pt } /* percentage */

Ceo broj (Integer) "1" je neispravan; broj "1.0" je ispravan. Razlog, ako što je gore napisano, je taj da vrednosti treba da budu upisane kao realni (decimalni) brojevi kao što to zahteva Cascading Style Sheets, level 2 revision 1, CSS 2.1 Specification, 4 Syntax and basic data types, 4.3 Values, 4.3.1 Integers and real numbers .

Ovim bih zavrsila deo priče o validaciji. To naravno nije i kraj priče - ovo je priča bez kraja, sa mnogo nastavaka i sa neočekivanim obrtima. Na vama je da se odlučite da li ćete se pridržavati određenih pravila, isto kao sto od vas zavisi da li ćete se truditi da vam sajt prođe validaciju.

 

Tagovi: css // html // tutorijal

Add comment

Molimo vas, ponasajte se kulturno.
Komentari mogu biti izbrisani ili izmjenjeni bez vase saglasnotsi ili bilo kakvog obavjestenja.


Security code
Refresh

Poslednje Vijesti

Lista bezbjednostnih propusta nekih ekstenzija

I kao što smo mnogo puta pisali na forumu, ekstenzije koje skinete sa drugih sajtova a koje nisu u standardnim postavkama Joomla! CMS-a mogu da vam povećaju ranjivost vašeg sajta....

Procitaj Clanak

Joomla! 1.6.0 - napušten Legacy Mode

Kao što sam naslov kaže, legacy mode neće biti podržan u nadolazećoj verziji 1.6.0. Napominjemo sve koji koriste 1.5 verziju da se "oslobode" korišćenja legacy moda. Uskoro ćemo napisati kako...

Procitaj Clanak

Radovi Na Sajtu

Radi doradjivanja sajta, ovih dana bi moglo doći do manjih zastoja kod registrovanja ili logovanja. Molimo vas da budete strpljivi. Hvala :).

Procitaj Clanak

Joom!fish Stabilna verzija

Izašla je stabilna verzija Joom!Fisha za Joomla! 1.5.x koju možete skinuti sa LINK Joom!Fish je komponenta koja će vam pružiti mogućnost da sadržaj vašeg sajta prevedete na više jezika....

Procitaj Clanak

Nova verzija Joomla!™ 1.6.0

Uskoro izlazi nova verzija Joomla! CMS-a 1.6.0 i donosi značajne promjene u generisanju urlova u odnosu na verziju 1.5.7. Može se lako desiti, ali očekujemo da će biti rijedak slučaj...

Procitaj Clanak