質問: “タグの属性”と“スタイル”の優先度について htmlの勉強をしています。以下のソースですと、“cellpadding”が機能しません。試しに、*{margin:0; padding:0;}を外しレンダリングしてみると、うまくいきました。これは、やはり、「“タグの属性”と“スタイル”での指定なら、“スタイル”が優先されると考えてよいのですか?」 よろしく、お願いします。 無題ドキュメント *{ margin:0px; padding:0px; } | | | --- | | セルパディング |
回答: *{ margin:0px; padding:0px; } なんて、お馬鹿な指定は止めましょう。オーサリングツール由来のもので、それをしてしまうと、すべてのデフォルトのスタイルを一から設定しなおさなきゃならない。 必要最小限の html,body{margin.0;padding:0;}位でよい!! スタイルシートを使うときは、基本的にstrictでhtmlを書きましょう。strictはプレゼンテーションに関わる要素、属性が使えません。スタイルシートでプレゼンテーションをhtmlは文書構造をというすみわけがきちんとできます。 | ・・・・・・・・でよい。 cssを使うなら、プロパティより先にしっかり覚えておかなければならないのは、カスケーディング処理・・これがcssの命であり、最大の利点。カスケーディング処理を理解してなきゃ、膨大な無駄なcssととんでもないhtmlを書くことになる。 htmlの要素(element)の属性(attribute)での指定は、詳細度0として計算されますから、 たとえば、 table{cellpadding:0.5ex 0.5em;}と指定されただけで、その宣言は詳細度1ですね。だから上書きされる。 6.4.4 css以外の手段による体裁指定の優先度 ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/cascade.html#q12 ) カスケーディング処理 ★ユーザー、著者の最重要宣言 ★スタイルの出所(ユーザー、著者、ブラウザ) ★出現順番 ★詳細度 ★継承されるプロパティか、されないプロパティか? 値の割り当て、カスケード処理、継承 ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/cascade.html ) これを使わなきゃ、css(カスケーディングスタイルシート)と言いながら、cssじゃない。 | |