コンテンツの幅が960pxで、ビジュアル画像が1280pxあるけど、横スクロールは出したくない、っていうときの対応方法です。
普段なんとなく慣れで作ってしまっているのですが、正攻法を調べようとしたところ、ググっても出て来なかった(多分キーワードが良くない)ので、サンプルを作っておきました。
※IE6は横スクロールでます。
追記(2013/3/29 12:36)
コンテンツエリアよりウィンドウを狭くして横スクロールバーが出た場合、横スクロールすると画像が途切れてしまう問題に対応しました。
HTML
<div id="visual">
<div class="image-wrap"><img src="http://placekitten.com/g/1280/300" width="1280" height="300" alt=""></div>
</div>
CSS
#visual {
/* 表示エリアを100%にする */
/* コンテンツエリアより狭くしない ※追記 */
/* 内包要素が100%を超えたら隠す */
width: 100%;
min-width: 960px;
overflow: hidden;
}
#visual .image-wrap {
/* コンテンツエリアと同じ幅 */
/* 中央寄せ */
width: 960px;
margin: 0 auto;
/* IE6対応 */
_position: relative;
_height: 300px;
_z-index: 1;
}
#visual .image-wrap img {
/* line-heightを無くす */
/* コンテンツエリアからはみ出た幅をネガティブマージンでズラす */
display: block;
margin: 0 -160px;
/* IE6対応 */
_position: absolute;
_z-index: 1;
}
body に overflow:hidden を指定して、後々面倒臭くなったような記憶があるので、div 1つ増やして対応しています。
ネガティブマージンはleftだけでもいい気もしますが、ちゃんとチェック出来ていないので両側に入れています。
ツッコミなどありましたら、コメントまたはツイッターでお願いします。