t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

HTML5ではiframeを堂々と使える

HTML4.01ではiframe要素は非推奨だったため、YouTube動画を掲載しているページだけはフッターにW3CのValidationアイコンをつけていなかった。

f:id:t-hom:20150731023541p:plain

ページフッターはjavascriptで書いているので、Validation無しのためにわざわざ関数を追加していたのだ。

ちなみにこちらがValidation有りのフッター

function writeFooter(){
	var html = "";

html += '<footer>';
html += '	<p>&copy; 2014 Takayuki Hommura</p>';
html += '	  <p style="text-align:right;margin-top:-10px;font-size:small;"><a href="http://validator.w3.org/check?uri=referer" style="text-decoration:none;color:#ffffff;">Valid HTML5</a>';
html += '     <a href="http://www.w3.org/html/logo/"><img src="http://www.thom.jp/img/HTML5_Badge_32.png" alt="HTML5 Powered with CSS3 / Styling, and Semantics" title="HTML5 Powered with CSS3 / Styling, and Semantics"></a>';
html += '	  <a href="http://jigsaw.w3.org/css-validator/check/referer"> <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="正当なCSSです!" /></a></p>';
html += '</footer>';

	document.write(html);
}

こっちがValidation無しのフッター

function writeFooterWithoutValidation(){
	var html = "";

html += '<footer>';
html += '	<p>&copy; 2014 Takayuki Hommura</p>';
html += '</footer>';

	document.write(html);
}

HTML5になって正式にW3Cから認められることになったので、これで堂々と使用できる。
一応今後も使うかもしれないので関数自体は残しておこう。

HTML4.01で非推奨とは

もう少し詳しく説明すると、HTML4.0の頃は以下3種類の宣言タイプが存在していた。

  • Strict(厳格なHTML)
  • Transitional(過渡的なHTML)
  • Frameset(フレームを使用できるHTML)

最も正確なHTMLはStrictで、これがW3Cの推奨していたもの。
ただし厳格すぎるためHTMLに対する正しい知識が無いと本来はまともにサイトを構築することは出来ない。

とはいえ、ブラウザの仕様としてはそのあたりはユルユルで、宣言があろうと無かろうと内容がどうであろうと「あれ。これ違うくない?まぁいいや、こう描いて欲しいんでしょ」という感じで融通を利かせて表示させていたのだ。

そもそもHTMLの閉じタグが欠落していたとしても、全く表示に影響が無い。いいかげんユルすぎる。

ただそうは言ってもルールを無視したオレオレHTMLに対してまともなエンジニアは眉をひそめるだろうし、Googleの検索順位にも悪影響を与えるかもしれないが。

Transitionalとは、過渡期の~とか移行期の~とかいう意味である。したがって、W3Cの本音としては「本当は認めたくないけどこれまで慣例的に使われてきたタグとかはまあ目をつぶりましょう。今のところは。」という感じだと思う。

Framesetはインターネット公開するサイトとしては最も推奨されないもので、もうだいぶ長いこと見なくなった。
フレームが使える以外はTransitionalと変わらない。(インラインフレームはTransitionalでも使える。)
多分まだ存在はするんだろうけど、Googleから見放されてネットの海を漂流中ではないかと推測している。
ただ社内イントラサイト構築には手軽にメニューを構築できてメンテナンス性が良いので、その用途に限っては個人的にはむしろ推奨したい。

HTML5では

HTML4.01で非推奨とされていたiframeであるが、サイトへのYouTube埋め込みやAmazonの商品リンク等、多くのサイトで利用されており、利便性も高いことからHTML5では非推奨が解除された。

ただし、ここでもYouTubeから出力されたHTMLをそのままコピペというわけにはいかない。
iframeに指定されたframeborder=0がHTML5では非推奨となっている為だ。

Validatorの指示は、代わりにCSSを使えというもの。

個別指定は面倒なのでheadタグ内に以下を配置し、frameborder要素は削除した。

<style>
iframe {border:0;}
</style>

これでめでたく全てのページがValidになった。(はず)

f:id:t-hom:20150731031803p:plain

既存サイトをHTML5へ書き換えるには、以下の書籍がオススメ

HTML5&CSS3ステップアップブック

HTML5&CSS3ステップアップブック

イチからHTML5を解説するのではなく、どう加工すれば今のHTML4サイトがHTML5になるのかという切り口で書かれいてる。
※ただし、前提としてCSSレイアウトの知識は要る。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。