2017-01-24 3 views
-1

これで減少した場合、列の数を取得する方法:要素が左浮かべているとき

var columns = null, 
 
    firstPositionTop = $('div').eq(0).offset().top; 
 

 
$('div').each(function(index) { 
 

 
    var thisPositionTop = $(this).offset().top; 
 

 
    if (thisPositionTop !== firstPositionTop && columns == null) { 
 

 
    columns = index; 
 

 
    } 
 

 
}); 
 
console.log(columns);
div { 
 
    width: 15%; 
 
    padding-bottom: 15%; 
 
    margin: 5%; 
 
    background: DeepPink; 
 
    float: left; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div></div> 
 
<div></div> 
 
<div></div> 
 
<div></div> 
 
<div></div> 
 
<div></div> 
 
<div></div> 
 
<div></div>

私は列の数を計算する最も簡単な方法を把握しようとしています(上記の例では4)をJavaScriptまたはjQueryを使用して作成します。

もっと簡単な方法はありますか?

(要素の数が変化し、列/行の数を変更しますメディアクエリが存在します)。

+1

あなたは列の数を取得するための理由を与える場合、それは役立つかもしれません。特に、メディアのクエリで番号が変更されたことも記載されています。 – Pineda

+0

あなたは間違った質問をしていると思います。あなたが何をしようとしているのか分かりませんが、あなたの質問の結果より簡単です。 –

+0

コードショーで何が問題になっていますか?私は最初の要素の中央に正確に配置されるようにscrollLeftを変更します列数と:それが助け場合は、コードが、コードなし特定の問題文の – charlietfl

答えて

0

あなたが外容器にdivをラップする場合は、収まるどのように多く見るためにそれらに数学を行うことができます。言われて、あなたの最初のソリューションが正常に動作しますので、私は本当にそれを放棄する理由を見ていないことを

var oWidth = $('.outer').width(); 
 
var iWidth = $('.inner').outerWidth(true); 
 

 
$('#display').text(oWidth/iWidth);
.inner { 
 
    width: 15%; 
 
    padding-bottom: 15%; 
 
    margin: 5%; 
 
    background: DeepPink; 
 
    float: left; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p id="display"></p> 
 
<div class="outer"> 
 
<div class="inner"></div> 
 
<div class="inner"></div> 
 
<div class="inner"></div> 
 
<div class="inner"></div> 
 
<div class="inner"></div> 
 
<div class="inner"></div> 
 
<div class="inner"></div> 
 
<div class="inner"></div> 
 
</div>

:このような何か。

+0

問題のコードは機能しますが、私はこのソリューションのように、はるかに単純なものを探していました。私があなたの解決策から数を丸めれば、私は正確な価値を持っています。ありがとうございました :) – Alvaro

関連する問題