Villu

Pikslisse!

Trikk: sisuga vĂ”rdse kĂ”rgusega kĂŒlgpaan

VĂ”i siis kĂŒlgpaaniga (sidebar) vĂ”rdse kĂ”rgusega sisu.

VÀga raske saavutada, paljud annavad enne Ôiget lahendust leides alla ja:

  • kasutavad tabelit
  • sĂ”imavad lolli kujundaja lĂ€bi
  • kasutavad taustapilti
  • puhkevad sĂŒdantlĂ”hestavalt nutma

Kuid lahendus on tegelikult vĂ€ga lihtne ja vahva – suur padding-bottom ja samasuur negatiivne margin. Lisaks veel overflow: hidden kogu selle krempli ĂŒmber.

Ehk…

… HTML:

<div id="container">
	<div id="sidebar">
	...
	</div>
	<div id="content">
	...
	</div>
</div>

ja CSS:

#container {
	overflow: hidden;
}
	#sidebar {
		padding-bottom: 10000em;
		margin-bottom: -10000em;
	}

Nota bene! Teada on, et seda trikki kasutades peab eemale hoidma ankrustest, sest overflow: hidden; peidab muidu Àra kÔik, mis eelneb ankru viidatud sisule.

Bon appetit!

Kommentaarid: puuduvad

Target _blank-i ei tohi kasutada

Iidamast-Aadamast on HTML-i alles jÀÀnud vÔimalus avada linke uues aknas, lisades selleks lingile atribuudi target ja andes sellele vÀÀrtuse _blank. Et klikid lingil ja link avab uues aknas. Uhke vÀrk! VÔi siis mitte.

Nii ei tohi teha! Sest:

  1. Target on keelatud atribuut xHTML1.1-s
  2. Uus aken katkestab nn normaalse sirvimise, sest inimene ei saa kasutada enam “Tagasi”-nuppu. “Tagasi” nupp on ĂŒks peamisi nuppe sirviku kasutamisel.
  3. Ideaalses maailmas on uue akna avamine pigem JavaScripti töö, sest HTML, kui informatisooni kirjeldamise keel, ei pea sellega tegelema. Tiluliluga tegeleb meil ju ikkagi enamasti JavaScript

Ilusat veebi!*

**********
selleks peate kĂŒll .ee lĂ”puga domeenidest eemale vaatama :P

Kommentaarid: ĂŒks

I save people from Internet Explorer – vahva FB leheke

Facebooki leht, mis kogub kokku infot, mis avalikustab Internet Exploreri valetamised, inimese mĂ”nitamised ja propaganda. LĂŒkkame ĂŒhekoos asja kĂ€ima!

http://www.facebook.com/pages/I-save-people-from-Internet-Explorer/135357179850125

Kommentaarid: puuduvad

b vs strong vs font-weight: bold

Teretulemast tagasi, tore teid jÀlle siin nÀha!

TÀna on temaks paksud. Kolm paksu. Naist. Kui tahate. Ehk siis mÀrgend b, mÀrgend strong ja CSS-i kÀsk font-weight ja tema vÀÀrtus bold;.

Esimene, kĂ”ige vanem, on b. B nagu bold. Inglise keeles vĂ”idakse teda kĂŒll viisakusest julgeks (bold ing. k) kutsuda, eestlased, julmad nagu nad on, ĂŒtlevad kohe tĂ”e nĂ€kku — rasvane. Ehk siis mĂ€rgend, mis ei oma mitte mingit semantilist vÀÀrtust, teeb teksti lihtsalt rasvaseks. Julgeks, boldiks, kui tahate. Puhtkujunduslik. CSS-iga tema kujundust muuta ei tohiks saada.

