• 締切済み

display:table-cellのずれ

CSSを使ってWebのレイアウトを組んでいるのですが、 印刷プレビュー対応のために、floatを使っている部分を、 印刷時のみ display:table; を使って、テーブルレイアウトに 変更するための記述を、現在行っています。 うまい具合に、印刷プレビューで左右にレイアウトが分かれ、 2P以降もきれいに表示さているのですが、ふとよく見てみますと、 右側に配置したDIVが、ほんの3pxほど左にずれていることに気づきました。 floatを使って、左右に分かれたレイアウトのWebサイトを作成しています。 表示上はうまくできていて、次は印刷プレビューに挑戦と思い、 下記のサイトなどを参考に、テーブルレイアウトに変更する方向で 現在作成を行っています。 http://www.materialpot.com/css/ie7firefoxcss.php 一時は、プレビューもうまく表示できたと思っていたのですが、 なぜか、float:rightしている側のDIVが、左に3pxほど寄って、 ずれてしまっていることに気づきました。 このずれを解決する方法はないのでしょうか? ご存知の方がいらっしゃったら、ぜひとも教えていただきたく思います。 宜しくお願い致します。

  • CSS
  • 回答数1
  • ありがとう数0

みんなの回答

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

 印刷用スタイルシートは、すべての単位に絶対サイズ()を使いましょう。pxはディスプレイの解像度を参照する相対サイズです。(印刷の解像度は通常200~600dpiだと思います。) ★4.3.2 長さ(Lengths) ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/syndata.html#length-units ) in: インチ -- 1inは2.54cmに等しい cm: センチメートル mm: ミリメートル pt: ポイント -- 1ptは1/72inに等しい pc: パイカ -- 1pcは12ptに等しい 4.3.2 長さ(Lengths) ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/syndata.html#length-units )  display:table|table-cell,table-lineなどは、ブラウザによる差が大きく、できればabsoluteなどを使うほうが無難です。  コマ割でfloatを使うのはたくさんの問題を含んでいますからも使うべきではないでしょう。必要な場合でも一方にはfloatをかけません。  

