可変幅の浮動要素を水平方向に中央揃えするには?
編集:フローティング要素にdiv
を含むコンテナを使用して、コンテナにwidth
を指定することで、これが既に機能しています(その後、margin: 0 auto;
コンテナ用)。包含要素を使用せずに、または少なくとも包含要素にwidth
を指定せずに実行できるかどうかを知りたかっただけです。
フロートされて中央に配置される要素は、id="content"
を持つdiv
であると仮定します...
<body>
<div id="wrap">
<div id="content">
This will be centered
</div>
</div>
</body>
そして、以下を適用しますCSS:
#wrap {
float: left;
position: relative;
left: 50%;
}
#content {
float: left;
position: relative;
left: -50%;
}
ここに良い reference があります。
.center {
display: table;
margin: auto;
}
width
にはfit-content
値を使用できます。
#wrap {
width: -moz-fit-content;
width: -webkit-fit-content;
width: fit-content;
margin: auto;
}
注:最新のブラウザでのみ機能します。
水平方向に中央揃えしたいDIV
があるとします:
<div id="foo">Lorem ipsum</div>
CSSでは、これでスタイルを設定します。
#foo
{
margin:0 auto;
width:30%;
}
上と下のマージンがゼロピクセルであり、左右どちらかで、どれだけ均等にする必要があるかを自動的に判断します。
幅が100%でない限り、幅に何を入れてもかまいません。そうでなければ、何にも中心を置くことはないでしょう。
ただし、左または右にフロートすると、ページ上の要素の通常のフローから外れてしまい、自動マージン設定が機能しなくなるため、ベットはオフになります。
これは、id = container(外側のdiv)およびid = contains(内側のdiv)の場合に機能します。強く推奨される解決策の問題は、ブラウザがleft:-50%属性に対応しようとしているときに、場合によっては水平スクロールバーになることです。 適切なリファレンスがあります このソリューションの場合
#container {
text-align: center;
}
#contained {
text-align: left;
display: inline-block;
}
ここでの一般的な答えはうまくいく場合もありますが、対処が難しい水平スクロールバーを作成する場合もあります。特に、広い水平ナビゲーションと大きなプルダウンメニューを扱う場合です。これらのEdgeのケースを回避するのに役立つ、さらに軽量なバージョンを次に示します。
#wrap {
float: right;
position: relative;
left: -50%;
}
#content {
left: 50%;
position: relative;
}
より具体的にあなたの質問に答えるには、おそらくいくつかの包含要素を設定せずに行うことはできませんが、幅の値を指定せずに行うことは非常に可能です。誰かが頭痛の種を救うことを願っています!
display: inline block
とalign
をcenter
に使用することはできませんか?
例 。