tableレイアウトが崩れた原因は、CSSリセットかもしれない。

カレンダーDate: | カテゴリーCategory:WordPressテーマのカスタマイズ方法【HTML・CSSの基礎も】
※景品表示法に基づく表記:本記事には商品の広告が含まれています
css_exclamation

さて、先日クライアントから「サイトに貼りつけたバナーのレイアウトが崩れてしまう」という、ご相談をいただきました。

そのバナーのHTMLソースを見てみると、tableタグで組まれたものでした。

最初「どこかの閉じタグでも忘れているのかな?」と思ったのですが、別に記述ミスはありません。また、変なfloatなども かかってはいないようです。

そこで検証した結果、スタイルシートに記述されたCSSリセットの一部に原因がありました。

CSSリセットとは何なのか?

ブラウザごとに異なる初期状態で適用されているCSSを、スタイルを統一するために上書きする記述をCSSリセットといいます。

具体的には以下のような記述です。

/* CSSリセット */ html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote, pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small, strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table, caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption, figure,footer,header,hgroup,menu,nav,section,summary,time,mark, audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%; vertical-align:baseline;background:transparent;font-weight:normal;} body{line-height:1}article,aside,details,figcaption,figure, footer,header,hgroup,menu,nav,section{display:block} ul{list-style:none}blockquote,q{quotes:none}blockquote:before, blockquote:after,q:before,q:after{content:none}a{margin:0;padding:0; font-size:100%;vertical-align:baseline;background:transparent} del{text-decoration:line-through}abbr[title],dfn[title] {border-bottom:1px dotted;cursor:help} table{border-collapse:collapse;border-spacing:0} hr{display:block;height:1px;border:0;border-top:1px solid #ccc; margin:1em 0;padding:0}input,select{vertical-align:middle}

で、上記のうち【tbody】【tfoot】【thead】にかかっているスタイルが、tableレイアウトを崩している原因となっています。

tbody,tfoot,thead{vertical-align:baseline;}

vertical-align:baseline;とは、セル要素のベースラインを、最初の行のベースラインに揃えるプロパティです。 これをtbody,tfoot,thead,という表を定義するタグにかけてしまっているんです。

言い方をかえると、レイアウトを崩してでも、テーブルの一番左側に書かれているコンテンツに、左から2番目以降のコンテンツの高さを揃えるスタイルです。

CSSリセットを記述すると、確かにクロスブラウザ対策(ブラウザ間の表示の違いを減らす対策)がやりやすくなりますが、他のサイトから発行されたソース(バナー広告ソースなど)を実装する際には、思わぬレイアウト崩れの原因となることもあります。

その場合は、原因となっているスタイルは消してしまった方が良いかもしれません。

Tags


Trackbacks & Comments

Trackback URL for this post:

Leave a Reply

flight