質問: のclass指定が継承されない に指定したclass指定が、その下の や|に継承されずに困っています。 htmlを | | | | --- | --- | | 1-1 | 1-2 | | 2-1 | 2-2 | とし、 cssを table, td { border: 2px #2b2b2b solid; } とした場合、新しくhtmlとcssを作ると表自体と全セルに囲み線が作られます。 ですが、今運営しているhpに記述すると、 のborderのみしか表示されません。 試しに、 にclassを指定しなおしてみると、そのセルにも囲み線が表示されました。 全 にclassを指定すれば問題ないのかもしれませんが、それではあまりにも使い勝手が悪いため、何とかhtmlは のみにclassを指定することで全セルに反映させたいと思っています。 考えられる原因としてはどのようなものがありますでしょうか...? | | |
回答: >borderが継承されないと言う点は理解しているのですが、 に対して指定したclassがその下に位置する に継承されないという点で困っております。 それは「継承」ではありません。 ★それは、tdに指定したスタイルが適用されないという事です。 カスケード処理の順序( http://momdo.s35.xrea.com/web-html-test/spec/css21/cascade.html#cascading-order ) table.sample td{} は、 ・class属性の空白で仕切られた値リストの一つにsampleを持つtable要素の子孫であるtd要素という意味です。詳細度は[0 0 1 2]=12です。 これが適用されないと言う事は、 ・より高い詳細度の指定がある。 一意セレクタ[0100]とか、スタイル属性[1000] より詳細な記述がある。body div.section table td [0 0 1 4]、 ・同じ詳細度で後述の指定がある。 ・htmlの文書構造かセレクタの記述に誤りがある。 の何れかでしょう。 web開発されているなら、開発者ツールが豊富なfirefoxお使いだと思いますがそのアドオンにfirebug( https://addons.mozilla.jp/firefox/details/1843 )があります。それでスタイルが適用されない要素を選択すると、カスケードの順番に従ってスタイルが明示されます。 それを使うのが、最もよくわかる。 |