Demo 6 - CSS-asemointi, vaihtoehtoiset tyylitiedostot ja mediakyselyt

Mallivideot

Videot eivät sisällä ääntä.
Ongelmia videon katselussa?

Näissä demoissa opetellaan sivun asemointia CSS:llä sekä erillisten tyylitiedostojen ja mediakyselyiden käyttöä.

Sivun asemointi CSS:llä käyttäen float-ominaisuutta

Esimerkkikuva float-asemoinnista

Tässä tehtävässä on tarkoitus tehdä vaiheittain oikealla näkyvän kuvan kaltainen sivun asemointi käyttäen hyväksi CSS:n float-ominaisuutta.

XHTML-sivun tekeminen pohjalle

  1. Tee W-asemallesi opetusteknologia/demot-hakemistoon kansio nimelle demo6.
  2. Aloita tekemällä tyhjä XHTML-sivu, jossa on standardin mukainen XHTML-dokumentin rakenne. Anna dokumentin nimeksi float.html.
  3. Määritä dokumentti käyttämään float.css-nimistä tyylitiedostoa samasta kansiosta, missä float.html-tiedostokin sijaitsee (tyylitiedosto tehdään myöhemmin tässä tehtävässä).
  4. Lisää dokumenttiin seuraavan nimiset div-lohkot (laita nimi lohkon class-attribuutin arvoksi) ja niihin sisältöä (tekstiä) esimerkiksi mallikuvan mukaisesti. Sisältölohkossa kannattaa käyttää p-elementtiä kappalejakoon. Myös navigointilohkoissa voit käyttää p-elementtiä rivittämään linkkitekstit omille riveilleen. Lohkojen järjestys XHTML-koodissa tulee olla seuraavan listan kaltainen.
    • ylatunniste (sisältää ylätunnisteen sisällön)
    • vasennavi (sisältää vasemman navigointipalkin sisällön)
    • sisalto (sisältää sivun varsinaisen sisällön)
    • oikeanavi (sisältää oikean navigointipalkin sisällön)
    • alatunniste (sisältää alatunnisteen sisällön)
  5. Voit lisätä sivulle vielä sivua kuvaavan title-elementin.

Tyylitiedoston tekeminen

  1. Luo tyhjä tyylitiedosto nimelle float.css.
  2. Tee tyylitiedostoon vastaavan nimiset luokat, jotka annoit div-lohkoille. Tyylitiedostoa kannattaa muokata esimerkiksi edellisten demojen tapaan Web Developerin Edit CSS -valinnan avulla ja tallentaa lopussa muutokset myös itse tyylitiedostoon.
  3. Muotoillaan ensin ylatunniste-luokkaa. Laita luokalle taustaväriksi #FFFF99 ja leveydeksi 98%. Täyte (padding) tulee olla ylhäällä ja alhaalla 0.5em. Vasemmalla ja oikealla täytteen tulee olla 1% (näin viedään kokonaisuudessaan koko selainikkunan leveys). Marginaalit (margin) kannattaa nollata varmuuden vuoksi.
  4. Muotoillaan seuraavaksi vasenta navigointipalkkia (vasennavi). Se on tarkoitus liu'uttaa selainikkunan vasempaan reunaan, joten laita float-arvoksi left. Taustaväriksi laita #99CCFF ja leveydeksi 23%. Täyte (padding) tulee olla ylhäällä ja alhaalla 0.5em. Vasemmalla ja oikealla täytteen tulee olla 1% (näin viedään kokonaisuudessaan 25% selainikkunan leveydestä). Marginaalit (margin) kannattaa nollata varmuuden vuoksi.
  5. Muotoillaan seuraavaksi sisalto-luokkaa. Luokka on tarkoitus liu'uttaa vasemman navigointilohkon viereen, joten laita sillekin float-arvoksi left. Taustaväriksi laita #CCCCFF ja leveydeksi 48%. Täyte (padding) tulee olla ylhäällä ja alhaalla 0.5em. Vasemmalla ja oikealla täytteen tulee olla 1% (näin viedään kokonaisuudessaan 50% selainikkunan leveydestä). Marginaalit (margin) kannattaa nollata varmuuden vuoksi.
  6. Muotoile seuraavaksi oikeanavi-luokka kuten vasennavi-luokka. Ainoastaan taustaväriä tarvitsee muuttaa. Laita taustaväriksi #FF99CC. Huomaa, että oikea navigointipalkkikin siis tulee liu'uttaa vasempaan reunaan, jotta kaikki kolme lohkoa saadaan rinnakkain. Yhteensä lohkot vievät koko selainikkunan verran (100%) tilaa leveyssuunnassa.
  7. Muotoile lopuksi alatunniste-luokka kuten ylatunniste-luokka. Muuta taustavärin arvoksi #66FF99. Lisäksi laita luokalle clear-ominaisuus, jonka arvo laita siten, että luokan kummallekaan puolelle ei saa tulla muita lohkoja.

