幅が100%のdivがあります。
ボタンを中央に配置したいのですが、どうすればよいですか。
<div style="width:100%; height:100%">
<button type="button">hello</button>
</div>
更新された回答
私はそれが積極的な答えであることに気付いたのでアップデートします、しかしFlexboxは今正しいアプローチになるでしょう。
垂直方向と水平方向の配置.
#wrapper {
display: flex;
align-items: center;
justify-content: center;
}
水平にする(主フレックス軸が水平である限りデフォルトです)
#wrapper {
display: flex;
justify-content: center;
}
固定幅でフレックスボックスなしの元の回答
元のポスターが縦と中央の位置合わせをボタンの幅と高さを固定するために非常に簡単にしたい場合は、以下を試してください。
_ css _
button{
height:20px;
width:100px;
margin: -20px -50px;
position:relative;
top:50%;
left:50%;
}
ちょうど水平方向の配置には
button{
margin: 0 auto;
}
または
div{
text-align:center;
}
あなたはただ作ることができます
<div style="text-align: center;">
<input type="button" value="button">
</div>
またはこのようにすることができます
<div>
<input type="button" value="button" style="display: block; margin: 0 auto;">
</div>
最初のものはdiv内のすべてを中央揃えにします。もう一方はボタンだけを中央揃えにします。
et voila:
button {
width: 100px; // whatever your button's width
margin: 0 auto; // auto left/right margins
}
更新 :OPが水平方向と垂直方向の中央を探している場合、 この答え は固定のwidth/height要素に対して行います。
マージン:0自動。水平方向のセンタリングのみの正解です。 jqueryを使用して、このようなことがうまくいくように両方の方法を中央揃えにします。
var cenBtn = function() {
var W = $(window).width();
var H = $(window).height();
var BtnW = insert button width;
var BtnH = insert button height;
var LeftOff = (W / 2) - (BtnW / 2);
var TopOff = (H / 2) - (BtnH /2);
$("#buttonID").css({left: LeftOff, top: TopOff});
};
$(window).bind("load, resize", cenBtn);
更新... 5年後 、親DIV要素にflexboxを使用してボタンを水平方向と垂直方向の両方に簡単に中央揃えできます。
最高のサポートのために、すべてのブラウザプレフィックスを含める
div {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-align : center;
-moz-box-align : center;
-ms-flex-align : center;
-webkit-align-items : center;
align-items : center ;
justify-content : center;
-webkit-justify-content : center;
-webkit-box-pack : center;
-moz-box-pack : center;
-ms-flex-pack : center;
}
#container {
position: relative;
margin: 20px;
background: red;
height: 300px;
width: 400px;
}
#container div {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-moz-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
justify-content: center;
-webkit-box-pack: center;
-moz-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
}
<!-- using a container to make the 100% width and height mean something -->
<div id="container">
<div style="width:100%; height:100%">
<button type="button">hello</button>
</div>
</div>
提供されている詳細は限られていますが、最も単純な状況を想定し、text-align: center
を使用できるとします。
フレックスボックスの使用
.Center {
display: flex;
align-items: center;
justify-content: center;
}
それからボタンにクラスを追加します。
<button class="Center">Demo</button>
あなたはそれを単純にするべきです。
最初にあなたのテキストまたはボタンの最初の位置がわかります:
<div style="background-color:green; height:200px; width:400px; margin:0 0 0 35%;">
<h2> Simple Text </h2>
<div>
<button> Simple Button </button>
</div>
</div>
このCSSコード行を h2 タグまたは div タグに追加することによって、 ボタンタグを保持する
style: "text-align:center;"
最終結果コードは次のようになります。
<div style="background-color:green; height:200px; width:400px; margin:0 0 0 35%;">
<h2 style="text-align:center;"> Simple Text </h2> <!-- <<--- here the changes -->
<div style="text-align:center"> <!-- <<--- here the changes -->
<button> Simple Button </button>
</div>
</div>
これに遭遇し、私は私が使った解決策もそのまま残したいと思いました。それはline-height
とtext-align: center
を使って垂直と水平の両方のセンタリングをすることです:
ほとんどの場合に適用される非常に単純な答えは、単にマージンを0 auto
に設定し、表示をblock
に設定することです。あなたは私のデモで私が自分のボタンをどのように中心に置いているかを見ることができます CodePen
あなたの場合のように動的に計算される幅の<button type = "button">
内で垂直方向と水平方向の両方に<div>
をセンタリングするためには、これはすべきことです:
text-align: center;
を折り返し<div>
に設定します。これは、<div>
(またはウィンドウ)のサイズを変更するときはいつでもボタンを中央揃えにします。垂直方向の配置では、ボタンにmargin: valuepx;
を設定する必要があります。これはvaluepx
の計算方法に関する規則です。
valuepx = (wrappingDIVheight - buttonHeight)/2
これは JS Binデモ です。
Divを#div、buttonを#buttonとします。
#div {
display: table-cell;
width: 100%;
height: 100%;
text-align: center;
vertical-align: center;
}
#button {}
それから、いつものようにボタンをdivに入れ子にします。
親要素のサイズを気にせずにボタンを縦方向と横方向に中央揃えするレスポンシブCSSオプション (明確さと分離のためにデータ属性フックを使用) :
HTML
<div data-element="card">
<div data-container="button"><button>CTA...</button></div>
</div>
CSS
[data-container="button"] {
position: absolute;
top: 50%;
text-align: center;
width: 100%;
}
最も簡単な方法は、それを "div"として入力して "margin:0 auto"を指定することですが、中央に配置したい場合は、幅を指定する必要があります。
Div{
Margin: 0 auto ;
Width: 100px ;
}
ボタンをdivの中央に配置するレスポンシブな方法:
<div
style="display: flex;
align-items: center;
justify-content: center;
margin-bottom: 2rem;">
<button type="button" style="height: 10%; width: 20%;">hello</button>
</div>