2016-07-13 12 views
1

私が取り組んでいるプロジェクトでは苦労しています。複数の要素を同じ高さと垂直方向に維持する

JSFiddle example

私はすべてのボタンを同じ高さを持っていると思います。 大画面ではすべてが良いです。 しかし、私がスケールダウンを開始するとき、彼らは異なる高さを得るのを開始します。 これは予期した結果です。

しかし、このページで文字列を引っ張っている人は、すべてのボタンが同じ高さになるようにします。 1つのテキストが次の行に移動し、ボタンを大きくするとほとんどのボタンが同じ高さになります。

これはビューポートのすべての幅に適用されます。

私はこの挑戦で私を助けてくれることを願っています。 詳細については、できるだけ早く質問を更新します。

PS。下位互換性を可能な限り高くしたいので、私はCSS3を使いたくありません。

ここにコードを追加する必要があるので、これは自分のhtmlの状況です。

 <div class="col-xs-12 col-sm-12 col-md-6 col-lg-3"> 
      <a href="#" class="button button-primary bpanelbutton">This is a short text</a> 
     </div> 

     <div class="col-xs-12 col-sm-12 col-md-6 col-lg-3"> 
      <a href="#" class="button button-primary bpanelbutton">This is a long text like this</a> 
     </div> 

     <div class="col-xs-12 col-sm-12 col-md-6 col-lg-3"> 
      <a href="#" class="button button-primary bpanelbutton">This is a long text that is even longer tha the previous button</a> 
     </div> 

     <div class="col-xs-12 col-sm-12 col-md-6 col-lg-3"> 
      <a href="#" class="button button-primary bpanelbutton">This is a short text</a> 
     </div> 
    </div> 

</div> 
+1

これにはjavascriptが必要です。 –

+1

少なくともこれを自分でコード化しようとしています。スタックオーバーフローはコードを書くサービスではありません。私はいくつか[**追加の研究**]を行うことをお勧めします(http://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users) Googleを介して、またはSOを検索して、試みてください。それでも問題が解決しない場合は、**あなたのコード**に戻って、あなたが試したこととそれがうまくいかなかった理由を説明してください。 –

+0

フレックスボックスは未来 –

答えて

0

これは私が同様のプロジェクトのために書いた基本的なjQueryのコードです。

P.S特定の解像度でのみ作業したい場合は、ビューポート幅チェッカーで囲むことを推奨します。また、ビューポートが変更されるたびに更新する場合は、ウィンドウのサイズ変更リスナーを追加します。

+0

なぜdownvotesがわかりませんが、これはまさに私が探していたものでした。 それは魅力のように動作します。 ありがとうございます。私はこのためにcss3を使いたくなかった。 – Controvi

1

フレキシボックスはあなたのより容易な解決策は、私はあなたが持っている問題を解決しようとする記事を見つけたことがあります。

チェックこの記事:http://osvaldas.info/flexbox-based-responsive-equal-height-blocks-with-javascript-fallback


コード:

.row { 
    display: flex; 
    flex-wrap: wrap; 
    overflow: hidden; 
} 

.button-primary { 
    background-color: #005f96; 
    color: white; 
    font-size: 20px; 
    margin: 2%; 
    display:flex-item; 
    width: 21%; 
} 

デモ

https://jsfiddle.net/x2cqqcz7/


エクストラ

私は、ボタンの周りにラッピングdivを削除したともあなたはおそらくメディアクエリを使用します。それは、それぞれの子をループし、それに応じて高さを更新し

var eqheight = 0; 
$('.col-eqheight-sm').each(function() { 
    if($(this).outerHeight() > eqheight) { 
     eqheight = $(this).height(); 
    } 
    }); 
    $('.col-eqheight-sm').height(eqheight); 

+0

不足している情報のために申し訳ありませんが、私はこれにcss3を使いたくありません。私は質問を更新しました。 ご意見ありがとうございます。私はそれが他の人を助けると確信しています – Controvi

+0

Flexboxは、同じ行のすべての兄弟でない限り、この方法でページ上のボタンを同じ高さにしません。 Flexboxは実際にはここの解決策ではありません。 –

関連する問題