Я создаю мобильную сторону веб-сайта в настоящий момент, и мне нужен пользовательский CSS и Javascript для мобильных устройств, поэтому в CSS у меня есть правила с использованием @media screen and (max-width: 500px) {
и в Javascript я шел для использования if ($(window).width() < 500
.CSS и jQuery имеют разную ширину
Однако, если изменить размер моего браузера к точному пикселю мобильного CSS начинает используется, и я console.log($(window).width());
я получаю 485.
Это нормальное поведение, или я делаю что-то не так?
Update:
С помощью этого значения, как представляется, в синхронизации, тестирование только в Firefox, хотя на данный момент.
var scrollBarWidth = false;
function mobileRules() {
if (!scrollBarWidth) {
var widthWithScrollBars = $(window).width();
$('body').css('overflow', 'hidden');
var widthNoScrollBars = $(window).width();
$('body').css('overflow', 'scroll');
scrollBarWidth = widthNoScrollBars - widthWithScrollBars;
console.log('Width: '+widthWithScrollBars+'. Without: '+widthNoScrollBars+'. Scroll: '+scrollBarWidth);
}
console.log($(window).width()+scrollBarWidth+' vs '+globals.mobile_width);
if ($(window).width()+scrollBarWidth < globals.mobile_width) {
console.log('Running mobile rules in jQuery');
}
}
Не уверен, но $ (window) .width() может быть исключающей ширину вертикальной полосы прокрутки. – HaukurHaf
От небольшого отладки в javascript кажется, что правила CSS действуют на 485px, поэтому я считаю, что проблема заключается в том, что одна из них включает в себя полосу прокрутки, а другую - нет, просто не уверен, какой из них отсутствует, а какой нет. момент, я считаю, что это может быть только Javascript, но не положительный. –
Согласно [this] (http://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/), вы также можете получить другое поведение для мультимедийных запросов в браузерах, некоторые из них включают ширину полосы прокрутки, а другие нет. – Stijn