html5

 Webサイトは主に「HTML」「CSS」「JavaScript」の3つの言語で構成され、それぞれが、文書構造、見栄え、インタラクティビティーを分担しています。HTML5ではそれがより明確に分担するようになっていると言われています。さらに HTML5は、特定のブラウザに依存しない高機能な Webページの実現を目指しています。
 しかし初心者にとっては、より複雑で取り付きにくくなったように思われます。ここではHTML5についてみてみようと思います。

■ HTML5の基本構成

  HTML5 の基本形は以下のようなものになります。
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>タイトル</title>
  <style>
    body {background-color:#cfd;} /* 背景色 */
  </style>
</head>
<body>
  <h3>見出し</h3>
  <p>html5 本文内容</p>
</body>
</html>
          
【 左記の表示例

【参考サイト】
HTML5の書き方
( 1行目) <!DOCTYPE html> で、文書型が HTML5 であることを記述します
( 4行目) head 内に <meta> タグで文字コード(UTF-8)などの指定をします
( 7行目) ページのレイアウトや装飾などはスタイルシートで指定します
(10行目) 本文は <body> 内に記述します

■ HTML5 で廃止・変更されたこと

 以上では一見大きな変化は見られないようにも思われますが、以下で幾つかの違いや特徴をみてみます。 参考
  1. フレームの廃止
    <frameset> は廃止されました 代替方法1
  2. Marqueeの廃止
    <marquee> が廃止されました 代替方法1  代替方法2
  3. 装飾・レイアウト属性の廃止
    <font>,<center> など、装飾・レイアウトタグや属性が廃止されました 参考
  4. blinkの廃止
    <blink> が廃止されました
   HTML5 で廃止された要素・属性 (外部へリンクします)
要素 acronym  applet  basefont  bgsound  big  blink  center  dir
font  frame  frameset  isindex  marquee  nobr  noembed
noframes  strike  tt
属性 align, alink, background, bgcolor, border, cellpadding, cellspacing,
char, charoff, clear, compact, frameborder, height, hspace, link,
marginheight, marginwidth, name, noshade, nowrap, rules, scrolling,
text, valign, vlink, vspace, width など

■ HTML5 の特徴違い

  文書構造をつくる HTML5 ですから、具体的な特徴や新機能をみてみます。
  1. 図形を描画の充実  参考1  参考2  Google Chart
    ・<canvas> で多彩な図形やアニメが描けます。
    ・canvas画像は、img要素に変換することも出来ます
  2. ローカルファイルの読込
    ローカルファイルを読込む ことが出来ます。 応用例
  3. 位置情報の取得
    Geolocation API が使えます。(対応サーバーに注意)
  4. video要素の追加
    <video> で、プラグイン無しで動画再生できます  
  5. Web Storage が使えます  参考
  6. Device Orientation API  傾きなど が取得出来ます
  7. Selecter API  Selecter API が使えます
     HTML5 で追加された要素 (外部へリンクします)
構造要素 article  aside  bdi  figcaption  figure  footer
header  hgroup  mark  menu/menuitem  nav
picture  ruby/rb/rp/rt/rtc  section  time
メディア audio  canvas  embed  source  track  video
フォーム keygen  meter  output  progress
その他 command  details  datalist  summary  wbr

■ HTML5でレイアウトの例

  以上を踏まえて、実際のページを見てみます。従来はボックスのレイアウトがかなり大変でした。
  HTML5 では、セクショニング要素や flex属性 を使うとかなり便利に出来ます。
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <title>HTML5とCSS3によるページサンプル</title>
  <style>
      body { width:400px; margin:10px auto; }
      header, nav, section, footer, article {
        display:block; border:1px solid #ccc; margin:5px; padding:5px 10px; background: #eee;
      }
      article { background: #efe; }
      header { text-align:center; padding:5px 0 10px 0; }
      header ul, header li { list-style-type:none; display:inline; padding: 0 10px; }
      .flexbox { display:flex; border:1px solid #c99; margin:5px; }
      nav { flex:1; }
      section { flex:2; }
      nav li { list-style-type:none; margin-left: -2em; }
      footer { text-align: center; }
  </style>
</head>
<body>
  <header>
      <h1>header</h1>
      <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">Menu 1</a></li>
        <li><a href="#">Menu 2</a></li>
        <li><a href="#">Menu 3</a></li>
      </ul>
  </header>
  <div class="flexbox">
    <nav>
      <h1>Navi</h1>
      <ul>
        <li><a href="http://www.tagindex.com/html5/basic/basic.html">HTML 5</a></li>
        <li><a href="http://www.htmq.com/html5/index.shtml">リファレンス</a></li>
        <li><a href="http://coliss.com/articles/build-websites/operation/css/css3-flexbox-properties-by-scotch.html">flex</a></li>
        <li><a href="#">example 4 </a></li>
        <li><a href="#">example 5 </a></li>
        <li><a href="#">example 6 </a></li>
        <li><a href="#">example 7 </a></li>
      </ul>
    </nav>
    <section>
      <h1>section</h1>
      <article>
        <h1>section-article1</h1>
        <p>ここは、article1</p>
      </article>
      <article>
        <h1>section-article2</h1>
        <p>ここは、article2</p>
      </article>
    </section>
  </div>
  <footer>
      footer
  </footer>
</body>
</html>
            
( 9行目) 各種のセクショニング要素を利用します
(15行目) まず flex を適用するコンテナを display:flex; での指定をします
(16,17行目) コンテナ内の flex の幅比率を数値で指定します
(32行目) この場合の具体的な flex コンテナです
【 左記の表示例 】 参考サイト

■ HTML5でページサンプル

  HTML5 では、削除された属性などが使えません。このため、HTML5 以前のページなどの記述は修正が必要になります。
  例えば、以前のページは以下のように変更します。
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>html5-css3 サンプルページ</title>
  <style>
    body { margin:3px auto; width:640px; background:#33dd33; font-size:20px; }
    .head { background:#ffff66; height:60px; color:green; text-align:center; font-size:48px; }
    .main01 { margin:3px auto; background:#66ff99; width:480px; color:#ff0000; font-weight:bold; overflow:hidden;}
    .main01 p { display:inline-block; padding-left:100%; white-space:nowrap; margin:0 0.5em; }
    .main02 { margin-top:10px; text-align:center; }
    .main02 img { width:120px; margin:3px 6px; }
    @keyframes marquee01{ from { transform: translate(0%); } to { transform: translate(-100%); }}
    .mq01 { animation: marquee01 8s infinite linear; }
    @keyframes marquee02{ from { margin-left:70%; } to { margin-left: -70%; }}
    .mq02 { animation: marquee02 20s infinite steps(60) normal;}
  </style>
</head>
<body>
  <div class="head">
    html5-css3 サンプルページ
  </div>
  <div class="main01">
    <p class="mq01">ようこそ、html5-css3 のホームページへ!! </p>
  </div>
  <div class="main02">
    ( 図をクリックすると、関連ページへジャンプします。)<br>
    <a href="../../index.html"><img src="./mi12.jpg" alt="くらげ" /></a>
    <a href="../../jhana/hana.html"><img src="./botan1s.jpg" alt="ぼたん" style="height:150px;" /></a>
    <a href="../../jsisen/jpanda/jpanda.html"><img src="./panda17.gif" alt="パンダ" /></a>
    <a href="http://www2n.biglobe.ne.jp/~kurage/jfuji/fuji.html"><img src="./y0399s.jpg" alt="富士" /></a><br>
    <img class="mq02" style="width:32px;" src="./a007icn.gif" alt="ひよこ" /><br>
    <hr>
    <a href="../hp_g.html" target="_self">「ホームページを作る」 トップページへ</a><br>
    <a href="mailto:lvh09931@biglobe.ne.jp"><img src="./a018icn.gif" style="width:26px;" /> メール送信はここをクリックして下さい</A>
    <hr>
  </div>
  </body>
</html>
            
 * レイアウトの基本が table から css になりました
(13,14行目) @keyframes を使ってアニメーションで marqueeの代替を作る
(15,16行目) 別のアニメーションで別の marquee代替を作ります
(26行目) ブロック内にコンテンツをレイアウトします
【左記の表示例】 HTML5 以前の例

■ HTML5 を有効に利用する

 さらに有効に使うために、参考になるサイトで色々と勉強してみましょう。
文章構造化
CSS3 flexbox
Canvasで図形を描く
アニメーションを作る

■ HTML 5 - リファレンス

ブラウザだけで図形を描く

■ 参考サイト