flandlescarlet's diary【情報工学生の備忘録】

元機械工学科所属だった情報工学生です。JavaScriptで適当に何かを作ったり、絵を描いていたりします。

HTML < CSS < JavaScript な書き方へ

HTMLを学ぶときCSS併用が求められる理由

はてなの利用によるHTMLの経験者も多数いるかと思われる。

20世紀時代のWeb企画では、CSSJavaScriptに関する、大きな注目を浴びる機会がなく、すべての処理をHTMLに任せようとした仕様でもあった。

大きなタグ要素としては<marquee>タグや<font>タグなどが含まれるであろう。

HTMLとは本来、文章の形を定義するために用いられるものである。それは同時に読み込み速度の向上化をはかるための物でもあった。

HTMLを始めに用いだした人の中でよくしれかす内容は次の項目だ

  • タグの意味を理解せずに用いる
  • 無駄なソース記述が多くみられる
  • HTML5で廃止されるタグも併用して覚えてしまう

 タグの意味を理解せずに用いる例だが、<h1>が代表的なものとなる。

<h1>は普通ページの見出しとして用いられる。しかし<h1>が大きな文字表示をパフォーマンスとして示すため

単に文字を大きくするタグと勘違いしてしまう傾向がある。

そのため、大きな文字を出したい度に、<h1>タグを使ってしまうのである。

これは大きな間違いである。

 

無駄なソースを書く例だが、もしあるWeb開発者がHTMLしか知らなかったら!?

Sample1 (HTML)

<table>
<tr>
<td bgcolor="#F00">要素1-1</td>
<td bgcolor="#F00">要素1-2</td>
<td bgcolor="#F00">要素1-3</td>
<td bgcolor="#F00">要素1-4</td>
<td bgcolor="#F00">要素1-5</td>
</tr>
<tr>
<td bgcolor="#F00">要素2-1</td>
<td bgcolor="#F00">要素2-2</td>
<td bgcolor="#F00">要素2-3</td>
<td bgcolor="#F00">要素2-4</td>
<td bgcolor="#F00">要素2-5</td>
</tr>
<tr>
<td bgcolor="#F00">要素3-1</td>
<td bgcolor="#F00">要素3-2</td>
<td bgcolor="#F00">要素3-3</td>
<td bgcolor="#F00">要素3-4</td>
<td bgcolor="#F00">要素3-5</td>
</tr>
</table>

なかなか長くてソース自体がカッコ悪い文体となってしまっている例である。

なぜカッコ悪いのか!?それは無駄に同じコードを記述する点である。

本来なら、背景色を変えるならばCSSで定義する。むしろHTMLで文書定義以外の事をやるのは、邪道であるからだ。

改善してみよう

 

Sample2 (HTML&CSS)

<style type="text/css">

td{
background-color: #F00;
}

</style>

 <table>
<tr>
<td>要素1-1</td>
<td>要素1-2</td>
<td>要素1-3</td>
<td>要素1-4</td>
<td>要素1-5</td>
</tr>
<tr>
<td>要素2-1</td>
<td>要素2-2</td>
<td>要素2-3</td>
<td>要素2-4</td>
<td>要素2-5</td>
</tr>
<tr>
<td>要素3-1</td>
<td>要素3-2</td>
<td>要素3-3</td>
<td>要素3-4</td>
<td>要素3-5</td>
</tr>
</table>

CSSを一行記入することで、ソースが簡略化して無駄に記述する必要性がなくなるのである。

このCSSの記述方法も一般的とは言えないが、あえて分かりやすいようにこのように表示してみた

実際ならばclass名で各要素にアクセスするのが一般的となる。

しかしまだ長い、もっと簡略化してみよう。

 

Sample3 (HTML&CSS&JavaScript)

<style type="text/css">
.table_color{
background-color: #F00;
}
</style>
<script type="text/JavaScript">
document.write('<table border="1">');
for(i=1;i<=3;i++){
document.write('<tr>');
for(j=1;j<=5;j++){
document.write('<td class="table_color">要素'+ j + ' - ' + i +'</td>');
}
document.write('<tr>');
}
document.write('</table>');
</script>

JavaScript内にHTMLを記入したものである。

ここでは有名な繰り返し分で、無駄に<td>や<tr>タグを記入するのを防いでいる。

そしてclass名もつけてみた。

Scriptで回さなかった場合これらの計25個のセルにclass名を定義しなければならなかったのである。

このように、動的表現や色を表示する以前にHTMLでは簡略化が難しく、極めて作業がしんどくなるのが分かっていただける例だと思う。

また発展するとJavaScriptにもさらに同じコードを引数で分けて処理する関数など、簡略化を目指せる要素は幾度とある。

 

After