Web サイトで作業しているときに、イライラする、しかし論理的な大きな問題に遭遇しました。
このフィドルを見てください。
重要な CSS :
* {
box-sizing: border-box;
-moz-box-sizing: border-box;
}
div#wrapper {
padding: 1em;
}
img {border: 4px solid blue;}
@media screen and (max-width: 480px) {
img {border: 0 none;}
}
重要な jQuery :
function imgSize() {
if ($(window).width() < 481) {
$("img").css({
"position": "relative",
"width": $(window).width(),
"max-width": "none",
"left": "-1em",
"float": "none"
});
} else {
$("img").attr("style", "");
}
}
imgSize();
$(window).resize(function() {
imgSize();
});
結果ウィンドウを 481px より小さくしてから、もう一度大きくしてみてください。基本的な機能の説明: ウィンドウの幅が 481px より小さい場合、画像はその親よりも大きく、ウィンドウの幅に等しい幅に強制されます。これを CSS で行うことはできません。(できれば教えてください!) これにより、モバイル デバイスでの見栄えが良くなるはずです。画像をさらに「美しく」するために、画面が 0 ~ 480 ピクセルのときに元の境界線が削除されます。これはメディア クエリによって行われます。
野生のスクロールバーが表示されるまで、これはすべてうまく機能します。jQuery は「ウィンドウ」のみを考慮しますが、メディア クエリはスクロールバーの幅によって生成されるピクセルもカウントします。
実際、これは非常に論理的です。$(*window*).width()
しかし、@media *screen*
それは非常にイライラします。この問題に対処する最善の方法は何ですか? 「if scrollbar: x ピクセルを「if window width」関数に追加する」というカスタム関数を jQuery で記述します。ここで、xは特定のオペレーティング システムのスクロールバーの幅です。それとも、CSS を使用してこれを回避する必要がありますか、それとも jQuery と CSS を同じ意味で使用しないようにする必要がありますか?
私はこの問題だけに焦点を当てているのではなく、一般的な$(window).width()
との違いに注目しています。media queries
私の場合、実際にborder: 0 none
jQuery に追加することができました。それだけです。しかし残念ながら、それが常に可能であるとは限りません。できればプラグインを使わずに!