HTML4.01、XHTML1.1が全盛の時代に、table要素をレイアウト用に使うのは非推奨とされてきました(レイアウト用に使ってもSEO的な問題はあまりなかったようですが)。ちなみに、HTML5では表組としてのtable要素は残るものの、HTML4.01時代のcellpadding属性、cellspacing属性、border属性、frame属性、width属性、rules属性が廃止されて、summary属性のみが残るようです。
既成のhtmlに今回のサンプルのような表組のようで表組でないものを追加する際、tabl要素は簡単便利だったのですが、他の要素を模索するしかありません。そこでtable要素の代替えです。
また、HTML5ではiframe以外のframe要素も廃止になったので、左右のサイドにメニューを表示してメインコンテンツを切り替える、といった使い方にframe要素は使えません。今回のサンプルはその代替えとしても利用できるかもしれません。
(1)は親要素(div)に「display:flexbox」を使い、widthを%で左右に分けた子要素2つ入れています。
(2)と(3)は親要素(div)に「display:table」を使い、widthを%で分けた子要素に「display:table-cell」を指定しています。table要素と同じような動きをするので、「border-collapse:collapse;」も有効です。(1)は「border-collapse:collapse;」が効かず、隣り合った部分のborderが二重になるため、子要素どちらかの隣り合った部分のborderを消しています。
.bunkatu { display: -webkit-box; /* ----webkit---- */ display: -moz-box; /* ----Firefox---- */ display: -ms-flexbox; /* ----IE---- */ display: -o-flexbox; /* ----Opera---- */ display: flexbox; }
.bunkatu2 { display: table; /* ----親要素---- */ border-collapse:collapse; } .left2 { display: table-cell; /* ----子要素左---- */ } .right2 { display: table-cell; /* ----子要素右---- */ }
.right3 { display: table-cell; /* ----右側に子要素追加---- */ }