媒体查询

关于媒体查询

一般样式的改变使用cs3的媒体查询
行为和功能的改变使用JS的媒体查询

1.css 媒体查询

使用css3 @media screen

@media only screen and (device-width:360px) and (device-height:760px) and (-webkit-device-pixel-ratio:3){
  //some css...
}

例如:

.example {
    padding: 20px;
    color: white;
}
/* Extra small devices (phones, 600px and down) */
@media only screen and (max-width: 600px) {
    .example {background: red;}
}

/* Small devices (portrait tablets and large phones, 600px and up) */
@media only screen and (min-width: 600px) {
    .example {background: green;}
}

/* Medium devices (landscape tablets, 768px and up) */
@media only screen and (min-width: 768px) {
    .example {background: blue;}
} 

/* Large devices (laptops/desktops, 992px and up) */
@media only screen and (min-width: 992px) {
    .example {background: orange;}
} 

/* Extra large devices (large laptops and desktops, 1200px and up) */
@media only screen and (min-width: 1200px) {
    .example {background: pink;}
}

2.js 媒体查询

matchMedia()方法参数可写任何一个CSS@media规则,返回的是新的MediaQueryList对象,该对象有两个属性:
media:查询语句的内容
matches:检查查询结果,返回boolean
还有两个方法
addListener():添加一个新的监听器函数,查询结果改变时,调用指定回调
removeListener():删除之前添加的监听器,若不存在则不执行任何操作

var medias = [
        window.matchMedia('(max-width:418px)'), //注意添加括号,和CSS一样,也要注意顺序!
        window.matchMedia('(max-width:768px)'),
        window.matchMedia('(max-width:992px)'),
        window.matchMedia('(max-width:1200px)')
    ]

    function mediaMatches() {
        if(medias[0].matches){
            console.log('<=418'); //do something...
        }else if(medias[1].matches){
            console.log('>418 & <=768'); // do something...
        }else if(medias[2].matches){
            console.log('>768 & <=992'); // do something...
        }else if(medias[3].matches){
            console.log('> 992 & <=1200'); // do something...
        }else {
            console.log('>1200');
        }
    }
    mediaMatches(); //页面首次加载

    for(var i = 0; i < sqls.length; i++){
        medias[i].addListener(mediaMatches);
    }

为每个MediaQueryList对象添加监听器,每个对象查询结果只有ture和false,当某个对象的查询结果改变时都会调用指定回调函数mediaMatches,这样就可以在每次页面大小改变时执行某些行为

js 媒体查询参考 https://www.cnblogs.com/Grani/p/10441810.html

关于viewport 参考https://www.cnblogs.com/2050/p/3877280.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。