おせわになります。
bodyに背景画像を指定し、CSSで中央寄せをしているのですが、
動作確認でブラウザ幅をこまかく拡大・縮小を繰り返すと、
背景画像とコンテンツ部とが1pxずれる事があります。
Win IE6.0、7.0、MacOSX safari2.0でこの現象がおき、FF2.0はWin&Macともに問題ありません。
この解決方法はありますでしょうか。
ご教授のほど、よろしくお願いいたします。
▼HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>テスト</title>
<style type="text/css">
<!--
body {
margin:0;
padding:0;
text-align:center;
background: url(http://www.geocities.jp/ajax3210/bg.gif) center top repeat-y;
}
#wrapper {
width:746px;
height:100px;
background-color: #CCCCCC;
margin-left:auto;
margin-right:auto;
text-align:left;
}
p { margin:0; padding:0; }
-->
</style>
</head>
<body>
<div id="wrapper">
<p>テスト</p>
</div>
</body>
</html>
No.3ベストアンサー
- 回答日時:
> 背景画像をブラウザの最上部から最下部まで表示させたいと思っています。
> ですので、ご回答のソースですと、
> コンテンツのボリュームが少ない場合、
> ブラウザの最下部まで背景画像が届かない状態なのです。
#2 の内容を引き継ぐ。
wrapper-inner ボックスに関しては id として命名したほうがよいかもしれません。
class として考えるのであれば、class="inner" のように命名し、
#wrapper .inner {}
のように書いたほうが賢明かもしれません。
「ボリュームが少ない場合」は、表示最大幅の高さを確保する
html, body { height: 100% }
#wrapper-inner { min-height: 100% }
IE7 standard mode を除いて、IE では min-height プロパティに対応していません。
IE7 quirks mode 及び IE6 以前の IE では、内容が親要素の表示領域を超えた場合、勝手に拡張します。
つまり、IE7 quirks mode 及び IE6 以前の IE に関しては、height プロパティが min-height プロパティと同等になります。
IE7 quirks mode 及び IE6 以前の IE に適用される hack を用いて height プロパティを指定します。
* html #wrapper-inner { height: 100% }
#2 で提示されているソースに追記するとすれば、次のようになります。
html {
height:100%;
}
body {
margin:0;
padding:0;
text-align:center;
background:★;(背景色のみ)
height:100%;
}
#wrapper {
background: url(http://www.geocities.jp/ajax3210/bg.gif) left top repeat-y;
width:★px;(bg.gifのwidthと同じ幅)
margin-left:auto;
margin-right:auto;
}
.wrapper-inner {
width: 746px;
margin-left:auto;
margin-right:auto;
text-align:left;
min-height:100%;
}
* html .wrapper-inner {
height:100%;
}
> やはり、divの背景画像で対応するしかないのでしょうか。。
本来であれば、質問で書かれたように body(親要素) に対する background で center を指定すべきです。
ただ、center や パーセンテージなどは表示領域に対する相対位置であるため 1ピクセルのずれといったものは生じ得ます。
ご回答ありがとうございます。
「表示最大幅の高さを確保する」は色々な書籍で拝見していたのですが、
ハックが必要という点で避けておりました。
ご回答の内容が丁寧でとても分かりやすく、質問の問題点もクリアになりそうです。
みなさんがおっしゃる「body(親要素) に対する background で center」の動作(ずれ)も頭に入り、
とても良い勉強になりました。
No.5
- 回答日時:
既に余談ですが、参考程度に。
というか、#4で示した参考URIは覗く程度で結構です。
技術的なことはあまり説明されていません。
教養を深めるのは大いに結構ですが。
> ハックしたものが今後のブラウザに影響するのか、
どんなハックがどのUAで適用され得るのかということでしょうか。
#4でも述べましたがCSSの文法規則に反していない限り、UA側の致命的な問題さえなければハックがあることによる弊害は生じません。
CSS-hack はあくまで、適用される形でパースされるUAに対して有効なスタイルシート指定です。
CSS-hack や pass-filter の対応については以下が参考になるかもしれません。
http://dithered.chadlindstrom.ca/css_filters/
http://www.lucky-bag.com/archives/2006/06/css-ha …
Webページをひとつ作るにしても、CSSを書くにしても、ガイドラインはあるものの結局は製作者の自由です。
自身で、何がどう(広い意味で)影響するのかといったことが判断できるまで理解できるとWebページ作成術の幅が広がります。
ご回答ありがとうございます。
> #4でも述べましたがCSSの文法規則に反していない限り、UA側の致命的な問題さえなければハックがあることによる弊害は生じません。
なるほど、勉強になります。
これからは必要なハックは積極的に使用し、
技術的な引き出しを増やす事で自分の制作ガイドラインをより向上させたいと思います。
ご意見、誠にありがとうございました。
No.4
- 回答日時:
> ハックが必要という点で避けておりました。
なぜ避けるのですか?
各UAの実装差異を補完しクロスブラウザを実現させるには、pass-filter 或いは CSS-hack を用いることが現状では最適な対応です。
また、今回紹介したスターハックは CSS の文法的には適正です。
non-valid なコードに関しては利用を避ける必要がありますが、
妥当であり冗長でない今回のような例に関しては、それを避ける理由が見当たりません。
スターハックが妥当であるか否かという議論は参考URI先をご覧ください。
参考URL:http://www.hamashun.com/blog/2007/02/css_5.html
ご回答ありがとうございます。
今考えますと、ハックを避けていたのは私の技術的な問題ですね。
ハックしたものが今後のブラウザに影響するのか、
影響する際はメンテナンス(時間が必要)が必要だとへんに考えておりました。
要するにハックをきちんと理解していなかったからだと思います。
参考URLをしっかり読み、今後の技術として身につけたいと思います。
No.2
- 回答日時:
こんにちは。
考えられる原因としたら、
body {
background: url(http://www.geocities.jp/ajax3210/bg.gif) center top repeat-y;
}
の“center”の部分だと思います。
掲載されたソースを見る限り、wrapperの背景として画像をrepeat-Yで表示させたいんですよね?
でしたら・・
body {
margin:0;
padding:0;
text-align:center;
background:★;(背景色のみ)
}
#wrapper {
background: url(http://www.geocities.jp/ajax3210/bg.gif) left top repeat-y;
width:★px;(bg.gifのwidthと同じ幅)
margin-left:auto;
margin-right:auto;
}
.wrapper-inner {
width: 746px;
margin-left:auto;
margin-right:auto;
text-align:left;
}
で
<div id="wrapper"><div class="wrapper-inner">
<p>テスト</p>
</div></div>
にする。
入れ子になりますが、これなら背景も一緒に動くので、背景だけずれるということはなくなるんじゃないかと思います。
お試し下さい。
ご回答ありがとうございます。
ご回答のdivの入れ子でうまく表示はできますね。
一点、言い忘れていたのですが、
背景画像をブラウザの最上部から最下部まで表示させたいと思っています。
ですので、ご回答のソースですと、
コンテンツのボリュームが少ない場合、
ブラウザの最下部まで背景画像が届かない状態なのです。
やはり、divの背景画像で対応するしかないのでしょうか。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS htmltとcssのコードで 1 2022/11/26 13:37
- HTML・CSS <!DOCTYPE html> <html> <head> <meta charset="utf-8 2 2023/01/05 01:04
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<h1>タグの後の行間を詰めたい。
-
FireFoxで見るとブラウザの幅に...
-
aタグに直接style=""で:hoverを...
-
CSSのtransform: translate(-50...
-
INPUT TEXT内の文字位置を指定...
-
インラインフレームの表示位置...
-
テキストボックスの文字を右揃...
-
macとwindowsのレイアウト崩れ...
-
paddingを指定するとwidthやhei...
-
コードを書いて下さい( ; ; )...
-
CSS セルごとリンクにする際、...
-
中央揃えで真ん中にきた文字列...
-
可変でサイト全体を中央に配置...
-
なぜ左に寄っているの?
-
ページ左右上下の余白。
-
htmlのタグ間の謎の空白
-
css。横並びBOXに長文textを流...
-
CSS(スタイルシート)で画像の縦...
-
IBMのホームページビルダー10で
-
HTMLフォームのSELECTの幅を一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSSのtransform: translate(-50...
-
aタグに直接style=""で:hoverを...
-
<h1>タグの後の行間を詰めたい。
-
HTMLフォームのSELECTの幅を一...
-
インラインフレームの表示位置...
-
コードを書いて下さい( ; ; )...
-
端から端まで横線を引きたい
-
INPUT TEXT内の文字位置を指定...
-
なぜ左に寄っているの?
-
FireFoxで見るとブラウザの幅に...
-
iPhone用のサイトの文字がずれ...
-
<legend>で表示されるタイトル...
-
Formタグのブロックの高さについて
-
CSSでh1とその下の文字との行間...
-
Dreamweaverで画面サイズを一定...
-
macとwindowsのレイアウト崩れ...
-
ホームページビルダー 空白の...
-
text-alignの解除の方法
-
パソコンのみで反映される余白...
-
Firefox 横スクロールバーを表...
おすすめ情報