Teine naine, kes kah peidab end valeliku nime taha, on strong ehk tugev. Eestlased nimetavad jĂ€llegi nii, nagu kohane — rasvane. Mhmh. Omab semantilist tĂ€hendust — kasutatakse rĂ”hutamiseks. Matemaatikatunnis kasutades on vĂ”rdvÀÀrne tugeva joonega reegli all. Ehk siis annab teada, et tegemist on vĂ€ga olulise infoga. See, et ta teksti tavaliselt rasvaseks teeb, on tegelikult vaid nibin-nabin, ta vĂ”ib selle vabalt teha ka punaseks, selle alla joonida vĂ”i ĂŒldse erilisest kujundusest ilma jĂ€tta — kannatab CSS-ga kujundamist.

Viimane, vast ehk kĂ”ige noorem — font-weight: bold. Lihtne CSS-i effekt, mis teeb teksti rasvaseks. Nagu CSS ikka, ei oma semantilist vÀÀrtust. MĂ€rgendi b kaasaegne versioon.

KokkuvĂ”tteks — kui tahate midagi rĂ”hutada, sest see on informaatilises mĂ”ttes oluline, kasutage strong-i. Kui soovite midagi rasvaseks teha, et see ilus oleks, kasutage font-weight: bold;-i. VĂ”i siis b-mĂ€rgendit.

Nii lihtne see ongi.

Minge nĂŒĂŒd, mu lapsed, vĂ€rvilisi lehti korjama.

Kommentaarid: puuduvad

Mul on unistus…

Kui Martin Luther King, Jr., oleks veel elus ja ta teeks veebi, tĂ”staks ta hetkeks silmad HTML-lt ja teataks pettunult, kui kindlalt: “Mul on unistus — et tuleb aeg, mil veebidisain tĂ€hendab sisu kujundamist, mitte sisu kujundusse sobitamist”.

Kommentaarid: puuduvad

Pildid veebilehel. MÔned veel.

Suure hurraaga ja eneseimetlusest tĂ€itununa unustasin ma eelmisel korral rÀÀkida tegelikult ĂŒldse sellest, millest ma tegelikult tahtsin rÀÀkida. MÀÀÀ!

Graafilised elemendid versus pildid.

Kujunduslikud elemendid versus pildid.

Alatihti on nii, et veebileht on kĂŒll graafikast lookas, kuid lehel pole tegelikult mitte ĂŒhtegi pilti, mis tegelikult ka pildi eesmĂ€rki tĂ€idaks — et oleks visuaalseks infokandjaks. Pahatihti on leht tĂ€is obstsöönnseid ĂŒmmargusi ÀÀri (sest internetiturundajad ei saa ikka veel aru, et veebileht on infokandja, mitte plagu ja see, et leht on erinevate brauseritega pisut erinev, ei huvita mitte kedagi peale internetiturundaja enda. Ehk siis border-radius *) mistĂ”ttu on lehe kood tĂ€is img-mĂ€rgendeid. Lisaks veel ikoonid, nupukesed, raamid, varjud jne.. Need ei ole sellised pildid, mis tuleks kirjutada koodi img mĂ€rgenditega. Need on visuaalsed jubinad ja peavad rangelt olema hoitud kujundusest lahus. CSS-s. Seal on nede kodu, kindlus ja varjupaik. Muidugi vĂ”ib nad saata ka kibuvitsa pÔÔsasse nagu kaasaegne maailm. Aga millal enne oleme me milleski eesrindlikud olnud :P

NĂŒĂŒd saan rahuliku sĂŒdamega magama minna.

Kommentaarid: puuduvad

Pildid veebilehel

Minimalism ruulib. White space ruulib. Aga mitte kÔigi arvates.

Paljudes kujundustes, eriti just kodumaal, on veebilehed graafikast lookas — lehe koodi vaadates tundub, et enamik koodist moodustavad div-id ja img-d. Noh, maitse asi… Aga kui tĂ”esti ei ole vĂ”imalik seda graafilist virr-varri tagasi tĂ”mmata, siis tuleks kasutada sellist lĂ€henemist, et need graafikatĂŒkikesed, mis ei oma mitte mingisugust informatiivset vÀÀrtust, meile ette ei jÀÀks. Ehk — hoiame kujunduse ja sisu lahus. Ehk siis — kujundusliku graafika koht ei ole HTML-is.

Nagu mis mÔttes?!

