1.4.2014 Aulikki Hyrskykari Edellinen luento o Sääntöjen kohdistaminen (periytyminen, painoarvo) o CSS värit, mittayksiköt o Typografiaa, kirjasinkokojen hallinnasta, webbikirjasimet o Lokeromalli alustavasta Tällä luennolla o Kertausta tekstin muotoilusta o Lokeromallia kehystykset, taustakuvat o Visuaalinen sommittelu rautalankamallit asemointi o Mukautuva suunnittelu responsiivinen suunnittelu
Tekstin kokoa elementissä voi hallita kahdella tavalla oabsoluuttisina kokoina - määrätään absoluuttisen kirjasinkoon käyttäen CSS:n nimettyjä arvoja - xx small, x small, small, medium, large, x large, xx large - tai absoluuttisia mittayksiköitä osuhteellisin mittayksiköin prosentteina tai em/ex mittayksiköillä Suhteellinen joustavampi omuista kuitenkin, että kirjasimen koko on periytyvä ominaisuus - sisäkkäiset elementit Anna ensin dokumentin rungossa tekstille peruskoko säännöllä body { font size=100% o tuottaa useimmissa sealaimissa kirjasinkoon 16px o skaalataan muut elementit suhteessa tähän kirjasinkokoon o esim. kappaleiden kirjasinkooksi 14 px = 14/16em = 0.875em p { font size = 0.875em
@charset "UTF 8"; body { font family: "Palatino Linotype", Palatino, serif; font size: 100%; h1, h2 { font family: "Arial Black", Arial, sans serif; font weight: normal; h1 { /* 22px/16px */ font size: 1.375em; h2 { /* 18px/16px */ font size: 1.1em; p { /* 14px/16px */ font size:.875em; font style: normal italic oblique inherit font variant: normal small caps inherit font weight: normal bold bolder lighter 100 200 300 400 5 00 600 700 800 900 inherit (400 = normal)
text decoration: none underline overline line through blink inherit text align: left right center justify inherit text indent: pituusyksikkö prosentti inherit text overflow: clip ellipsis merkkijono text shadow: none x offset y offset [blur] [väri] text transform: capitalize uppercase lowercase none inherit line height: normal mittayksikkö kokonaisluku prosentti inherit letter spacing: normal mittayksikkö inherit word spacing: normal mittayksikkö inherit white space: normal pre nowrap pre wrap pre line inherit word wrap: normal break word margin top Sisältö (content) Täyte (padding) border top padding top margin left border left padding left ELEMENTIN SISÄLTÖ (content area) padding right border right margin right Reunus (border) Marginaali (margin) padding bottom border bottom margin bottom
Reunuksen paksuus, tyyli ja väri o border width: [thin medium thick mittayksikkö inherit] 1 4 o border style: [none hidden dotted dashed solid double width groove ridge inset outset] 1 4 o border color: [trasparent color inherit] 1 4 Elementtillä 10px levyiset reunat (kaikki reunat): p { border width: 10px; Elementillä katkoviivalla piirretty kehys.kehystetty { border style: dotted Elementillä katkoviivalla piirretty kehys Tämä olisi tulos, jos oheiset säännöt olisi annettuna tämän tekstin sisältävään p elementtiin div { border color: #34fade Kolme edellistä reunuksen piirrettä on mahdollista kirjoittaa yhteen sääntöön seuraavasti: p { border: 10px dotted #34fade; Jos joku tai jotkin kolmesta piirteestä puuttuu ko. piirteelle käytetään oletusarvoa Järjestyksen tulee kuitenkin aina olla yllä annettu (paksuus, tyyli, väri).
valitsin { border width: 5px 15px 25px 35px; border style: inset; border color: blue; width: 30em; piirteellä kaksi arvoa valitsin { border width: 5px 10px; border style: dotted; border color: green; kaksi ensimmäistä piirrettä yhdistetty, kolmannella piirteellä kolme arvoa valitsin { border: 20px groove; border color: green red yellow; Reunuksen eri piirteet voi antaa myös yksittäin elementin eri reunoille.kehys { border width top: 1px; border width right: 10px; border width bottom: 1px; border width left: 50px; Ylläolevan kanssa yhtenevä sääntö olisi siis:.kehys { border width: 1px 10px 1px 50px; Tarve yksittäisen reunapiirteen käyttöön esim. jos halutaan asettaa vain vasen reunus
Täytteen ja marginaalin määritys o vain yksi, mittayksikköarvoinen attribuutti o muuten analoginen reunuksen kanssa opadding: [mittayksikkö] 1 4 omargin: [mittayksikkö] 1 4.harvenna { margin left: 2em; padding: 25px 50px;.kehystetty { border radius: 10px; Eri kulmat voi pyöristää eri tavoin.kehystetty { border: 10px double orange; border radius: 5px 50px 50px 50px;
able, th, td Jos taulukolle annettu css sääntö o piirtyvät reunukset kullekin taulukon solulle erikseen (solujen välissä kaksi viivaa) table, td { border: 1px solid black; Hallinta border collapse piirteen avulla border collapse: collapse separate inherit table, td { border: 1px solid black; table { border collapse:separate; border-spacing:20px 5px; Solujen väliin jätettävää tilaa o voi säädellä normaalisti (solun padding, margin) avulla, tai o tähän tilanteeseen erityisesti: border spacing o vierekkäisten solujen etäisyys toisistaan CSS mittayksiköillä ilmaistuna border spacing: h etäisyys [v etäisyys] inherit table, td { border: 1px solid black; border collapse:separate; border spacing:20px 5px; o jos piirteelle annetaan arvona vain yksi mittayksikkö, horisontaalinen ja vertikaalinen etäisyys ovat yhtä suuret.
Värin määrittelyssä color: värikoodi inherit edustaväri elementin piirtoväri, periytyvä background color: värikoodi läpinäkyvä inherit täyttöväri elementin taustaväri, ei periydy background image: uri none inherit Taustakuva o oletusarvoisesti taustakuva toistuu o sekä horisontaalisesti että vertikaalisesti o sen avulla helppo toteuttaa mm. taustatekstuureja Esimerkki taustakuvan käytöstä Esimerkki kuvan käytöstä tekstuurin luomiseksi Taustakuvan esittämistä voi kontrolloida seuraavilla piirteillä background attachment: scroll fixed inherit taustakuvan pysyminen paikallaan / kuvan liikkuminen sivua vieritettäessä background position: [left righ center top center bottom] [mittayksikkö x mittayksikkö y] taustakuvan vasemman yläreunan piirtopaikka, oletus left top, joka voitaisiin ilmaista myös esim. 0% 0% tai 0em 0em background repeat: repeat repeat x repeat y no repeat inherit taustakuvan mahdollinen toistaminen horisontaalisesti tai (/ja) vertikaalisesti background clip: content box border box margin box inherit rajaa elementistä lokeromallin osaan, johon taustakuva vaikuttaa background size: mittayksikkö taustakuvan koon skaalaus annettuun kokoon Esimerkki kuvan käytöstä taustalla (ei toistoa)
Kaksi vierekkäistä (tai sisäkkäistäkin) elementtiä Vertikaalisuunnassa marginaalit limittyvät o jos molemmat marginaalit positiivisia tai negatiivisia, käytetään itseisarvoltaan isompaa marginaalia Jos marginaalit eri merkkisiä, luvut lasketaan yhteen Horisontaalissa suunnassa limittymistä ei tapahdu Tommy Olsson and Paul O Brien: Collapsing Margins http://reference.sitepoint.com/css/collapsingmargins Andy Budd: No margin for Error http://andybudd.com/archives/2003/11/no_margin_for_error/ Periaate yksinkertainen: o mieti ensin millaisista visuaalisista elementeistä sivusi koostuu o piirrä elementeistä rautalankamalli o kirjoita elementit omiksi osikseen o käytä ensisijaisesti HTML5:n rakenteen määrittelyyn esiteltyjä semanttisia elementtejä o toissijaisesti geneeristä div elementtiä Sen jälkeen voit asemoida elementit sivulle joko o asemointia (position) o kellutusta (float) tai o elementtien näyttötavan kellutusta (display) muokkausta käyttäen
Ajatuksena miettiä o mitä sisältöä sivulla halutaan esittää, ja o miten paljon sille halutaan varata tilaa Rautalankamallin voi o piirtää käsin paperille, o tarkoitukseen löytyy myös erilaisia wireframe, tai protoiluvälineitä: - balsamiq : http://www.balsamiq.com/ maksullinen, mutta hiukan riisuttua versiota pääsee käyttämään ilmaiseksi verkkoversiona: http://builds.balsamiq.com/b/mockups-web-demo/ - Pencil: http://pencil.evolus.vn/default.html open source ohjelma - lista muista vastaavista välineistä: http://designbeep.com/2011/05/12/33-free-andonline-tools-for-drawingpainting-and-sketching/ aside { border: 2px dotted #ce0c39; border radius: 10px ; padding: 1em; background color: #fcd4dd; width: 70%; aside {... position: relative; left: 3em; top: 3em;
aside {... position: absolute; left: 100px; top: 0px; Irroitetaan elementtivirrasta ja asetetaan kiinteään kohtaan äitielementtiään. Koska äitielementti liikkuu sivua vieritettäessä, myös siihen absoluuttisesti sidottu elementti liikkuu. aside {... position: fixed; left: 100px; top: 0px; Irroitetaan elementtivirrasta ja asetetaan kiinteään kohtaan selainikkunassa. Pysyy paikallaan sivua vieritettäessä. Kiinteästi asemoidut elementit voivat mennä päällekkäin o z index määrittää elementin syvyystason o mitä suurempi arvo, sen edempänä syvyystasolla o arvona kokonaisluku, voi saada myös negatiivisia arvoja.edessa { z index: 2; edessä.jaa taakse { z index: 1; takana
aside { float:left; Elementti voidaan kelluttaa horisontaalisessa suunnassa alkuperäiseltä paikaltaa oikealle tai vasemmalle. Koska äitielementti liikkuu sivua vieritettäessä, myös siihen absoluuttisesti sidottu elementti liikkuu. aside { float:left; p.puhdista { clear: left; Kun elementti on otettu irti elementti virrasta, uudelleenasemointi vaikuttaa sen jäljessä tuleviin elementteihin Jäljessä tulevat elementit ottavat käyttöön vapautuneen tilan Vaikutuksen voi eliminoida clear piirteellä. clear: right left both Lohkotason elementti o erotetaan muista elementeistä rivinvaihdolla o varaa iselleen horisontaalisesti tilaa 100% äiti elementtinsä leveydestä. Rivitason elementti o varaa tilaa vain sisällön tarpeen mukainen lokero Jos jatkuu useammalle riville, uudella rivillä se varaa itselleen uuden lokeron Elementit luokittelu lohkotason ja rivitason elementteihin o itse asiassa kyse on piirteen display oletusarvosta o ne elementit, joilla display piirteen oletusarvo on - block luokiteltiin lohkotason elementeiksi (esim. <p>) - inline luokiteltiin rivitason elementeiksi (esim. <strong>) taustakuvan pysyminen paikallaan / kuvan liikkuminen sivua vieritettäessä display: block inline inline block none inherit[..];
Jos esimerkiksi muutetaan o <p>: display piirteen arvoksi inline: peräkkäiset kappaleet kirjoittuvat yhteen o <strong>: display piirteen arvoksi block: vahvennetut tekstinosat erotettaan muista elementeistä rivinvaihdolla inline block elementillä on o lohkotason elementin lokeromalli o silti se käyttäytyy muuten kuten rivitason elementti (ei erotu muista elementeistä rivinvaidolla) none yhdessä jonkin skriptikielen kanssa käytettynä hyödyllinen o elementti voidaan kääntää näkymättömäksi o näkymätön elementti ei varaa tilaa elementtivirrasta o dokumentti käyttäytyy kuten elementtiä ei olisi lainkaan olemassa. display piirteellä on iso valikoima muitakin arvoja, mm. o elementti voidaan saada käyttäytymään kuten listan rivi, o taulukko o jokin taulukon osa (rivi, sarake, solu, otsikko ) Ethan Marcot: Responsive Web Design (2010) o antoi nimen ja kirjoitti näkyväksi periaatteet, joita CSS3:n uusi mediakyselymahdollisuus antoi. Periaate o aiemmin käytäntönä pyrkiä luomaan sivuista erilliset mobiiliversiot o laitteistokirjon kasvaessa kestämätön käytäntö sivuston sisällöstä kirjoitetaan vain yksi versio lineaariseksi elementtien virraksi mediakyselyiden hyväksikäyttäen voidaan tilanteen mukaan tuottaa samasta sisällöstä kullekin laitteelle sopiva visuaalinen sommittelu Resposive Design ajatuksen muunnelmia (sama perusajatus) o progressive design, content focused tai mobile first suunnittelu Sivun sisällön esittämiselle suunnitellaan erilliset rautalankamallit riippuen sen laitteen ominaisuuksista, jolla sivua katsotaan Rautalankamallit toteutetaan omina CSS tiedostonaan, ja valinta kulloinkin käytettävästä CSS tiedostosta tehdään mediakyselyn antaman vastauksen
@media media type [and (media feature experssion)] * Mediakyselyt moduuli on valmis CSS3 standardi (W3C Recommendation 19 June 2012) Mediakyselyä voi käyttää kuten valitsinta, esimerkiksi @media screen and (max device width: 480px) {.column { float: none; Tai yhdistää myös <link> elementtiin, jolloin sen avulla voidaan valita koko käytettävä tyylipohja, esimerkiksi: <link rel="stylesheet" type="text/css" media="screen and (max device width: 480px)" href="mobiili.css" /> Voidaan tiedustella selaimelta ovatko tietyt ehdot voimassa o siinä ympäristössä, jossa dokumenttia ollaan esittämässä. o tiedustellaan ensin laitetta: mediatyyppi, (media type) o sen jälkeen yhden tai useammman mediapiirteen (media feature expression) voimassaoloa Mediatyypit: Mediapiirteet: screen, braille, embossed, handheld, print, projection, speech, tty ja tv.
http://todomvc.com/ http://snl.no/ http://foodsense.is/tastemakers http://bahs.com/ http://stuffandnonsense.co.uk/ Tähän asti on käsitelty miten WWW sivuja käytetään tiedon välittämiseen käyttäjälle. Lomakkeiden avulla voidaan saada tietoa toiseen suuntaan, käyttäjältä sivun julkaisijalle. Lomakkeet ovat keskeinen osa vuorovaikutteisten verkkopalvelujen toteuttamisessa, esimerkiksi o hakukoneet o verkkokaupat o informaatiopalvelut (kirjastot, tietokannat jne.) o www pohjaiset sähköpostipalvelut o mielipidekyselyt o tapahtumiin, kursseille yms. ilmoittautumiset