流動的なTwitter Bootstrapレイアウトをデザインに使用していて、レスポンシブにしようとしています。次のようなグリッドを検討してください。
<div class="row-fluid">
<div class="span4"></div>
<div class="span8"></div>
</div>
画面が小さくなったときに使用するために、span4を非表示にし、span8が幅全体を占めるようにする最良の方法は何ですか?
最小/最大幅を.span4
からdisplay: none;
に設定してメディアクエリを使用する
次に、.span8
のルールに.span12
を追加して、非表示にした幅の下にあるすべてのものに対して.span4
を追加します。次のようになります。
@media (min-width: 320px){
.span12,
.span8 {
width: 300px;
}
}
(コードの最後のビットは単なる例ですが、ブートストラップの足場にそのようなものがあります。)
それが役に立てば幸い:)
編集:
これは機能する可能性があります。bootstrapサイトで開発ツールを使用してテストしましたが、機能しているようです。ここでも、メディアクエリで:
@media (min-width: 320px){
#special .span4 {
display: none;
}
#special .span8 {
float: none;
width: auto;
}
}
bootstrap 2.0.2以降では、次のことができます。
Htmlを次のように変更します。
<div class="row-fluid">
<div class="span4 hidden-phone hidden-tablet"></div>
<div class="span8 span12-tablet"></div>
</div>
(私はタブレットと電話のサイズで「小さい」と解釈しました、他のサイズには独自の定義を使用してください)
.hidden-phoneと.hidden-tabletは、小さい画面ではspan4を非表示にします。
そのスペースを再利用してspan8を再スパンするには、これをCSSに追加します。
@media (max-width: 979px) {
.span12-tablet {
width: 91.48936170212765% !important;
*width: 91.43617021276594% !important;
}
}
使用量が少ない場合は、ブートストラップのグリッドミックスインを使用できます。
.span12-tablet {
@media (max-width: 979px) {
#grid > .fluid > .span(12) !important;
}
}
bootstrap 2.2.1を使用している場合:
Htmlを次のように変更します。
<div class="row-fluid">
<div class="span4 hidden-phone hidden-tablet"></div>
<div class="span8"></div>
</div>
これをあなたのCSSオーバーライドに追加してください:
@media (min-width: 768px) and (max-width: 979px)
{
[class*="span"],
.row-fluid [class*="span"] {
display: block;
float: none;
width: 100%;
margin-left: 0;
}
}
これは、HTMLで指定した他のスパン幅でも機能します。
これらの変更の影響により、すべてのスパン幅が100%になり、iPadは常に縦向きモードで1列の流体モードを使用します。
このように書く
電話デバイスでは、このdivは非表示になります<div class="span4 hidden-phone"></div>
このdivは<div class="span8 visible-phone"></div>
更新
Bootstrap 2.3の以前の回答
bootstrap 3が市場に登場しました。
だから私は新しいユーザーのために私の答えを更新します→bootstrap3
電話デバイスでは、このdivは非表示になります<div class="col-md-4 hidden-xs"></div>
このdivは<div class="col-xs-4 visible-xs"></div>
これは、動的に保つための最良のオプションです。私の例では、fluidGridColumnWidthの横に幅を6列に設定しています。
[class*="span"] {
width: 100%;
.row-fluid {
[class*="span"] {
width: (@fluidGridColumnWidth * 6) + (@fluidGridGutterWidth * (6 - 1)) - (.5 / @gridRowWidth * 100 * 1%);
float: left;
margin-left: @fluidGridGutterWidth;
&:first-child {
margin-left: 0;
}
}
}
}
TLDR:2番目のコードスニペットを使用します
Bootstrapはモバイルファーストのフレームワークなので、最小の画面サイズから説明します。レイアウトは、ブレークポイント/画面サイズに関係なく、常に12列幅です。
最小のブレークポイント(xs-極小)から開始して、span4
は非表示で、span8
はすべての幅を取ります(すべて12列)
<div class="row-fluid">
<div class="span4 hidden-xs"></div>
<div class="span8 col-xs-12"></div>
</div>
次のブレークポイントに到達したときの動作を定義していないため(sm/small /画面の幅が767pxを超えているため)、まだ完了していないため、span4
幅の3分の1(12列/ 3 = 4列)とspan8
は残りの幅を取ります(12-4 = 8列)
<div class="row-fluid">
<div class="span4 hidden-xs col-sm-4"></div>
<div class="span8 col-xs-12 col-sm-8"></div>
</div>
上記では、xs-smブレークポイント間の変更で変更が発生することを想定しています。
さらに読む:
Sm-md(md = medium)間の変更が必要な場合は、_ visible-md クラスを使用してspan4
中程度以上のブレークポイント(> 992px)
<div class="row-fluid">
<div class="span4 visible-md col-md-4"></div>
<div class="span8 col-xs-12 col-md-8"></div>
</div>
ただ:
<div class="row-fluid">
<div class="span4 hidden-desktop"></div>
<div class="span8"></div>
</div>
その小さなバリエーションを思いつきました。
追加 stack-tablet
クラスからrow-fluid
は、携帯電話の幅だけでなく、タブレットの幅にもスパンスタックを作成します(ブートストラップのデフォルト)。
@media (max-width: 979px) {
.row-fluid.stack-tablet [class*="span"] {
width: 100%;
display: block;
float: none;
margin-left: 0;
}
}
Display-およびhidden-クラスと一緒に使用できます。