jah, just nii ongi.

Vaadakem nĂ€idet aegunud, kuid oh! kui popist, ĂŒmmarguste ÀÀrtega kastikesest (reaalsest elust):

<div style="background: url(graafika/bg-kastikene.gif) repeat-y 0 0">
	<div><img src="graafika/p2is.gif" alt="" /></div>
	<h1>Pealkiri</h1>
	<p>Sisutekst</p>
	<div><img src="graafika/jalus.gif" alt="" /></div>
</div>

Mida me nÀeme? Et lehel on pealkiri, sisu, mille ees ja jÀrel on pildid. Mis pildid? Ei tea, sest seda pole mÀrgitud. Mina tean, et ma ei tahagi teada, mis pildid, aga otsimootorid ja ekraanilugejad ei tea, nemad arvavad siiani sinisilmselt, et tegemist on oluliste piltidega.

Kuidas siis teha seda asja viisakamalt?

1-2-3:

<div class="kastikene">
	<div class="p2is"></div>
	<h1>Pealkiri</h1>
	<p>Sisutekst</p>
	<div class="jalus"></div>
</div>

CSS:

.kastikene {
	background: #FFFFFF url(graafika/bg-kastikene.gif) repeat-y 0 0;
}
.kastikene .p2is {
	background: #FFFFFF url(graafika/bg-kastikene-hf.gif) no-repeat 0 0;
	height: 10px;
}
.kastikene .jalus {
	background: #FFFFFF url(graafika/bg-kastikene-hf.gif) no-repeat 0 100%;
	height: 5px;
}

Mis siis nĂŒĂŒd muutus — kadus Ă€ra graafika, seega ei nĂ€e neid ebaolulisi pilte enam masinad. Inimesed aga kĂŒll, sest pildid on lisatud pĂ€ise ja jaluse taustaks. Hundid söönud, lambad terved.

Kui te tÀhelepanelikult vaatate, kujundatakse kastikene kahe failiga:
bg-kastikene-hf.gif — see on pilt, milles on kastikese pĂ€isekujundus ja jalusekujundus. neid kasutatakse vajalikus kohas tausta positsioneerimisega (0 0 = 0 pikslit vasakult, 0 ĂŒlevalt versus 0 100% = 0 pikslit vasakult, 0 pikslit alt ÀÀrest). See on selline vahva nĂ”ks, millega hoitakse kokku natuke lehe laadimise aega, sest serverisse ei tehta kahte pĂ€ringut, vaid ĂŒks.

KokkuvĂ”ttes — kui pildil ei ole mitte mingisugust sisulist vÀÀrtust, pangem ta CSS-i! Muidugi on inetu tekitada tĂŒhjasid div-e igale poole, aga sinna pole midagi parata :( JÀÀb vaid loota, et meie kujundajad hakkavad jĂ€lgima kaasaegseid kujundustrende :) MĂ€rke sellest juba on!

Kommentaarid: puuduvad

Inputide kujundusest ja kujundamisest

Kui ma saaks iga korra eest kaks rubla, mil ma tĂ”den, et input[type=text] ja input[type=submit] tĂ”lgendavad neile omistatud CSS-i kuidagi erinevalt (olenemata sellest, et nad kĂ”ik on inputid), oleksin ma juba miljonĂ€r! Ma tean, et paddingute ja borderitega saab nad ajada pea-aegu et ĂŒhesuuruseks, aga igas brauseris see korraga ei Ă”nnestu.

Ühel kuumal suvapĂ€eval, eila, vĂ”tsin kĂ€tte ja hakkasin uurima, et no mis kuradi kamm sellega siis ikkagi on — kas brauserid lisavad salamahti mingeid kĂ”rguseid ja laiusi vĂ”i mida paganat? Ja ahaa! Ma sain jĂ€lile suurimale hĂ€bipekile, mis peale IE6-te on kunagi vĂ€lja lastud!

