有没有相当于使用@media查询的javascript?

Sam*_*tar 18 html javascript css

我有这个代码:

@media screen and (max-width: 570px) {

    #header {
        .flex-wrap(wrap);
        .justify-content(center);

        #headerTitles {
            margin-top: 1rem;
        }

    }
}

@media screen and (min-width: 571px) and (max-width: 950px) {

    #header.authenticated {
        .flex-wrap(wrap);
        .justify-content(center);

        #headerTitles {
            margin-top: 2rem;
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

有没有办法,我可以使用Javascript(而不是jQuery)动态添加或删除一个类来表示两个不同的大小,然后重新编码这样的东西:

.small #headerTitles { margin-top: 1rem; }
.large #headerTitles { margin-top: 2rem; }
Run Code Online (Sandbox Code Playgroud)

如果这有效,那么有人可以评论是否使用Javascript是一种更好的方法吗?

sah*_*pta 47

您可以window.matchMedia()在javascript中使用媒体查询.

例如

var mq = window.matchMedia( "(max-width: 570px)" );
if (mq.matches) {
    // window width is at less than 570px
}
else {
    // window width is greater than 570px
}
Run Code Online (Sandbox Code Playgroud)

请参阅以下链接以便更好地理解

自由软件 网站http://www.sitepoint.com/javascript-media-queries/

根据评论更新

请参考plunker:" http://plnkr.co/edit/wAKFEFz0NU6ZaEmywlgc?p=preview "

为了更好地理解:" http://www.javascriptkit.com/javatutors/matchmediamultiple.shtml "

对于Web浏览器支持信息:" https://hacks.mozilla.org/2012/06/using-window-matchmedia-to-do-media-queries-in-javascript/ "