私はいくつかのライブラリなどをいじって、この種のレスポンシブ リスナーを使用することになりました。ブレークポイントには CSS メディア クエリを使用し、スロットラーには UnderscoreJS を使用します。私が見た利点は、ブレークポイントがさまざまなスクリプトに断片化されているのではなく、すべて CSS で定義されていることです。
で使用するCSS@media
ブレークポイントの例::after
body
body:after {
content: 'widescreen';
display: none;
}
@media screen and (max-width: 1024px){
body:after {
content: "extra-large";
}
}
@media screen and (max-width: 768px){
body:after {
content: "large";
}
}
@media screen and (max-width: 640px){
body:after {
content: "medium";
}
}
@media screen and (max-width: 480px){
body:after {
content: "small";
}
}
@media screen and (max-width: 320px){
body:after {
content: "tiny";
}
}
のコンテンツに基づいて起動を待機しているリスナー スクリプトの例body:after
。ご覧のとおり、この例では、デバイスの一般性に基づいてウィジェットを表示/非表示/移動/作成するための 2 つの範囲として定義されています。
<script type ="text/javascript">
$(window).resize(_.debounce(function(e){
var size = window.getComputedStyle(document.body,':after').content.replace(/"|'/g, ''),
mobile = ["tiny", "small", "medium", "large"].indexOf(size),
desktop = ["extra-large", "widescreen"].indexOf(size);
$('.placehold').html('computed breakpoint: ' + size + '<br />mobile index = ' + mobile + '<br />desktop index = ' + desktop);
if (mobile != -1) {
$('.placehold2').html('mobile range');
} else if (desktop != -1) {
$('.placehold2').html('desktop range');
}
}, 100)).trigger('resize');
</script>
http://jsfiddle.net/Dhaupin/nw7qbdzx/ - jsfiddle で出力ペインのサイズを変更してテストします。
編集:どうやらブラウザは :after コンテンツをwindow.getComputedStyle(document.body,':after').content
別の方法でレンダリングし、一重引用符または二重引用符を挿入します。それらをスクラブするために置換を追加しました。