Nimelt — Veebikonsortsium ei ole tĂ€psustanud, mis moodi peab arvutatama input-ide suurust — kas kĂŒmne piksli kĂ”rgune kastike on 10 piksline ka siis, kui tal on ĂŒhe piksline raam ĂŒmber vĂ”i on ta siis 12 piksline (10px + 1px ĂŒlemine raam + 1px alumine raam) jÀÀb kĂ”igi endi otsustada — ja brauseritootjad kĂ€sitlevadki asja nii nagu nemad heaks arvavad. HĂ€bivÀÀrne on selle kĂ”ige juures aga brauseritootjate tegevus — nimelt on nad implementeerinud erinevatele inputide tĂŒĂŒpidele erinevad reeglid. NĂ€iteks input[type=text] kĂ”rgusele arvutatakse kĂ”ik paddingud ja raamid juurde, seevastu input[type=submit] puhul aga seda ei tehta — suurus jÀÀb samaks ka siis, kui lisatakse paddingud ja raame. Ehk siis:

input[type=text] {
	height: 10px;
	padding: 2px;
	border: 1px solid #000000;
}
Tekstisisestuskasti kÔrguse arvutamise nÀide

Kui kĂ”rge on ĂŒlalolev kastike? 10px vĂ”i 16px? Just, 16px.

Aga kui kÔrge on see sisestusnupp:

input[type=submit] {
	height: 10px;
	padding: 2px;
	border: 1px solid #000000;
}
Esitussnupu kÔrguse arvutamise nÀide

10 pikslit. Vahva, kas pole?

Miks see nii on, ma ei tea.

Mis on lahendus?

Õnneks on olemas CSS-s kĂ€sk box-sizing, millel on olemas kaks erinevat vÀÀrtust: border-box ja content-box.

border-box tÀhistab meetodit, mil elemendi kÔrgus jÀÀb alati defineeritud kÔrguseks, see saavutatakse raamide ja paddingu (polsterduse?) lisamisel nii, et sisu suurus vÀheneb nende suuruse vÔrra (10 pikslisele kastile 1 pikslise raami lisamisel on sisu 9 piksline).
content-box tĂ€histab meetodit, mil kĂ”ik lisavidinad lisatakse defineeritud kĂ”rgusele (10 pikslisele kastile 1 pikslise raami lisamisel on sisu 10 piksline, kuid kogu element suureneb 1 piskli vĂ”rra igast kĂŒljest; elemendi kĂ”rgus ja laius suureneb 12 pikslini).

Ehk siis — input[type=submit] kasutab vaikevÀÀrtusena border-boxi, seevastu input[type=text] aga content-boxi.

NĂŒĂŒd, kui me saime teada, milles on asi, vĂ”ime me ĂŒtelda stiililehes, et kĂ”ik elemendid kasutaks ĂŒhtset meetodit. Ehk siis:

input, button, textarea {
	box-sizing: content-box; /* Opera, Internt Explorer */
	-webkit-box-sizing: content-box; /* Safari, Chrome */
	-moz-box-sizing: content-box; /* Mozilla pere ja muuud loomad */
}
CSS-i nĂ€ide, kuidas kĂ”ik inputid, textaread ja nupud panna kasutama ĂŒhtset suuruse arvutuse meetodit

Ja ongi elu ilusam!

Ja ĂŒks asi veel!

Minu prohvesionaalne soovitus on kasutada content-box-i, sest sellisel juhul ei “lĂ”igata” nuppude jne tekste poolikuks, kui nupu kĂ”rgus on vĂ€iksem, kui teksti kĂ”rgus — Opera on hetkel ainuke, kes teksti ĂŒritab igal juhul alati vertikaalselt keskele paigutada, teised lĂ”ikavad lihtsalt tĂ€htedelt jalad alt, hoolimata sellest, et ruumi teksti ĂŒles oleks lĂŒkata. Kummalisel juhul on minu arust Opera kĂ€itumine vigane — kui mul on selge numbriga ĂŒteldud, et padding-top on 10px, siis miks ta sellele vilistab, kui mul on liiga madal nupp? Eksole?

さよăȘら

Kommentaarid: puuduvad

Aamen!

Social media "experts" vs web developers

