- ベストアンサー
IE擬似クラスでのprint表示について
- IE擬似クラスを使用したページのprint表示に問題が生じる場合、擬似クラスを使用せずに印刷する方法や、idやclassを使用して同様の効果を得る方法があります。
- また、print.cssを使用することで、印刷時の表示をカスタマイズすることも可能です。
- プリントプレビューで問題が発生する場合は、ブラウザのバージョンや他のエラーが原因である可能性もあります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
スタイルシート一文字抜けてました。 ul#navi,ul#nav li{ list-style:none;/* IEバグ対策(displayを指定してもマーカーが残る */ display:block;margin:0;padding:0; } ul#navi{width:150px;} ul#navi li { /* navと指定していました */ width:70px; float:left; line-height:30px; height:30px; border-left:1px solid #000; } たまたま画面ではfloatが解除されたのは、親コンテナブロックの幅が150pxだったからです。その証拠に、 #navi li:nth-child(3) { clear:both; border-left:none; } がなくても、下の段に移動します。 印刷スタイルシートでは、pxの値はしばしばトラブルの原因となります。CSS2.1で変更になりました。 【引用】____________ここから Note that if the anchor unit is the pixel unit, the physical units might not match their physical measurements. Alternatively if the anchor unit is a physical unit, the pixel unit might not map to a whole number of device pixels. Note that this definition of the pixel unit and the physical units differs from previous versions of CSS. In particular, in previous versions of CSS the pixel unit and the physical units were not related by a fixed ratio: the physical units were always tied to their physical measurements while the pixel unit would vary to most closely match the reference pixel. (This change was made because too much existing content relies on the assumption of 96dpi, and breaking that assumption breaks the content.)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Syntax and basic data types( http://www.w3.org/TR/CSS2/syndata.html#length-units )]より 印刷用の場合は、cmやmmもしくは、ptやpcで指定するほうが確実です。 なお、floatにいったん指定した要素にclearを指定しても本来は利きません。有効なブラウザもあります。 nth-child(n)はCSS3のセレクタです。いくつかの数で折り返したいときは、nth-child(2n)とかnth-child(3n)ですかね。 CSS2.1で書けば #navi li+li{} #navi li+li+li{} #navi li+li+li+li{} と隣接セレクタを使う。 それでもIE5など古いブラウザには無効なので、コンテナブロックの幅をfloatさせる要素の2個以上3個未満の幅に指定するほうが楽です。単位は絶対単位で!!
その他の回答 (1)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
それ以前の設定で、floatされている要素でclearしてもclear出来ないのが本来の仕様です。clearされるのはIEのバグ・・ 多分他のブラウザではclearされない。 この場合、ボックスとなるコンテナブロック(ul)の幅を決めてfloatさせれば、clearの必要はないはずです。 ul#navi,ul#nav li{ list-style:none;/* IEバグ対策(displayを指定してもマーカーが残る */ display:block;margin:0;padding:0; } ul#navi{width:150px;} ul#nav li { width:70px; float:left; line-height:30px; height:30px; border-left:1px solid #000; }