Nyt sivusi pitäisi olla suunnilleen mallikuvan kaltainen. Validoi tuottamasi XHTML- ja CSS-koodit ja korjaa mahdolliset virheet. Testaa sivua selaimella.

Sivun asemointi CSS:llä käyttäen position:fixed-arvoa

Esimerkkikuva position:fixed-asemoinnista

Tässä tehtävässä on tarkoitus tehdä vaiheittain oikealla näkyvän kuvan kaltainen sivun asemointi käyttäen hyväksi CSS:n position:fixed-arvoa. Ylä- ja alatunniste sekä molemmat navigointipalkit on asemoitu kiinteästi selainikkunaan, eli sivun varsinainen sisältö näkyy "kehyksien" sisällä ja siinä voi liikkua selainikkunan vierityspalkkien avulla.

XHTML-sivun tekeminen pohjalle

  1. Tallenna edellisessä tehtävässä tekemäsi XHTML-tiedosto nimelle fixed.html.
  2. Voit muuttaa lohkojen järjestyksen siten, että tärkeimmät tiedot ovat XHTML-tiedostossa ylimpänä (esimerkiksi sisalto-lohko ylimmäksi). position:fixed-arvoa käytettäessä lohkojen järjestyksellä ei ole merkitystä, joten järjestys kannattaa miettiä "tärkeysjärjestykseksi" esimerkiksi ruudunlukijoita (voivat lukea sivua ylhäältä alas) ja div-lohkoja ymmärtämättömiä selaimia varten.
  3. Poista sisalto-lohkon div-elementti, mutta jätä sen sisältö ennalleen (eli tekstikappaleet ovat muutoksen jälkeen suoraan body-elementin "lapsia").
  4. Muuta dokumentti käyttämään fixed.css-nimistä tyylitiedostoa samasta sijainnista, missä fixed.html-tiedostokin sijaitsee (tyylitiedosto tehdään myöhemmin tässä tehtävässä).
  5. Voit muuttaa vielä title-elementin arvon sivua kuvaavaksi.
  6. Muita muutoksia ei tarvitse tehdä - lohkojen nimet, sisällöt yms. saavat pysyä entisellään.

Tyylitiedoston tekeminen

  1. Tallenna edellisessä tehtävässä tekemäsi CSS-tiedosto nimelle fixed.css.
  2. Muokataan ensin ylatunniste-luokkaa. Kaikki jo olemassa olevat arvot saavat jäädä luokkaan. Lisää luokalle position-ominaisuus ja anna sen arvoksi fixed. Sijoita lohko alkamaan selainikkunan vasemmasta yläkulmasta (anna sopivat top- ja left-arvot). Anna lohkolle korkeudeksi 3em.
  3. Muokataan seuraavaksi alatunniste-luokkaa. clear-ominaisuuden voit poistaa, muut jo olemassa olevat arvot saavat jäädä. Määritä luokalle position:fixed-arvo siten, että lohko alkaa näytön vasemmasta alareunasta. Anna lohkolle korkeudeksi 3em.
  4. Seuraavaksi muotoillaan vasennavi-luokkaa. Poista luokalta float-ominaisuus ja muuta leveydeksi 15%. Lisää luokalle position:fixed-ominaisuus siten, että top-arvo on 4em ja left-arvo 0%. Näin lohko alkaa heti ylätunnisteen alareunasta. Määritä luokan korkeudeksi 100%.
  5. Tee oikeanavi-luokkaan samat muutokset kuin vasennavi-luokkaan sillä muutoksella, että luokka alkaa näytön oikeasta reunasta (pystysuunnassa edelleen ylätunnisteen alareunasta).
  6. Poista kokonaan sisalto-luokka CSS-tyylitiedostosta.
  7. Määritä CSS-tyylitiedostoon body-elementille seuraavat ominaisuudet: kaikkien reunojen täyte (padding) 0.5em, marginaali (margin) ylhäällä ja alhaalla 4em sekä marginaali vasemmalla ja oikealla 17%. Näin body-elementin sisältö asettuu navigointien sekä ylä- ja alatunnisteiden väliin ilman, että tarvitsee käyttää erillistä luokkaa sisällölle.

