X個の列が可能な行があります。
<div class="container">
<div class="row">
<div class="col-lg-3 col-sm-4 col-xs-6">content</div>
<div class="col-lg-3 col-sm-4 col-xs-6">content</div>
<div class="col-lg-3 col-sm-4 col-xs-6">content</div>
<div class="col-lg-3 col-sm-4 col-xs-6">content</div>
<div class="col-lg-3 col-sm-4 col-xs-6">content</div>
<div class="col-lg-3 col-sm-4 col-xs-6">content</div>
<!-- ... and so on ... -->
</div>
</div>
ここで、すべての小さな画面の列にmargin-top:20px
を追加し、4つ以上ある場合は2つの「行」が表示され、その間にいくらかのスペースが必要になるため、大きな画面の列に同じマージンを追加します。
CSSを使用するだけでどうにか可能ですか?
上マージンが必要なときはいつでもメディアクエリを使用できます。
@media (max-width: 767px) {
.col-xs-6 {
margin-top:20px;
}
}
追伸-合計.col-*
の.row
が12を超える(つまり: http://getbootstrap.com/css/#grid-example-mixed )。それは単にラップを引き起こします。この手法を使用するドキュメントにはいくつかの例があります。通常、ネストした行には理想的ではありません。
似たようなものが必要だったので、私が思いついたソリューションを次に示します。将来の読者(および私)のために文書化する
$res-list: (xs: (0px, 767px), sm: (768px, 991px), md: (992px, 1199px), lg: (1200px, 9999px));
$dir-list: (t: top, r: right, b: bottom, l: left);
@for $r from 1 through 10{
@each $res-abbr, $res-vals in $res-list{
@media (min-width: nth($res-vals, 1)) and (max-width: nth($res-vals, 2)) {
@each $dir-abbr, $dir-name in $dir-list{
$x: $r * 5;
.m#{$dir-abbr}-#{$res-abbr}-#{$x}{
margin-#{$dir-name}: #{$x}px;
}
.m#{$dir-abbr}-#{$res-abbr}-#{$r}p{
margin-#{$dir-name}: #{$r}unquote('%');
}
}
}
}
}
このSASSコードは、次の行に沿ってクラスを生成します
@media (min-width: 0px) and (max-width: 767px) {
.mt-xs-5 { margin-top: 5px; }
.mt-xs-1p { margin-top: 1%; }
.mr-xs-5 { margin-right: 5px; }
.mr-xs-1p { margin-right: 1%; }
.mb-xs-5 { margin-bottom: 5px; }
.mb-xs-1p { margin-bottom: 1%; }
.ml-xs-5 { margin-left: 5px; }
.ml-xs-1p { margin-left: 1%; }
}
したがって、コンテンツエディターは.mt-xs-10
を使用して、margin-top: 10px
画面上の特定の要素にextra-small
を適用できます。
私はそれが誰かを助けることを願っています。
これは古い投稿ですが、以下はクリーンなソリューションです。
[class*="col-"] {
margin-bottom: 15px;
}
これは状況によってはうまく機能しますが、不要な場合は余分な不要なマージンを追加します。これを解決するために、列が積み重ねられたときに上余白を適用する新しいcssクラスを作成できます。 .row-grid
という名前のクラスを作成します
.row.row-grid [class*="col-"] + [class*="col-"] {
margin-top: 15px;
}
@media (min-width: 1200px) {
.row.row-grid [class*="col-lg-"] + [class*="col-lg-"] {
margin-top: 0;
}
}
@media (min-width: 992px) {
.row.row-grid [class*="col-md-"] + [class*="col-md-"] {
margin-top: 0;
}
}
@media (min-width: 768px) {
.row.row-grid [class*="col-sm-"] + [class*="col-sm-"] {
margin-top: 0;
}
}
このシンプルでクリーンなソリューションを使用します。
.row { margin-top: -15px; }
.row > div { margin-top: 15px; }
そのようにして、すべての<div class='col-*-*'>
は、最初の行(または、モバイルの場合は一番上の行を除く)を除く15pxのマージンを持ちます。
この簡単なソリューションは、最初の列を除くすべての列に、余分な小さな画面サイズで上マージンを自動的に適用します。 HTMLやCSSに特別なクラス名やその他の変更を加える必要はありません。 (変更 margin-top
以下の値を好きなものに。)
@media (max-width: 767px) {
[class*="col-"]:not(:first-child) {
margin-top: 30px;
}
}