Tegijad vs rÀÀkijad

Kommentaarid: puuduvad

Linkide seisud (states) ehk LoVe/HAte, Fucker!

See tund pidi olema puhtalt lingiseisust focus ja kuidas see on tÀielikult tabusesisuses. Kuid kuna teema on tabu, siis peaksime vaatama asja natuke kaugemalt, et oleks vÀhem piinlikust.

Linkidel on 5 seisu, millest kaks on vĂ€ga levinud, neli on saavutanud mĂ”istliku leviku ja ĂŒks on tĂ€iesti seina ÀÀrde naelutatud — need on link, visited, hover, active ja focus. focus neist siis kĂ”ige vĂ€hem, link ja hover kĂ”ige enam levinud.

TĂ€histavad nad siis lingi tavaseisu ehk a:link, kĂŒlastatud seisu (lehel on kĂ€idud, sirvik teab seda) ehk a:visited, kursor-ĂŒle seisu (kursor ĂŒle lingi) ehk a:hover, aktiivset seisu (linki on klĂ”psatud) ehk a:active ning fookuses seisu (tabulaatoriga vms on link fookusese pĂŒĂŒtud) ehk a:focus.

Fookus-seis vĂ”ib esmapilgul tunduda vĂ€hevÀÀrtuslik, ebaoluline, kuid tegelikult on ta ÀÀrmiselt oluline — visake oma hiir vastu seina puruks ja katsuge veebilehel liigelda tabulaatorit, hÀÀljuhtimist vms sĂŒsteemi kasutades… Raske? Usun. On inimesi, kes kasutavad tabulaatorit veebilehel ringi liikumisesks, sest nende parem kĂ€si ei ole niipalju treenitud, kui enamikul. RÀÀkimata telefonidest, mis nooltega navigeerides hĂŒppavad lingilt-lingile. Selleks ongi vaja fookus-seisu. See on kĂ”ik kasutusmugavus ja kĂ€ttesaadavus, kallis! Ärgem unustagem, et veeb peab olema kĂ€ttesaadav kĂ”igile!

VĂ€hesed teavad, et CSS mÀÀrab salaja Ă€ra CSS-kĂ€skude prioriteedi. TĂ€psemalt defineeritud element on alati tĂ€htsamal kohal, kui ĂŒldiselt defneeritud:

p {
	color: #333333;
}
p.black {
	color: #000000;
}
CSS-i prioriteetide nÀide

