ビューアのブラウザの幅に基づいて、他のdivの後にdivを追加できるjQuery内の簡単なメソッドを見つけました。したがって、ブラウザの幅が500pxを超える場合は、30番目の「内部」divの後に「test5」divを挿入するようにブラウザに指示します。次に、ブラウザの幅が500px未満の場合は、このdivを削除するように指示します。また、これを複数のdivで機能させるため、ブラウザの幅が500px未満の場合、30番目の「内側」のdivの後に配置された元のdivが非表示になり、さらに4つのdiv(test、test2、test3、test4)が表示されます。だから私はこのすべてを複数のdivで動作させました。これは素晴らしい。
今のところ、nth-child
指定したブラウザ幅ごとにdivの位置を変更したいと思います。したがって、今やらなければならない方法は、ある幅に5 divを挿入し、別の幅に非表示にし、別の幅に別の5 divを挿入し、別の幅に非表示にするというようになります。常に5つのdivを追加してから、ブラウザーの幅ごとに非表示にするのではなく、ブラウザーの幅ごとにn番目の子の位置を変更したいと思います。これが私の古いコードです。この例では、5 divを使用していることに注意してください。1つはブラウザの幅が500pxを超えると表示され、4つのdivはブラウザの幅が500px未満のときに表示されます。
古いコードは次のとおりです。
var $window = $(window);
var resized=false;
var resized500=false;
function checkWidth() {
var windowsize = $window.width();
if (windowsize > 440) {
if(resized==false){
$( '.inner:nth-child(5)' ).after( '<div class="test">');
$( '.inner:nth-child(10)' ).after( '<div class="test2">');
resized=true;
}
}
if (windowsize > 500) {
if(resized500==false){
$( '.inner:nth-child(30)' ).after( '<div class="test3">');
resized500=true;
}
}
if (windowsize >= 500) {
$('.test, .test2').remove();
resized=false;
}
if (windowsize <= 500) {
$('.test3').remove();
resized500=false;
}
}
// Execute on load
checkWidth();
// Bind event listener
$(window).resize(checkWidth);
これは、このコードの動作を示す古いjsfiddleです(divが表示されて消えるのを確認するには、HTMLウィンドウのサイズを変更する必要があります)。
ブラウザの幅の変更時にdivを非表示にしたり、新しいものを追加したりしない方法を考え出したいのですが、代わりに、nth-child
指定したブラウザの幅ごとにdivを再配置するだけです。これをどのように行うかはわかりませんが、jsfiddleと同様に、どのように機能すると思うかについての開始ベースのjqueryコードを次に示します。これは、例として3つのブラウザ幅を使用しています。
var $window = $(window);
var resized=false;
var resized500=false;
var resized600=false;
function checkWidth() {
var windowsize = $window.width();
if (windowsize > 440 && windowsize < 500) {
//if the window is in between the sizes of 440 and 500px
if(resized==false){
$( '.inner:nth-child(5)' ).after( '<div class="test">');
$( '.inner:nth-child(10)' ).after( '<div class="test2">');
$( '.inner:nth-child(12)' ).after( '<div class="test3">');
$( '.inner:nth-child(15)' ).after( '<div class="test4">');
resized=true;
}
}
if (windowsize > 500 && windowsize < 600) {
//if the window is in between the sizes of 500 and 600px
if(resized500==false){
// code that repositions all four test divs up one number (5 to 6, 10 to 11, etc.)
resized500=true;
}
}
if (windowsize > 600 && windowsize < 700) {
//if the window is in between the sizes of 600 and 700px
if(resized600==false){
// code that repositions all four test divs up one number again.(6 to 7, 11 to 12, etc.)
resized600=true;
}
}
}
// Execute on load
checkWidth();
// Bind event listener
$(window).resize(checkWidth);
この初期のベースコードのjsFiddleは次のとおりです(さまざまなブラウザ幅に値が設定されていないため、完全には機能しません)。
つまり、簡単に要約すると、次のようになります。
n番目の子を介して他のdivの後に配置されているdivがあり、ビューアのブラウザの幅に基づいて表示および非表示になります。現時点では、n番目の子を介してdivを正しい場所に配置し(これで問題ありません)、解決のためにdivを非表示にしてから、新しいものを再表示する必要があります。このプロセスをすべてのブラウザー幅に対して繰り返す必要があります/解像度。私はそれを作りたいので、n番目の子を介してこのdivを挿入します(私が今しているように)が、divを非表示にして、ブラウザーの幅ごとに新しいdivを表示する代わりに、さまざまなブラウザ幅のn番目の子の位置。
この問題の解決策を知っている人がいれば、jsFiddleデモが機能していても、遠慮なく答えを残してください。:)