Nyt sivusi pitäisi olla suunnilleen mallikuvan kaltainen. Validoi tuottamasi XHTML- ja CSS-koodit ja korjaa mahdolliset virheet. Testaa sivua selaimella.

HUOM! Nyt harjoituksena tehty asemointi, missä kaikki neljä laitalohkoa kiinnitetään näyttöön EI ole yleensä järkevä, sillä näyttöön kiinnittäminen vie turhan paljon tilaa sivun varsinaiselta sisällöltä etenkin pienemmillä näytöillä (esimerkiksi miniläppärit). Järkevämpää olisi siis kiinnittää näyttöön esimerkiksi vain joko vasemman laidan tai oikean laidan lohko ja lisäksi joko ylätunniste tai alatunniste. Muut lohkot voisi laittaa vierimään sivun mukana, jolloin ne eivät vie niin paljon tilaa sivun varsinaiselta sisällöltä.

Eräs käyttökelpoinen tyyli tehdä vastaavia ulkoasuja on käyttää hyväksi reunuksia (border). Ks. vanha WWW-julkaiseminen kurssin demotehtävä.

Vaihtoehtoinen tyylitiedosto mobiililaitteille

WWW-sivuja selataan yhä enemmän kännyköillä ja muilla pienillä vempaimilla. Näiden laitteiden suurin rajoitus on pieni näyttö. Sopivilla CSS-asetuksilla saadaan sivut näkymään hienosti myös mobiililaitteissa.

Pienille näytöille voisi periaatteessa käyttää handheld-mediatyyppiä, mutta koska lähes kaikki vähänkään uudemmat kännykät ilmoittavat mediakseen screen (eli tietokonenäyttö), niin on järkevämpää tehdä vaihtoehtoinen tyylitiedosto (Alternate StyleSheet) mobiililaitteita varten.

Mobiililaitteiden tyylitiedosto käyttöön mediakyselyiden avulla

Jos vaihtoehtoisen tyylitiedoston käyttöönottoon ei toteuta esimerkiksi JavaScriptiä hyödyntävää ratkaisua, jää tyylitiedosto saamatta käyttöön kaikilla niillä selaimilla, jotka eivät tarjoa valikkoa tyylitiedoston vaihtoa varten. Valitettavasti mm. mobiiliselaimet eivät kyseistä valikkoa yleensä tarjoa. JavaScript-toteutukselle vaihtoehtoinen ratkaisu on toteuttaa mobiilityylitiedoston käyttöönotto mediakyselyiden (Media Queries) avulla. Mediakyselyistä löytyy lisää tietoa luennolta 4. Toteutetaan edellisessä tehtävässä luodun mobiilityylitiedoston käyttöönotto mediakyselyiden avulla.

Koska kännyköiden selaimet eivät välttämättä ymmärrä mediakyselyitä, tulee sivun pohjatyylitiedostoksi (kaikille selaimille) linkittää mobiilipuolen tyylitiedosto, minkä jälkeen linkitetään "tavallinen tyylitiedosto" mediakyselyitä ymmärtäviä tietokoneiden selaimia varten. Tavallisessa tyylitiedossa sitten ylikirjoitetaan mobiilipuolen tyyliasetukset "normaaleille" tietokoneiden selaimille sopiviksi.

Tyylitiedosto tulostusta varten

CSS-ulkoasupohjan päälle voi tarvittaessa tehdä lisä- tai muutosmäärityksiä myös print-median (tulostus) tarpeisiin.

Tarkemmin tulostamiseen liittyvistä erikoisasetuksista voit halutessasi lukea W3C:n CSS 2.1 Paged media -sivulta.

Käyttäjien kommentit

Kommentoi tätä sivua Lisää uusi kommentti
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/opetusteknologia/demot/demo6/
© Antti Ekonoja (antti.j.ekonoja@jyu.fi) <http://users.jyu.fi/~anjoekon/>
Tommi Lahtonen (tommi.j.lahtonen@jyu.fi) <http://hazor.iki.fi/>
2012-04-11 11:04:59
Informaatioteknologia - Jyväskylän yliopiston informaatioteknologian tiedekunta