IE6で1pxずれて正確にセンタリングできない件
IE6に、margin: auto;でセンタリングしても1pxだけ横にずれるというそこそこメジャーなCSSのバグがある。

こうなる。IE6のコンテンツ部分が左に1pxずれている。
久々にはまっちゃったのでぐぐらずに解決してみた。(ぐぐれよ)
要は、IE6だけ1pxずらしてちゃんとした位置にしてあげればいいので、無理矢理ずらしちゃう。
具体的な回避方法は2つ。
1つ目。potisionでコンテンツ部分をずらす。
- XHTML
<div id="wrapper"><p>コンテンツ</p></div>
- CSS
body {width: 300px;background: url(bg.jpg) center top repeat-y;margin: 0 auto;text-align: center;}div#wrapper {width: 298px;margin: 0 1px;}div#wrapper p {height: 250px;background: #C9DFBB;}*:first-child+html div#wrapper p {position: relative;left: 1px;}* html div#wrapper p {position: relative;left: 1px;}
wrapper以下のコンテンツ全部に付けないといけないけれど、wrapper直下のコンテンツは大分すればheader、mainContents、footerの3つくらいだしそんなに手間でもないかなと。
増えてもまとめ書きしちゃえばいいし。
※bodyに背景を与えている今回のような場合は、#wrapper自体にpositionとleftを与えてもOKです。
2つ目。ぐぐってみました。bodyに対して左paddingを与えてみる。
- CSS
* html body {padding-left: 1px;}*:first-child+html body {padding-left: 1px;}
わぁ。これは便利。一発ですね。さすがグーグル先生。
どっち使う?って言ったら2つ目使いますね。わかりやすいし。
で、実際使ってみたら、一部うまくいったけどなぜか一部逆にずれた…。
原因不明で気持ち悪かったので結局1つ目を使いました。
うまくいった人は極短いコードで済むし便利なのでおすすめです。
とりあえずお試しアレ。
positionなら、原因不明でも部分的に調整っていうこともできるので、使い勝手はいいです。
その他にもぐぐってみたところ、背景画像自体で1pxずらしたものを用意するなんて方法があるみたいですが、ちょっと画像を用意するのは面倒だったので、potisionを使おうかなと思います。
Firefox3が出たばかりですが、本当にIEどうにかならないものですかね。
IEのシェア落ちないかなぁ(´・ω・`)
- Jun 19, 2008 1:58 AM
- コメント(0)
- トラックバック(0)
-
Track back
このエントリーのトラックバックURL
- Tag Cloud
-
- Actionscript
- AdSense
- Amazon
- API
- blog
- blogパーツ
- bookmarklet
- CG
- cookie
- css
- firefox
- flash
- gmail
- greasemonkey
- hack
- IE
- IE6
- IE7
- Javascript
- jQuery
- macbook
- mixi
- MT
- MT3
- MT4
- music
- opera
- RSS
- safari
- Second Life
- SEO
- Sleipnir
- tips
- tumblr
- webサービス
- webデザイン
- web制作
- xhtml
- XSS
- Yahoo
- はてな
- アイデア
- アクセス解析
- アニメ
- ウィジェット
- ウィルス
- サーバー
- セキュリティ
- ツール
- デザイン
- ニコニコ動画
- ネタ
- バグ
- フリーソフト
- プラグイン
- メディア
- ユーザビリティ
- リニューアル
- 仕事
- 便利
- 写真共有サイト
- 印刷
- 広告
- 携帯電話
- 映画
- 椎名林檎
- 検索
- 考える
- 考え方
- 裏技
- 解決法
- 雑記
- 電気グルーヴ



