2016-10-21 13 views
0

これは不可能かもしれないと思いますが、おそらくどの専門家も私を助けてくれるかもしれません。私は非常に単純な反応的な行動を働かせようとしています:ボトムアライメントされたdivを無効にしないでください。ブートストラップの列の浮きがあります。

2つの列のレイアウト、ロゴは左、navbarは右です。今度は、より大きな画面の場合はの2番目の列の一番下に合わせてに、小さい画面の場合はのすぐ下の次の行にを浮かべてください。

大きな画面:

enter image description here

小さな画面:

enter image description here

私は、これはこれまでのところ唯一のJSで行うことができると仮定し、多分誰もが、これは実現し得る方法を知っています純粋なCSSで。

HTML:

<div class="container"> 
    <div class="row"> 
     <div id="col1" class="col-xs-12 col-sm-3"> 
      <div id="logo">Logo</div> 
     </div> 

     <div id="col2" class="col-xs-12 col-sm-9"> 
      <div id="navbar">Navbar: tab 1 | Nav tab 2 | Nav tab 3</div> 
     </div> 
    </div> 
</div> 

CSS:私は完全なコードでjsfiddleを設定した

#logo { 
    background-color: red; height: 100px; width: 150px; color: white; 
} 
#navbar { 
    background-color: blue; height: 30px; width: 100%; color: white; 
} 

:すべてのヘルプは大歓迎ですhttp://jsfiddle.net/m4s4uqhx/6/

答えて

2

あなたの素子のサイズは、あなたの例のようにを固定されている場合は、padding-topでトリックを行うことができ、かつ画面が(xs: <768px)小さすぎる場合、それを削除します。エルス

@media(min-width: 768px) { 
    #col2 { 
    padding-top:70px; 
    } 
} 

Demo on JSFiddle


、私はあなたには、いくつかのJavaScriptを記述する必要があります推測:)

+1

この時点で完全に忘れていました。ご協力ありがとうございました。 –

+0

あなたは大歓迎です:) – Mistalis

1

あなたはロゴの正確な高さを知っているなら、あなたは、パディングトップを追加することができますメディアクエリを使用して大画面の#col2 divに移動します。

t abletsより大きな@media(最小幅:778px){...}

デスクトップおよびより大きい@media(最小幅:992px){...}

大画面@media(最小幅:1140px){...}

CSSの例

@media(min-width:992px){ 
    #col2{padding-top:70px;} 
} 

実施例

http://www.bootply.com/SHj7pkKt80
0

ここで問題となっているのは、列の高さが等しくないということです。 CSSは、列の高さを均等化するための2つのオプションしか提供していません。 CSSテーブルとFlexbox

浮動小数点をそのまま残してもかまいませんが、フレックスボックスは浮動小数点をある程度上書きします。

しかし、影響はご使用の要件によっては最小限に抑えることができます。

Codepen Demo

#logo { 
 
    background-color: red; 
 
    height: 100px; 
 
    width: 150px; 
 
    color: white; 
 
} 
 
#navbar { 
 
    background-color: blue; 
 
    height: 30px; 
 
    width: 100%; 
 
    color: white; 
 
} 
 
.row { 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
} 
 
#col2 { 
 
    display: flex; 
 
    align-items: flex-end; 
 
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
 
<div class="container"> 
 
    <div class="row"> 
 
    <div id="col1" class="col-xs-12 col-sm-3"> 
 
     <div id="logo">Logo</div> 
 
    </div> 
 

 
    <div id="col2" class="col-xs-12 col-sm-9"> 
 
     <div id="navbar">Navbar: tab 1 | Nav tab 2 | Nav tab 3</div> 
 
    </div> 
 
    </div> 
 
</div>

+0

フレックスボックスを使用する必要はありませんが、フレックスボックスをサポートしている現代のブラウザでのみ、要素が分かりませんが、コードがトリックを行います。 – ustmaestro

+0

@ustmaestro OPが要素の高さを知っていますか? ? –

+1

例のロゴを見て、navbarの高さは分かっています; – ustmaestro

3

ロゴと類似COL-2の高さを設定し、0絶対及び底部を位置決めするためにナビゲーションバーを設定します。あなたのCSSをこのソリューションに置き換えてください。

/* Latest compiled and minified CSS included as External Resource*/ 

/* Optional theme */ 
@import url('//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css'); 

#col1 { 
    //border: 1px solid darkred; padding: 0px; 
} 
#col2 { 
    //border: 1px solid darkblue; padding: 0px; 
} 
#logo { 
    background-color: red; height: 100px; width: 150px; color: white; padding: 5px; 
} 
#navbar { 
    background-color: blue; height: 30px; width: 100%; color: white; padding: 5px; 
} 

@media only screen and (max-width : 992px){ 
#navbar{ 
     position: absolute; 
     bottom: 0px; 
} 
#col2{ 
    height: 100px; 
} 
} 

@media only screen and (max-width : 768px){ 
#navbar{ 
     position: relative; 
} 
#col2{ 
    height: auto; 
} 
} 
関連する問題