[解決済み] 位置は固定だが、容器に対して相対的
質問
を修正しようとしています。
div
を使って、常に画面上部に張り付くようにしています。
position: fixed;
top: 0px;
right: 0px;
しかし
div
は中央揃えのコンテナの中にあります。私が
position:fixed
を修正します。
div
ブラウザウィンドウに対して相対的で、ブラウザの右側に寄っているような状態です。そうではなく、コンテナに対して相対的に固定されるべきです。
私は知っている
position:absolute
に対して相対的に要素を固定するために使用することができます。
div
しかし、ページを下にスクロールすると、その要素は消えてしまい
position:fixed
.
これを実現するためのハックや回避策はあるのでしょうか?
解決方法は?
簡単な答え
いいえ。
(CSS変換で可能になりました。 以下の編集を参照してください)
長い回答です。固定配置を使用する場合の問題は、そのために要素 フローから外れる 親がいないのと同じなので、親との相対的な位置関係を変更することができない。 しかし、コンテナの幅が固定で既知の場合は、次のような方法があります。
#fixedContainer {
position: fixed;
width: 600px;
height: 200px;
left: 50%;
top: 0%;
margin-left: -300px; /*half the width*/
}
編集(2015/03):
これは古い情報です。 CSS3 transform の魔法の力を借りて、動的なサイズのコンテンツを(水平方向と垂直方向の)中央に配置することができるようになりました。 同じ原理が適用されますが、コンテナのオフセットにマージンを使用する代わりに、次のように使用できます。
translateX(-50%)
. これは、幅が固定でない限り、どの程度オフセットすればよいのか分からないため、上記のマージントリックではうまくいかず、相対値を使うことができません(たとえば
50%
というのも、適用される要素ではなく、親要素に対する相対的な値になってしまうからです。
transform
は異なる挙動をします。 その値は、適用される要素に対する相対的なものです。 したがって
50%
に対して
transform
は要素の幅の半分を意味し、一方
50%
のマージンは、親の幅の半分になります。これは
IE9+対応
上記の例と同様のコードを使用して、完全に動的な幅と高さを使用して同じシナリオを再現してみました。
.fixedContainer {
background-color:#ddd;
position: fixed;
padding: 2em;
left: 50%;
top: 0%;
transform: translateX(-50%);
}
中央に配置したい場合は、それも可能です。
.fixedContainer {
background-color:#ddd;
position: fixed;
padding: 2em;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
デモの様子
jsFiddleです。水平方向のみ中央揃え
jsFiddleです。水平方向と垂直方向の中央揃え
オリジナルのクレジットは、ユーザー
aaronk6
にてご指摘いただきました。
この回答
関連
-
[css3]スクロールバー美化効果を実現するcss3サンプルコード
-
[css3]Apple携帯電話のロック解除のためのCSS3サンプルフォントシャインエフェクト
-
[解決済み] div' コンテナに合わせて画像を自動リサイズするにはどうしたらいいですか?
-
[解決済み] コンテナの幅に応じたフォントの拡大縮小
-
[解決済み] 位置は絶対だが、親に対して相対的
-
[解決済み] コンテナからはみ出したフレックスアイテムの上までスクロールできない
-
[解決済み】CSSで子DIVの幅を親DIVより広くする方法はありますか?
-
[解決済み】CSSによる固定divの水平方向のセンタリング?
-
[解決済み] 固定位置のdivがあり、コンテンツがあふれた場合、スクロールする必要がある。
-
[解決済み] Position: fixed" の div の幅を親 div からの相対値で設定する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
cssで背景色の半透明化を実現する2つの方法
-
[CSSチュートリアル】カットコーナー+ボーダー+プロジェクション+コンテンツ背景色のグラデーション効果を実現するCSS
-
[CSSレイアウト例】float(フロート)、position(ポジション)プロパティの差分によるCSSレイアウト
-
[CSSチュートリアル】CSS擬似要素::マーカー解説
-
[css3]ピュアCSS3によるネオンライト効果
-
[CSSチュートリアル】ピュアCSSで実装した通知バーの3種類のスクロール効果
-
[CSSチュートリアル】background-positionプロパティのパーセンテージ値の使い方を探る
-
[css3]赤いパケットのジッター効果を実現するCSS3
-
[CSSチュートリアル】背景画像画面の適応的な実装を実現するCSS
-
[解決済み】要素を親からの相対的な位置に固定することはできますか?[重複している]。