最終版
要約すると、タスクは基本的に次のとおりです。
- 2つの要素の幅が異なる幅が1つの行に並んで配置されている
- この行は、ヘッダーの一種として常に中央に配置する必要があります
- 画面が800pxより小さい場合にのみ、水平スクロールバーが表示されます
- 見えないエッジは左側と右側でトリミングされます
これは可能な解決策です:
jsfillde.netで購入する前に試してください
そして少し説明:
HTMLマークアップ
<div class="wrapper">
<div class="center">
<img src="" alt="">
<object></object>
</div>
</div>
CSS
body, html {
width: 100%;
min-width: 800px;
height: 100%;
margin: 0;
padding: 0;
}
div.wrapper {
width: 100%;
height: 134px;
overflow: hidden;
}
div.center {
position: relative;
margin:0 auto;
width: 800px;
height: 100%;
}
div.center > img {
position: absolute;
top: 0;
left: -499px;
}
div.center > object {
position: absolute;
top: 0;
left: 560px;
}
「仕組み」について
最初のdivwrapper
は、左側から右側までの領域にまたがっています。これは常に見える空間です。overflow: hidden;
その要素で使用したエッジを切り取るため。したがって、突き出たものはすべて見えなくなります。
2番目のdivcenter
は、を使用してビューポートの中央に配置されmargin: 0 auto
ます。幅は固定されています。800px
これが質問の望ましい最小幅だったので、私は使用しました。他のワイドでも動作します。
次に、2つのヘッダー要素を揃えます。どちらも幅が固定されています。この場合、画像は1059ピクセル、オブジェクトは861ピクセルで、合計で1920ピクセルになります。これらの要素の中央は960pxで明らかです。ページの最小幅が800pxであるため、コンテナは実際には400pxになってcenter
います。したがって、 160ピクセルのシフトがあるため、両方の要素の実際の合流点は、このコンテナ内で560ピクセルになります。したがって、オブジェクトの場合は簡単です。単純なセットです。ただし、左側のコンテナを配置する必要があります。この時点で終了します。幅は1059pxで、 560pxから差し引きます。left: 560px;
の最終値を取得しますleft: -499px;
。
中央のコンテナが中央に配置されるため、両方の要素も中央に配置されます。また、wrapper
'オーバーフローが非表示になっているため、ビューポートの端で両端が切り取られます。スクロールバーは表示されません。
最後に、残っているのは1つだけです。-tagに設定min-width:800px
すると、ウィンドウが800px<body>
より小さい場合に、スクロールバーがすぐに表示されるようになります。
最初の答え
position: absolute
position
親を明示的に設定する場合を除いて、親フローから要素を取り出します。
.container {
position: relative;
}
これでうまくいくはずですが、マークアップでテストしませんでした。