Aulikki Hyrskykari Antti Sand
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 Lokeromallia kehystykset, taustakuvat o Visuaalinen sommittelu rautalankamallit asemointi o Mukautuva suunnittelu responsiivinen suunnittelu
margin-left border-left padding-left padding-right border-right margin-right Sisältö (content) Täyte (padding) margin-top border-top padding-top ELEMENTIN SISÄLTÖ (content area) 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ä väritetty 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:collapse;
border-spacing:20px 5px; Solujen väliin jätettävää tilaa o voi säädellä solun täytteen (padding) 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 )
Ajatuksena kelluttaa kukin palsta vasemmalle edellisen palstan viereen.. palsta1,. palsta2,.palsta3 { width: 300px; float: left; margin: 10px; 960px
Kiinteässä asettelussa o elementit eivät mukaudu ikkunan koon muutokseen o elementtien mitat annetaan pikseleinä tai em-yksikköinä Skaalautuva sommittelussa o elementit venyvät ikkunan koon muutoksen mukaisesti o elementtien mitat annetaan prosentteina Entä jos sisältö ei mahdu? o overflow: visible hidden scroll auto ts. jos sisältö ei mahdu: annetaan value yli, leikataan, elementissä on vierityspalkit tai vierityspakit tuodaan automaattisesti tarvittaessa
Elementtien sijoittelun parempi kontrolli + rivin pituuden kontrollointi reunojen tyhjät tilat Jos käyttäjä muuttaa kirjasinkokoa, muutos saattaa aiheuttaa ongelmia o Sivun saa mukautumaan selainikkunan kokoon + sisältö kutistuu pieneen näyttöön leveässä näytössä helposti hankalan pitkiä rivejä o Sommittelu saattaa muuttua paljon ajatellusta»min-width, max-width: CSS piirteiden avulla edelliset voi yhdistää elastiseksi sommitteluksi (liquid layout)
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 perusteella
@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/
Ruudukoita (gridejä) käytetään sommittelussa yleisesti Valokuvissa tasapainon tai jännitteen luomiseksi Kolmanneksen sääntö (Rule of third s) yleinen sommitteluohje o 3x3 ruudukon risteyskohdat kuvan kannalta tärkeitä
JWT 2015 Aulikki Hyrskykari, Antti Sand, SIS, UTA
oetuja sivuston sivujen kesken yhtenäisempi vaikutelma tukee käyttäjää etsitty informaation etsinnässä (lisää ennustettavuutta) helpottaa uuden sisällön lisäämistä 12 x 60 px palstat, 20 px etäisyydellä toisistaan, sivuilla 10px marginaalit
Huom! sekä container_12 että gid_n luokka Esimerkiksi 12 palstaa:.container_12 { margin-left: auto; margin-right: auto; width: 960px;.container_12.grid_4 { width: 300px;.container_12.grid_6 { width: 460px; <section class="container_12 grid_4"> leveyteni on 1/3 sivusta </section> <section class="container_12 grid_4"> leveyteni on 1/3 sivusta </section> <section class="container_12 grid_4"> leveyteni on 1/3 sivusta </section> <div class="clear"></div> <section class="container_12 grid_6"> leveyteni on 1/2 sivusta </section> <section class="container_12 grid_6"> leveyteni on 1/2 sivusta </section>
o Edellinen tuottaisi sivulle 10 px 20 px 20 px leveyteni on 1/3 sivusta leveyteni on 1/3 sivusta leveyteni on 1/3 sivusta 10 px leveyteni on 1/3 sivusta 20 px leveyteni on 1/3 sivusta 4/14/2015
Mahdollistaa erilaisia sommitteluja