Скрыть div, если экран меньше определенной ширины

Я хочу скрыть плавающий элемент div, если экран пользователя имеет размер < 1024px, поскольку он будет перекрывать область содержимого моего блога. Я нашел этот jQuery в сети, но я не уверен, как его использовать.

$(document).ready(function() {

if ((screen.width>1024)) {
    // if screen size is 1025px wide or larger
    $(".yourClass").css('display', 'none'); // you can also use $(".yourClass").hide();
}
elseif ((screen.width<=1024))  {
    // if screen size width is less than 1024px
    $(".yourClass").css('display', 'block'); // here you can also use show();
}
});

Если мое плавающее имя класса div является sharecontent, я должен заменить вышеприведенный скрипт, как показано ниже? Если да, это не работает.

$(document).ready(function() {

if ((screen.width>1024)) {
    // if screen size is 1025px wide or larger
    $(".sharecontent").css('display', 'none'); // you can also use $(".yourClass").hide();
}
elseif ((screen.width<=1024))  {
    // if screen size width is less than 1024px
    $(".sharecontent").css('display', 'block'); // here you can also use show();
}
});

Я также попытался заменить screen.width на window.width, но все равно безуспешно:(

5 ответов

Используйте медиа-запросы. Ваш код CSS будет:

@media screen and (max-width: 1024px) {
    .yourClass {
        display: none !important;
    }
}

У меня почти такая же ситуация, как у вас; что если ширина экрана меньше указанной мной ширины, то она должна скрывать div. Это код jquery, который я использовал, который работал для меня.

$(window).resize(function() {

  if ($(this).width() < 1024) {

    $('.divIWantedToHide').hide();

  } else {

    $('.divIWantedToHide').show();

    }

});

Кажется, проблема с вашим кодом заключается в выражении elseif, которое должно быть else if (Обратите внимание на пространство).

Я переписал и просто код для этого:

$(document).ready(function () {

    if (screen.width < 1024) {
        $(".yourClass").hide();
    }
    else {

        $(".yourClass").show();
    }

});

Если в этом примере ваша логика неверна, то вы прячете ее, когда экран больше 1024. none в к block и наоборот.

Проблема, с которой я столкнулся, - это мои css медиа запросы и мое утверждение IF в конфликте Jquery. Они оба были настроены на 700px, но можно было бы подумать, что он достиг 700px раньше другого.

Чтобы обойти это, я создал пустой Div прямо в верхней части моего HTML(вне моего основного контейнера)

<div id="max-width"></div>

В CSS я установил этот div для отображения

 #max-width {
        display: none;
    }

По моему JS создал функцию

var hasSwitched = function () {
    var maxWidth = parseInt($('#max-width').css('max-width'), 10);
    return !isNaN(maxWidth);
};

Таким образом, в моем операторе IF вместо того, чтобы сказать, если (hasSwitched<700) выполняет следующий код, я сделал следующее

if (!hasSwitched()) { Your code

}

else{ your code

}

Делая это, CSS сообщает Jquery, когда он достигает 700px. Таким образом, CSS и JQuery синхронизируются... а не с разницей в пару пикселей. Сделайте этот пробный взгляд, это определенно не разочарует.

Чтобы заставить ту же логику работать для IE8, я использовал плагин Respond.js (который также определенно работает). Он позволяет вам использовать медиазапросы для IE8. Единственной вещью, которая не поддерживалась, была ширина области просмотра и высота области просмотра... отсюда моя причина попытаться заставить мои css и JS работать вместе. Надеюсь, это поможет вам, ребята

Другие вопросы по тегам