HTML & CSS aloittelijoille

HTML & CSS aloittelijoille (Osa 21): Semantiikka verkkoon (4)

Kaikki oppaan videot HTML ja CSS aloittelijoille

Tässäkin opetusohjelman alussa haluaisin taas muistuttaa, ettette saa odottaa esitetyiltä elementeiltä mitään ihmeitä. Ulkomuodollisesti ne eivät nimittäin vielä tee paljoakaan vaikutusta. Ne ovat kuitenkin mielenkiintoisia sen kannalta, että voitte rakentaa asiakirjanne loogisesti ja semanttisesti.

Navigointialueet

nav-elementin avulla voit merkitä navigointipalkit tai muut alueet lisäelementeille semanttisesti. Tämän elementin tarkoituksena on siis pääasiassa merkitä linkkejä muihin sivuihin tai täydentäviä tietoja.

Esimerkki:

<nav>
   <a href="index.html">Kotisivu</a>
   <a href="html5.html">Opi HTML5</a>
   <a href="css.html">CSS</a>
   <a href="cms.html">Joomla!</a>
   <a href="wordpress.html">WordPress</a>
</nav>



nav-elementin sisällä voit käyttää mitä tahansa elementtejä. Voit siis edelleen määritellä navigoinnin listojen avulla. Muita elementtejä voi kuitenkin myös käyttää ongelmitta nav-elementin sisällä. nav-elementti voi myös esiintyä samassa asiakirjassa useita kertoja.

Tarkemmat tiedot

Toinen mielenkiintoinen elementti on details. Sen avulla voi – ja nimen perusteella voi jo päätellä – antaa lisätietoja sisällöstä. Huomioi, että details-elementtä käytetään oikein vasta yhdessä summary-elementin kanssa. Lisää tästä elementistä sitten seuraavassa.

Aluksi esimerkki details-elementin käytöstä:

<article>
  <details>
    <summary>Viittaukset artikkeliin...</summary>
    <ul>
      <li><a href="viittaus1.html">Linkki 1</a></li>
      <li><a href="viittaus2.html">Linkki 2</a></li>
      <li><a href="viittaus3.html">Linkki 3</a></li>
    </ul>
  </details>
  <details>
    <summary>Lähteet artikkeliin ...</summary>
    <ul>
      <li><a href="laähde1.html">Linkki 4</a></li>
      <li><a href="lähde2.html">Linkki 5</a></li>
      <li><a href="lähde3.html">Linkki 6</a></li>
    </ul>
  </details>
</article>



details-elementin sisältö pysyy piilossa vierailijalta, kunnes tämä napsauttaa summary-elementtiä, joka sisältyy details-elementtiin.

HTML & CSS aloittelijoille (osa 21): Semantiikka webiä varten (4)

Tämä voisi olla mielenkiintoista esimerkiksi videon toiston yhteydessä. Tässäkin esimerkki:

<video id="elokuva" width="320" height="180" autoplay>
  <source src="video.mp4" type="video/mp4">
  <source src="video.webm" type="video/webm">
  <source src="video.ogv" type="video/ogg">
</video>
<details open>
  <summary>Videosoittimen ohjaus näytä/piilota</summary>
  <p>
    <button id="aloitus" onClick="aloitus()">Aloita/Tauko</button>
    <button id="mykistä" onClick="mykistä()">Mykistä</button>
    <button id="kovaääni" onClick="kovaääni()">Kovaääni</button>
    <button id="hiljaisempi" onClick="hiljaisempi()">Hiljaisempi</button>
  </p>
</details>



Kun sivu latautuu, näkyy ensin vain soitinikkuna.

HTML & CSS aloittelijoille (osa 21): Semantiikka verkkosivuille (4)

Mutta kun vierailija napsauttaa Näytä/Piilota-linkkiä, summary-elementin määrittelemät sisällöt näytetään.

HTML & CSS aloittelijoille (osa 21): Semantiikka verkkosivuille (4)

Specifikaation mukaan selaimet näyttävät oletussisällön, jos summary-elementtiä ei löydy.

Mielenkiintoista on myös open-attribuutti details-elementille.

<details open>
…
</details>



Kun tämä attribuutti on asetettu, summary-elementin sisältö näkyy suoraan sivun latautuessa.

Yhteenveto

Nyt siis vielä hieman tarkempi katsaus summary-elementtiin.

<article>
  <details>
    <summary>Viittaukset artikkeliin...</summary>
    <ul>
      <li><a href="viittaus1.html">Linkki 1</a></li>
      <li><a href="viittaus2.html">Linkki 2</a></li>
      <li><a href="viittaus3.html">Linkki 3</a></li>
    </ul>
  </details>
  <details>
    <summary>Lähteet artikkeliin ...</summary>
    <ul>
      <li><a href="lähde1.html">Linkki 4</a></li>
      <li><a href="lähde2.html">Linkki 5</a></li>
      <li><a href="lähde3.html">Linkki 6</a></li>
    </ul>
  </details>
