9.09.14, 16:11
0 комментарий
  Уроки

Проверяем media queries при помощи Javascript

Так как сегодня выходить в интернет можно с абсолютно разных устройств, очень важно создавать такие дизайны, которые способы адаптироваться под разрешения и размеры любых экранов и девайсов. Лучше всего с данной задачей справляются media queries, которые позволяют вам определить размер используемого экрана и подстроить под него контент и шаблон.

В основном, эти изменения вносятся в CSS-файл, так как у вас будет возможность использовать точки преломления (breakpoint) в media queries, чтобы изменять дизайн в зависимости от дизайна.

/* Smartphones (portrait) ----------- */
@media only screen
and (max-width : 320px) {

}

/* Desktops and laptops ----------- */
@media only screen
and (min-width : 1224px) {

}

/* Large screens ----------- */
@media only screen
and (min-width : 1824px) {

}


Вышеприведенный код позволит вам применять абсолютно разные стили на различных устройствах, но что если вы хотите изменять и функционал в зависимости от используемого устройства? Что если вам нужно использовать немного javascript-кода на различных устройствах. К примеру, для того, чтобы создать кнопку для выдвижения навигации.

Как использовать media queries с jQuery

Media Queries проверит ширину окна, чтобы примерно определить используемое устройство, чтобы у нас в дальнейшем была возможность применять методы типа .width() к объекту window.

if($(window).width() < 767)
{
   // change functionality for smaller screens
} else {
   // change functionality for larger screens
}


Однако эта проверка не даст нам действительного значения размеров окна, так как здесь не учитываются различные свойства вроде отступов от краев или строки скроллинга. Есть и другая возможность проверить размер окна, и заключается она в применении javascript-метода .matchMedia() к объекту window.

var window_size = window.matchMedia('(max-width: 768px)'));


Этот метод работает по тому же принципу что и media queries, и поддерживается во многих браузерах, за исключением IE9 и ниже.

Чтобы воспользоваться matchMedia, вам нужно ввести минимальное и максимальное значения, которые вам нужно проверить (как и в media queries), и узнать, совпадают ли с ними значения viewport.

if (window.matchMedia('(max-width: 768px)').matches)
{
    // do functionality on screens smaller than 768px
}


Теперь вы можете использовать данный метод для того, чтобы добавить click-событие в подменю для экранов, размер которых меньше 768 пикселей. Нижеприведенный код – это пример того, как вы можете добавить немного javascript-кода, который будет запускать исключительно на устройствах, размер экрана которых меньше 768 пикселей.

if (window.matchMedia('(max-width: 768px)').matches)
{
    $('.sub-menu-button').on('click', function(e)
    {
        var subMenu = $(this).next('.sub-navigation');
        if(subMenu.is(':visible'))
        {
            subMenu.slideUp();
        } else {
            subMenu.slideDown();
        }

        return false;
    });
}

Реклама

Напишите своё мнение

  • acuteaggressiveair_kissangel
    badbbbeachbeee
    biggrinbig_bossblumblush
    boastbombboredombye
    clappingcraycrazycurtsey
    dancedashdeclarediablo
    diroldon-t_mentiondownloaddrinks
    first_moveflirtfocusfool
    friendsgive_heartgive_rosegood
    hangheartheathelp
    hihunterhystericireful
    kingkisslaughlazy
    lolmail1mambaman_in_love
    mdamega_shokmoilmosking
    musicneanegativenew_russian
    okon_the_quietpardonparting
    partypilotpioneerpleasantry
    popcormpranksterprevedpunish
    roflrtfmrussiansad
    sarcasticscarescratchsearch
    secretsensoredshokshout
    slowsmilesmokesoldier
    soldier_girlsorryspitefulspruce_up
    stinkersuicidesunsuperstition
    swoonteasetenderthanks
    thisto_pick_ones_noseto_take_umbragetreaten
    umnikunknwvampirevava
    victorywackowhistlewink
    wizardyahooyesyu
    e101e102e103e104
    e105e106e107e108
    e109e110e111e112
    e113e114e115e116
    e117e118e119e120
    e121e122e123e124
    e125e126e127e128
    e129e130e131e132
    e133e134e135e136
    e137e138e139e140
    e141e142e143e144
    e145e146e147e148
    e149e150e151e152
    e153e154e155e156
    e157e158e159e160
    e161e162e163e164
    e165e166e167e168
    e169e170e171e172
    e173e174e175e176
    e177e178e179e180
    e181e182e183e184
    e185e186e187e188
    e189e190e191e192
    e193e194e195e196
    e197e198e199e200
    e201e202e203e204