関連するQ&A

  • CSSレイアウトでこのようなことはできる?

    ホームページをテーブルを使用しないCSSレイアウトで作成しようと思います。 左右を分けるのにfloatを使用して作っています。 横幅は30%と70%で分けていますが、ブラウザの幅を小さくすると上下にずれてしまいます。 そこでブラウザで800px以下になった時は横バー表示するようにしたいです。 このようなことはできるでしょうか?

  • ウインドウ幅を狭めるとボックスが下に飛んでいきます

    cssを使ってdivでテーブルのようなレイアウトにしています。 サイト全体の設定は、左から「メニュー」「メイン」「右サイドバー」といった感じで、メインの部分にdivでボックスを作ってます。 メニューは固定でメインとサイドバーは可変にしているのですが、ブラウザのウインドウ幅を左右に狭めると、floatで左右にくっつけたボックスがバラバラになったり、下へ飛んでいったりしてしまいます。 テキストの場合は可変してもいいのですが、ボックスやテーブルは動いてほしくありません。 常に前面に固定されて表示されるような方法はあるのでしょうか?

    • ベストアンサー
    • HTML
  • フロートを利用した2カラムレイアウト

    お世話になります。 HTML+CSSにてサイト制作をしております。IE6のバグだと思うのですが、フロートを利用した2カラムレイアウトの段組みの間の空き具合をうまく調整することができません。なぜでしょうか?? 形は、左右の2カラムで成り立っており、右半分に重要なコンテンツ部分(主にテキスト)、左半分にメニューをおいています。 【HTML】 <div id="wrapper"> <div id="right"> □□□□□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□□□□(重要テキスト) </div> <div id="left"> □□□□□□□□□(メニュー) </div> </div> 【CSS】 #wrapper{ width:800px; background:url();←省略 } #right{ float:right; width:680px; } #left{ float:left; width:100px; } という感じです。それで、800px-(680px+100px)=20pxを左右の段組みの間に空きスペースとして確保したいのですが、IE6だとうまくいきません。 Firefox,safariなどでは、仕様通り左カラムは左に寄り、右カラムは右によるため、左右の段組みの間に20pxの空きが出るのですが、IE6だと左右の間にスペースはなく、かわりに右カラムの右(つまり、一番右)が空いてしまうのです。 floatを両方ともrightにして左カラムに右マージンorパディングを入れてみたのですが、今度はカラム落ちしてしまいます。 どうすれば、IE6で左右の間にスペースがある2段組みができるのでしょうか??なにか根本的に間違ってるのでしょうか?

    • ベストアンサー
    • HTML
  • IEの印刷でcssが無効になう

    宜しくお願いします。 CSSを使って、DIVタグでレイアウトしています。TABLEでなくDIVだけで組むのは初チャレンジです。外部CSSを使用しています。 IE(Ver6)では、問題なくCSSが有効となって見えるのですが、印刷プレビュー及び印刷では、CSSが無効となりレイアウトが崩れてしまいます。DIV関係に限らず全てのCSSが無効です。 こんな経験は初めてで、何が悪いのかわかりません。 どこをチェックすれば良いのでしょうか?

    • ベストアンサー
    • HTML
  • CSSでテーブルを作る方法について

    CSSでテーブルを作る方法についてアドバイスお願いします。 今、外CSSで、テーブルを作成しようとしているのですが、cssがhtmlに反映されていないようです。2つボックスを並べたいです。 .box1{ float: left; background-color: #cc0000; width: 200px; height: 200px; } .box2{ float: left; background-color: #d0dcdf; width: 200px; height: 200px; } htmlには、 <div CLASS="box1"></div> <div CLASS="box2"></div> と書きました。 どこが問題なのかどなたかご指摘いただけますでしょうか?

  • CSSでDIVを複数囲むには

    CSSでレイアウトをしているのですが、<div>で囲んだ画像Aと画像Bがあります。この2つの<div>を更にもう1つの<div>(以下、大DIV)で囲んでまとめたいのですが、うまくできません。その2枚の画像はそれぞれfloatでleftとrightに寄せているのですが、floatを適用させると大DIVの外に出てしまいます。 2つの画像を左右に寄せることは必須です。その後で、大DIVでまとめておけばあとでレイアウトの変更があったときに作業がスムーズに進むと思ったのですが。 これはどのようにすればよいのでしょうか?

  • 印刷プレビューでレイアウトが崩れないようにしたいのですが…

    HPを作成しようと思っている初心者です。 Dreamweaverというものでホームページを作ろうと思っているのですが、作成したページをIE6.0で確認し印刷して確認しようとしたところ、画面で見たレイアウトとは違う形で印刷されていて、どこを修正したらいいのかわからず困っています。FireFoxでは印刷プレビューを見てもレイアウトは崩れていませんでした。原因や解決方法がわかれば教えていただけませんでしょうか?よろしくお願いします。 OS=WINDOWS XP <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>無題ドキュメント</title> <style type="text/css"> <!-- body,td,th {font-size: 13px; line-height: 140%;} img{border-width : 0px ;} body{ margin-top: 0px; margin-right: 0px; } .box { float: left; height: 250px; width: 600px; background-color: #FFFFCC; } .boxleft { float: left; height: 250px; width: 190px; background-color: #FFCCFF; padding-left: 10px; } .boxright { float: right; height: 250px; width: 380px; background-color: #CCFFFF; padding-right: 10px; padding-left: 10px; } --> </style> </head> <body> <div class="box"> <div class="boxleft">ピンクの背景(左)</div> <div class="boxright">青の背景(右)</div> </div> </body> </html> ※.boxのバックグラウンドカラーが右上と左下に出てしまいます。 プレビューでは.boxの背景は出てないのですが………。

    • ベストアンサー
    • HTML
  • ブログ記事内でfloat要素が表示されない

    ブログの記事内で文章を左右に分けて書きたくて <div class="box">左の文</div> <div class="box">右の文</div> CSS→ .box{width:300px;float:left;padding:0 5px;;} としたのですが、IEの古いバージョン(7。8もたぶん)では floatさせたdiv要素が表示されません。 (この箇所だけがまるまる記事から無くなります) 解消法の分かる方、どうかお教え願います。 ブログはアメブロを使っています。

    • 締切済み
    • CSS
  • 【HP制作】2カラムを3カラムに変更したい!

    現在2カラムで運営しているサイトを3カラムに変更したいのですが、上手く出来ずに困っています。 現在は、左サイドメニュー(1)、メインメニュー(2)で運営しています。 ここに右サイドメニュー(3)を追加したく、下記の通りCSSに右サイドを追加したのですが、 画面を確認すると、左から(1)→(3)→(2)の順番で表示されてしまいます。 因みに、メインのfloatをrightに変更すると、左から(2)→(1)→(3)の順に入れ替わり、 どうしても(1)→(2)→(3)の順番になりません。 独学で、その場しのぎでHP作りをしてきたので、間違いに気づけずにおります。 お分かりの方がいらっしゃったら、どうかよろしくお願いします。 初心者レベルなので、分かり易く教えて頂けると助かります。 どうぞよろしくお願いします。 ■CSS /*ページ全体の幅、レイアウトをセンタリング*/ #container { width:1130px; margin:0px auto; text-align:left; } /*ヘッダー*/ #header { width:100%; padding: 20px 0; clear:left; } /*左サイド*/ #leftside { float: left; width: 200px; } /*メイン*/ #main { float: right; ←ここを変えるとレイアウトが崩れてしまいます。 width: 700px; } /*右サイド*/  ←ここを追加しました。 #rightside { float: right; width: 200px; } /*フッター(コピーライト)*/ #footer { padding: 30px 0; width:100%; clear:both; color: #666; text-align: center; border-top: 1px solid #ccc; } ■HTML <div id="container"> </div> <!--***** メイン部分 *****--> <div id="main"> </div> <!--*****// メイン部分 *****--> <!--***** 左サイドメニュー *****--> <div id="leftside"> </div> <!--*****// 左サイドメニュー *****--> <!--***** 右サイドメニュー *****--> ←ここを追加しました。 <div id="rightside"> </div> <!--*****// 右サイドメニュー *****-->

    • ベストアンサー
    • CSS
  • CSSで左側の余白

    CSS本を見ながら苦闘しています。 下のようなCSSを書いたのですが、全体のレイアウトが左寄せから10pxほど余白が出て表示されてしまいます。 HTMLではそのような指定はしていません。 どうしてなのでしょうか。 また、どのようにしたら良いのでしょうか。 レイアウトは div#top div#top1 で2段上下にブロックしたあと、左右のブロックで分けています。 ※また、:と;の間にスペースを入れる、入れないは本によってマチマチなのですが、どのような書き方が正しいのでしょうか。 <style type="text/css"> <!-- body { font-size:10pt ; line-height:20px ; background-color:white; color : black ; } td { font-size:10pt; line-height:16px ;} div#top { position: absolute; top:0px; } div#top1 { position:absolute; top:95px ; } div#menu { float:left; } div#content { float:left; border-left:1px solid #666666 padding-top:10px; padding-left:20px; width:580px; } // --> </style>

    • ベストアンサー
    • HTML

専門家に質問してみよう