Twitter Bootstrap 3 のコンテナ内の1列サイズのdiv(12列)を中心に配置するにはどうすればよいですか。
.centered {
background-color: red;
}
<body class="container">
<div class="col-lg-1 col-offset-6 centered">
<img data-src="holder.js/100x100" alt="" />
</div>
</body>
クラス.centered
を持つdiv
をコンテナ内の中央に配置する必要があります。 div
が複数ある場合は行を使用できますが、今のところは1列のサイズをコンテナの中央に配置したdiv
が必要です(12列)。
また、div
を半分にすることを意図していないため、上記のアプローチが十分に有効であるかどうかもわかりません。 div
の外側に空きスペースは必要ないので、div
の内容はそれに比例して小さくなります。 divの外側の空きスペースを均等に分散させたい (コンテナの幅が1列になるまで縮小する).
Bootstrap 3で<div>
列を中央揃えにするには2つの方法があります。
最初の方法ではBootstrap独自のオフセットクラスを使用するので、マークアップを変更したりCSSを追加したりする必要はありません。重要なのは、 行の残りのサイズの半分に等しいオフセットを設定することです 。したがって、たとえば、サイズ2の列は、5のオフセットを追加することによって中央揃えになります。それは(12-2)/2
です。
マークアップでは、これは次のようになります。
<div class="row">
<div class="col-md-2 col-md-offset-5"></div>
</div>
さて、この方法には明らかな欠点があります。 偶数列サイズ に対してのみ機能するので、.col-X-2
、.col-X-4
、col-X-6
、col-X-8
、およびcol-X-10
のみがサポートされます。
margin:auto
) 実績のあるmargin: 0 auto;
手法を使用することで、 任意の列サイズを中央揃えにすることができます 。あなたはただBootstrapのグリッドシステムによって追加される浮遊の世話をする必要があります。次のようにカスタムCSSクラスを定義することをお勧めします。
.col-centered{
float: none;
margin: 0 auto;
}
これで、任意の画面サイズで任意の列サイズに追加でき、Bootstrapのレスポンシブレイアウトでシームレスに機能します。
<div class="row">
<div class="col-lg-1 col-centered"></div>
</div>
注: どちらの方法を使用しても、.row
要素をスキップして.container
内の中央に列を配置することはできますが、コンテナークラスのパディングにより、実際の列サイズにはほとんど違いがありません。
更新:
V3.0.1のBootstrapには、center-block
を使用するmargin: 0 auto
という名前の組み込みクラスがありますが、float:none
が欠落しているため、これをCSSに追加してグリッドシステムで機能させることができます。
中央揃えの列 の推奨される方法は "offset"を使用することです(例:col-md-offset-3
)
センタリング要素 の場合、center-block
ヘルパークラス があります。
text-center
を center text (およびインライン要素)にも使用できます。
EDIT - コメントで述べたように、center-block
は列の内容とdisplay:block
要素に作用しますが、Bootstrapはfloat
を使用するため、列自体には作用しません(col-*
div)。
Bootstrap 4 で、 centering メソッドが変更されました。
text-center
はまだdisplay:inline
要素に使用されていますmx-auto
は、center-block
を中央display:block
要素に置き換えます。offset-*
ormx-auto
はグリッド列を中央揃えにするために使用できますmx-auto
(自動x軸余白)は、定義された幅、(display:block
、vw
、px
など)を持つdisplay:flex
または%
要素を中央に配置します。 グリッドボックスではデフォルトで が使用されているため、さまざまなFlexboxのセンタリング方法もあります。
BS4の垂直方向のセンタリングについては、 https://stackoverflow.com/a/41464397/171456 を参照してください。
Bootstrap 3.1.1は.center-block
で動作しており、このヘルパークラスは列システムで動作します。
ブートストラップ3 ヘルパークラスセンター 。
このjsfiddle DEMO を確認してください。
<div class="container">
<div class="row">
<div class="center-block">row center-block</div>
</div>
<div class="row">
<div class="col-md-6 brd">
<div class="center-block">1 center-block</div>
</div>
<div class="col-md-6 brd">
<div class="center-block">2 center-block</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-2 col-center-block">row col-xs-2 col-center-block</div>
</div>
col-center-block
ヘルパークラスを使用して行の中央に配置します。
.col-center-block {
float: none;
display: block;
margin: 0 auto;
/* margin-left: auto; margin-right: auto; */
}
以下をカスタムCSSファイルに追加するだけです。ブートストラップCSSファイルを直接編集することはお勧めできません。また、 _ cdn _ を使用する機能は無効になります。
.center-block {
float: none !important
}
なんで?
ブートストラップCSS(バージョン3.7以下)は margin:0 autoを使用します。 しかし、サイズコンテナのfloatプロパティによって上書きされます。
_ ps _ :
このクラスを追加したら、クラスを正しい順序で設定することを忘れないでください。
<div class="col-md-6 center-block">Example</div>
Bootstrap 3 この.center-block
の組み込みクラスがあります
.center-block {
display: block;
margin-left: auto;
margin-right: auto;
}
まだ2.Xを使っているのであれば、これをCSSに追加してください。
列を中央揃えにするための私のアプローチは、列にdisplay: inline-block
を、コンテナーの親にtext-align: center
を使用することです。
CSSクラスを 'centered'でrow
に追加するだけです。
<div class="container-fluid">
<div class="row centered">
<div class="col-sm-4 col-md-4">
Col 1
</div>
<div class="col-sm-4 col-md-4">
Col 2
</div>
<div class="col-sm-4 col-md-4">
Col 3
</div>
</div>
</div>
.centered {
text-align: center;
font-size: 0;
}
.centered > div {
float: none;
display: inline-block;
text-align: left;
font-size: 13px;
}
JSFiddle: http://jsfiddle.net/steyffi/ug4fzcjd/
ブートストラップ version 3には.text-centerクラスがあります。
このクラスを追加するだけです:
text-center
それは単にこのスタイルをロードします:
.text-center {
text-align: center;
}
例:
<div class="container-fluid">
<div class="row text-center">
<div class="col-md-12">
Bootstrap 4 is coming....
</div>
</div>
</div>
Bootstrap v4では、.justify-content-center
を.row
<div>
に追加するだけでこれを実現できます。
<div class="row justify-content-center">
<div class="col-1">centered 1 column</div>
</div>
https://getbootstrap.com/docs/4.0/utilities/flex/#justify-content
これはうまくいきます。ハックな方法かもしれませんが、うまくいきます。応答性(Y)についてテストされました。
.centered {
background-color: teal;
text-align: center;
}
コンテンツを表示する1つの列をcol-xs-12(mobile-first ;-)に設定し、中央揃えのコンテンツの幅を制御するためだけにコンテナを構成するだけです。
.container {
background-color: blue;
}
.centered {
background-color: red;
}
<body class="container col-xs-offset-3 col-xs-6">
<div class="col-xs-12 centered">
<img data-src="holder.js/100x100" alt="" />
</div>
</body>
<body class="container col-xs-offset-1 col-xs-10">
<div class="col-xs-12 centered">
<img data-src="holder.js/100x100" alt="" />
</div>
</body>
デモについては、 http://codepen.io/Kebten/pen/gpRNMe :-)を参照してください。
行にtext-center
を使用することができ、内部divがdisplay:inline-block
を持つことを確認できます(float
ではなく)。
として:
<div class="container">
<div class="row text-center" style="background-color : black;">
<div class="redBlock">A red block</div>
<div class="whiteBlock">A white block</div>
<div class="yellowBlock">A yellow block</div>
</div>
</div>
そしてCSS:
.redBlock {
width: 100px;
height: 100px;
background-color: aqua;
display: inline-block
}
.whiteBlock {
width: 100px;
height: 100px;
background-color: white;
display: inline-block
}
.yellowBlock {
width: 100px;
height: 100px;
background-color: yellow;
display: inline-block
}
<div class="container-fluid">
<div class="row">
<div class="col-lg-4 col-lg-offset-4">
<img src="some.jpg">
</div>
</div>
</div>
もう1つのオフセットのアプローチは、2つの空の行を持つことです。次に例を示します。
<div class="col-md-4"></div>
<div class="col-md-4">Centered Content</div>
<div class="col-md-4"></div>
これはおそらく最良の解決策ではありませんが、これに対するもう1つの創造的な解決策があります。 koala_devで指摘されているように、列オフセットは偶数列サイズに対してのみ機能します。ただし、行を入れ子にすることで、不均等な列を中央に配置することもできます。
元の質問に固執するには、1の列を12のグリッドの内側に配置します。
例えば:
<div class="container">
<div class="row">
<div class="col-md-offset-5 col-md-2">
<div class="row">
<div class="col-md-offset-3 col-md-6">
centered column with that has an "original width" of 1 col
</div>
</div>
</div>
</div>
</div>
this fiddle を参照してください。結果も表示するには、出力ウィンドウのサイズを大きくする必要があります。そうしないと、列が折り返されます。
色を中央に配置するには、以下のコードを使用する必要があります。 colsはmargin auto以外のフロータ要素です。また、noneをfloatに設定します。
<body class="container">
<div class="col-lg-1 col-md-4 centered">
<img data-src="holder.js/100x100" alt="" />
</div>
</body>
上記のcol-lg-1をcenterのクラスにセンタリングするために、次のように書きます。
.centered {
float: none;
margin-left: auto;
margin-right: auto;
}
Div内のコンテンツを中央揃えにするには、text-align:center
を使用します。
.centered {
text-align: center;
}
モバイルではなく、デスクトップとより大きな画面にのみ集中させたい場合は、次のメディアクエリを使用してください。
@media (min-width: 768px) {
.centered {
float: none;
margin-left: auto;
margin-right: auto;
}
}
モバイル版のみにdivを集中させるには、以下のコードを使用します。
@media (max-width: 768px) {
.centered {
float: none;
margin-left: auto;
margin-right: auto;
}
}
これは私のコードではありませんが、完璧に動作し(Bootstrap 3でテスト済み)、col-offsetをいじる必要はありません。
デモ:
/* centered columns styles */
.col-centered {
display: inline-block;
float: none;
/* inline-block space fix */
margin-right: -4px;
background-color: #ccc;
border: 1px solid #ddd;
}
<div class="container">
<div class="row text-center">
<div class="col-xs-6 col-centered">Column 6</div>
<div class="col-xs-6 col-centered">Column 6</div>
<div class="col-xs-3 col-centered">Column 3</div>
<div class="col-xs-3 col-centered">Column 3</div>
<div class="col-xs-3 col-centered">Column 3</div>
</div>
</div>
メカニズムは以下のとおりです。
Koala_devが彼のアプローチ1で使用したように、私は使用が制限されているセンターブロックやマージンの代わりにoffsetメソッドを好むでしょう、しかし彼は述べました:
さて、この方法には明らかな欠点があります。それは偶数列サイズに対してのみ機能するので、.col-X-2、.col-X-4、col-X-6、col-X-8、およびcol-X-のみです。 10がサポートされています。
これは、奇数列に対して次の方法で解決できます。
<div class="col-xs-offset-5 col-xs-2">
<div class="col-xs-offset-3">
// Your content here
</div>
</div>
あなたのブートストラップに非常に柔軟なソリューションflexboxを使うことができます。
justify-content: center;
あなたのコラムを中央に置くことができます。
flexを調べてください。
.col-
内で単一の.row
のみを中央揃えする必要はないので、ターゲット列の.row
のラッピングに次のクラスを設定します。
.col-center > [class*="col-"] {
float: none;
margin-left: auto;
margin-right: auto;
}
例
<div class="full-container">
<div class="row col-center">
<div class="col-xs-11">
Foo
</div>
<div class="col-xs-11">
Bar
</div>
</div>
</div>
Bootstrap行の複数の列を中央揃えにし、colsの数が奇数になるようにするには、単にそのcss
クラスをその行のすべての列に追加します。
.many-cols-centered { // To horizontally center bootstrap odd cols, eg col-lg-9, col-md-3, works well in lg
display:inline-block;
float:none;
}
それであなたのHTMLでは、次のようなものがあります。
<div class="row text-center"> <!-- text-center centers all text in that row -->
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12 many-cols-centered">
<img src='assets/image1.jpg'>
<h3>You See</h3>
<p>I love coding.</p>
</div>
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12 many-cols-centered">
<img src='assets/image2.jpg'>
<h3>You See</h3>
<p>I love coding.</p>
</div>
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-12 many-cols-centered">
<img src='assets/image3.jpg'>
<h3>You See</h3>
<p>I love coding.</p>
</div>
</div>
グリッドを埋め尽くす正確な数がわからないときに画面の中央の列要素を中心に探している人のために、クラス名を返すためのJavaScriptを少し書きました。
function colCalculator(totalNumberOfElements, elementsPerRow, screenSize) {
var arrayFill = function (size, content) {
return Array.apply(null, Array(size)).map(String.prototype.valueOf, content);
};
var elementSize = parseInt(12 / elementsPerRow, 10);
var normalClassName = 'col-' + screenSize + '-' + elementSize;
var numberOfFittingElements = parseInt(totalNumberOfElements / elementsPerRow, 10) * elementsPerRow;
var numberOfRemainingElements = totalNumberOfElements - numberOfFittingElements;
var ret = arrayFill(numberOfFittingElements, normalClassName);
var remainingSize = 12 - numberOfRemainingElements * elementSize;
var remainingLeftSize = parseInt(remainingSize / 2, 10);
return ret.concat(arrayFill(numberOfRemainingElements, normalClassName + ' col-' + screenSize + '-Push-' + remainingLeftSize));
}
あなたが5つの要素を持っていて、あなたがmd
スクリーン上で行ごとに3つを持ちたいなら、あなたはこれをします:
colCalculator(5, 3, 'md')
>> ["col-md-4", "col-md-4", "col-md-4", "col-md-4 col-md-Push-2", "col-md-4 col-md-Push-2"]
覚えておいて、第二引数は12で割り切れる必要があります。
このコードを試してください。
<body class="container">
<div class="col-lg-1 col-lg-offset-10">
<img data-src="holder.js/100x100" alt="" />
</div>
</body>
ここで私はcol-lg-1を使いました、そして大きなデバイスのdivを正しく中心に置くためにオフセットは10であるべきです。中規模から大規模のデバイスを中心に扱う必要がある場合は、lgをmdなどに変更するだけです。
単純にクラスtext-center
を使うことをお勧めします。
<body class="container">
<div class="col-md-12 text-center">
<img data-src="holder.js/100x100" alt="" />
</div>
</body>
Bootstrap 4を使用してdivクラスでmx-auto
を使用します。
<div class="container">
<div class="row">
<div class="mx-auto">
You content here
</div>
</div>
</div>
これを行に入れると、内側のすべての列が中央に配置されます。
.row-centered {
display: flex;
justify-content: space-between;
}
より正確に言うと、Bootstrapのグリッドシステムには12の列があり、コンテンツを中央に配置するには、たとえば、コンテンツが1列を占めるようにします。 Bootstrapのグリッドの2列を占有し、2列の半分にコンテンツを配置する必要があります。
<div class="row">
<div class="col-xs-2 col-xs-offset-5 centered">
... your content / data will come here ...
</div>
</div>
'col-xs-offset-5'はグリッドシステムにコンテンツの配置場所を指示しています。
'col-xs-2'はグリッドシステムに残りの列のうち何個のコンテンツが占めるべきかを伝えています。
'centered'は、コンテンツを中央揃えにする定義済みクラスです。
これがBootstrapのグリッドシステムの中の例です。
列:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12年
.......オフセット........data。 .......使用されていない........
.rowまたは.colの内側に次のスニペットを追加します。これはBootstrap 4 *用です。
d-flex justify-content-center
これを試して
<div class="row">
<div class="col-xs-2 col-xs-offset-5"></div>
</div>
col-md-2
などの他のcol
も使用できます。
方法1:
<div class="container">
<div class="row">
<div class="col-md-2 col-md-offset-5">
YOUR CONTENT
</div>
</div>
</div>
方法2:
CSS
.float-center{float: none;}
<div class="container">
<div id="mydev" class="center-block float-center" style="width:75%;">
YOUR CONTENT
</div>
</div>
ブートストラップのヒント、例、およびツール: OnAirCode
!important
を追加することを忘れないでください。そうすれば、その要素が本当に中心にくることを確認できます。
.col-centered{
float: none !important;
margin: 0 auto !important;
}
ブートストラップ4ソリューション:
<div class="container">
<div class="row">
<div class="col align-self-center">
Column in the middle, variable width
</div>
</div>
</div>
ブートストラップ4を使えば、 here のように単にjustify-content-md-center
を試すことができます。
<div class="container">
<div class="row justify-content-md-center">
<div class="col col-lg-2">
1 of 3
</div>
<div class="col-md-auto">
Variable width content
</div>
<div class="col col-lg-2">
3 of 3
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-md-auto">
Variable width content
</div>
<div class="col col-lg-2">
3 of 3
</div>
</div>
</div>