プロジェクトで Twitter Bootstrap を使用しています。デフォルトのブートストラップ スタイルに加えて、独自のスタイルもいくつか追加しました。
//My styles
@media (max-width: 767px)
{
//CSS here
}
ビューポートの幅が 767px 未満の場合、jQuery を使用してページ上の特定の要素の順序を変更しています。
$(document).load($(window).bind("resize", checkPosition));
function checkPosition()
{
if($(window).width() < 767)
{
$("#body-container .main-content").remove().insertBefore($("#body-container .left-sidebar"));
} else {
$("#body-container .main-content").remove().insertAfter($("#body-container .left-sidebar"));
}
}
私が抱えている問題は$(window).width()
、CSS によって計算された幅と CSS によって計算された幅が同じに見えないことです。767を$(window).width()
返すと、CSS はビューポートの幅を 751 と計算するため、16px の違いがあるようです。
これを引き起こしている原因と、問題を解決する方法を知っている人はいますか? 人々は、スクロールバーの幅は考慮されておらず、使用する$(window).innerWidth() < 751
ことが道であると示唆しています。ただし、理想的には、スクロールバーの幅を計算し、メディアクエリと一致するソリューションを見つけたいと考えています (たとえば、両方の条件が値 767 に対してチェックしている場合)。すべてのブラウザーのスクロールバーの幅が 16px になるわけではないのでしょうか?