</article>



Sisällä summary määritellään siis yhdistettynä details avaamaton sisältö. Kiitos summary on mahdollista liittää lisätietoja, jotka näytetään tarvittaessa.

Myönnettäköön, että taitettavia ja avattavia alueita voisi toteuttaa myös aivan yksinkertaisesti JavaScriptillä. Mikäli kuitenkin JavaScript on poistettu käytöstä selaimessa, sovellus ei toimi. Siksi onkin toivottavaa, että details ja summary saavat pian laajaa tukea.

Reunat ja marginaalit

Lisätietoja, marginaaleja, ristiviittauksia jne. voidaan HTML5:ssä erottaa aside-elementillä. Tällä tavoin merkitty sisältö sijaitsee osana koko dokumenttia, mutta ei ole suoraan siihen liittyvä.

Huomaa, että HTML5-spesifikaatiossa ei ole määritelty, minkä kokoisia aside-merkityt alueet tulisi olla. Näin ollen aside sisältö voi näkyä esimerkiksi marginaalina tai sivupalkkina.

Seuraava esimerkki näyttää aside-alueen määrittelyn.

<body>
  <header>
   <h1>PSD-Tutorials.de</h1>
  </header>
 <article>
  <h2>Web-sovellusten luominen (Osa 10): jQuery mobile (2)</h2>
    <p>Tässä opetusohjeessa luodaan ensimmäinen todellinen jQM-sivu. Tämän edellytyksenä on HTML-pohja, jonka olet jo oppinut tuntemaan.</p>
    <aside>
     <h3>Lisää tietoa</h3>
      <ul>
       <li><a href="#/fn1">Lisätietoja löytyy täältä…</a></li>
      </ul>
     </aside>
    </article>
    <aside>
     <nav>
      <h2>Navigointi</h2>
      <ul>
       <li><a href="#">Etusivu</a></li>
       <li><a href="# ">Yhteystiedot</a></li>
     </ul>
     </nav>
   </aside>
  </body>

Aikamerkinnät

Aikamerkinnät voidaan erityisesti erottaa uudella time-elementillä. Tämän elementin erityispiirteenä on, että sekä ihmiset että koneet voivat lukea aikamerkinnät.

Ihmisille aikamerkinnät kirjoitetaan time-elementtiin. Jotta selaimetkin voivat lukea aikatiedot, käytetään time-elementin datetime-attribuuttia.

<p>Tapaa meidät 
<time datetime="2014-04-15 19:00">15. huhtikuuta klo 19</time>.
</p>



Tässä vaiheessa on vielä kerran huomautettava, että nykyisissä selaimissa tällä ei ole aluksi visuaalista vaikutusta, vaan sen tarkoituksena on tehdä aikamerkinnät koneen luettaviksi.

HTML & CSS aloittelijoille (Osa 21): Semantiikka webiin (4)

Tekstin korostaminen

Mark-elementillä on mahdollista korostaa sanoja tai kokonaisia tekstipasskeja visuaalisesti. HTML5 määrää nimenomaisesti, että elementtiä tulisi käyttää vain tekstisisältöjen yhteydessä. Lisäksi sen tulisi olla tietyn suhteessa kontekstiin.

Esimerkki:

<p>Tässä opetusohjeessa luodaan ensimmäinen jQM-sivu. Tämän edellytyksenä on <mark>HTML-pohja</mark>, jonka olet jo oppinut tuntemaan.</p>



Kuinka selaimet toteuttavat korostuksen, se ei ole määritelty.

HTML ja CSS aloittelijoille (osa 21): Semantiikkaa verkkoon (4)



Sekä Google Chrome että Firefox käyttävät kuitenkin molemmat keltaista taustaa.

Keskustelujen erottaminen

Myös HTML5:ssä on otettu huomioon eritellyt keskustelut. Tähän tarkoitukseen on olemassa dialog-elementti. Tällä hetkellä dialog-elementtiä tukevat kuitenkin ainoastaan Safari ja Google Canary, eli selaimen kehittäjäversio.

HTML & CSS aloittelijoille (Osa 21): Semantiikka webille (4)

Tässäkin esimerkki:

<dialog id="dialog" style="width:50%;background-color:#F4FFEF;border:1px dotted black;">
<p>Tämä on laatikon sisältö.</p>
<button id="hide">Sulje</button>
</dialog>
<button id="show">Näytä sisältö</button>
</div>
<script type="text/JavaScript">
(function() {  
    var dialog = document.getElementById('dialog');  
    document.getElementById('show').onclick = function() {  
        dialog.show();  
    };  
    document.getElementById('hide').onclick = function() {  
        dialog.close();  
    };  
})(); 
</script>



Kun painiketta klikataan, keskustelu tulee näkyviin. Jotta kaikki toimisi, edellisessä esimerkissä luotettiin HTML5:n, CSS:n ja JavaScriptin yhdistelmään.

HTML & CSS aloittelijoille (Osa 21): Semantiikkaa verkossa (4)