Ehk siis p.black kĂ€sud on alati tĂ€htsamad, kui lihtsalt p omad, sest teda on spetsiifiliselt kirjeldatud. Ehk siis KÕIK lehel olevad paragrahvid on tumehallid (#333333), aga kui mĂ”nel on tĂ€psustav klass, id, seis (jah, seisud kehtivad igale elemendile, mitte ainult linkidele) vĂ”i kui elemnti on tĂ€psustatud kuidagi spetsiifilisemalt, kirjutatakse see ĂŒle.

Kuidas saab tĂ€htsust muuta, kuulen ma publikust — kirjutage kĂ€sule jĂ€rele !important ehk siis:

p {
	color: #333333;
}
p.gray {
	color: #666666 !important;
}
p.gray {
	color: #333333;
}
CSS-i vaikeprioriteetide ĂŒlekirjutamine

NĂ€ide, mida vahel harva vast ette tuleb, aga siiski nĂ€ide; mis nĂ€ites toimub? Defineeritud on kaks ĂŒhesuguse prioriteediga klassi ning vaikimisi saab kĂ”rgema tĂ€htsuse alati viimane esinev klass, kuid kuna me tĂ€psustasime Ă€ra, milline vÀÀrtus on olulisem, sai meie tĂ€psustatud vÀÀrtus kohe kĂ”rgeima prioriteedi ja seetĂ”ttu on kĂ”ik tekstilĂ”igud, millel klassiks gray vĂ€rvikoodi #666666. Lihtne, eksole?

Aga miks ma sellest rÀÀgin?

Aga selleks, et aru saada, mis moodi tuleb kirja panna linkide seisud. Nimelt ei ole lingide seisudel erinevaid prioriteete — ei ole nii, et a:hover on alati kĂ”vem, kui a:visited jne. SeetĂ”ttu tuleb linkide seisud kirjutada alati ĂŒhes jĂ€rjekorras, et ĂŒks neist teist ĂŒle ei kirjuta ehk tekitame neile ise Ă”iged prioriteedid.

Esiteks on meil tÀiesti tavaline link, millega pole veel mingeid trikke tehtud. Tema vÀrv on must.

a:link {
color: #000000;
}

Teiseks paneme me kĂŒlastatud lingi. Sest ta on juba pisut trikke teinud ja justnagu kord juba sĂŒĂŒtuse kaotanu, ei saa ta kaotust tagasi teha — st ta ei saa enam kunagi tagasi lihtsalt lingiks, ta saab minne vaid edasi. VĂ€rvime tema tumehalliks.

a:visited {
	color: #333333;
}

JĂ€rgmiseks on meil kursor-ĂŒle seis, sest nii link, kui ka visited saavad mĂ”lemad omastada sellise seisu. Olgu tema meil lihtne hall.

a:hover {
	color: #666666;
}

Neljas, ehk aktiivne seis on tegelikult kĂ”ige prioriteetsem seis — teda ei saa miski ĂŒle kirjutada. Aga kuna me juba saime teada, et linkide seisudel ei ole prioriteeti, siis ikka saab kĂŒll. Aga meie paneme ta selle ohu vĂ€ltimiseks viimaseks, sest nii muutub ta kĂ”ige tĂ€htsamaks.

a:active {
	color: #333333;
}

Aga Focus!?
Rahu!

Siin on vĂ€ike mööndus. Nimelt. Aegade algusest ei ole inimesed pĂ€ris aru saanud, mis seis kĂ€ib kuhu. Et asja vĂ€ga selgeks teha, tegid inglise keelt kĂ”nelevad veebimeistrid endale sprikri: nad vĂ”tsid kaks sĂ”na mis vastandusid ĂŒksteisele ja lihtsalt meelde jÀÀvad ning kasutasid neid alatult Ă€ra — LoVe/HAte. Saate aru? L(ink)oV(isited)e/H(over)A(ctive)te. Lihtsalt meeldejÀÀv. Aga seal pole ĂŒhtegi F-i focus jaoks :(? Japp. Seep see on. Seega lisasid julgemad selle seisu kĂ”ige lĂ”ppu ja leidisd sĂ”na, mis seda meeles aitaks pidada*. Kui tegelikult tĂ€iesti siiras olla, siis peaks focus tulema pĂ€rast hover seisu, sest sellises seisus link saab omastada kursor-ĂŒle seisu, kuid mitte active seisu. Saate aru? Tabulaatoriga fookusesse aetud lingist saab kursoriga ĂŒle sĂ”ita, erinevalt aktiivsest lingist.

Mida siis teha?

Tegelikult ei olegi see niivĂ€ga oluline — lingid muudavad enda vĂ€limust vastavalt seisule ja see on hea, sest nii saab kĂŒlastaja aru, mis toimub. Kas fookus tuleb enne vĂ”i pĂ€rast aktiivset seisu ei mĂ€ngi tegelikult vĂ€ga suurt rolli, sest aktiivset seisu me peaagu ju et ĂŒldse ei nĂ€egi niikuinii.

Kuidas kirjutada lingi seise, lihtsa elu nÀitel:

a:link, a:visited {
	color: blue;
	text-decoration: underline;
}
a:hover, a:active,  a:focus {
	color: red;
	text-decoration: underline;
}
Linkide seisude nÀide, nopitud elust enesest

JÔudu tarvis!

************

Tegelikult olin see inglise keelt kÔnelev veebimeister mina, kes vÔttis julguse rindu ja kasutas fookuse seisu jaoks hirmsat ja roppu f-tÀhega algavat sÔna.
Fucker, fucker, fucker, fucker! F-f-f-focus!

Kommentaarid: puuduvad