JS媒体查询
样式的改变使用C3的媒体查询
行为和功能的改变使用JS的媒体查询
matchMedia()方法参数可写任何一个CSS@media规则,返回的是新的MediaQueryList对象,该对象有两个属性
- media:查询语句的内容
- matches:检查查询结果,返回boolean
还有两个方法
- addListener():添加一个新的监听器函数,查询结果改变时,调用指定回调
- removeListener():删除之前添加的监听器,若不存在则不执行任何操作
使用:
var result = window.matchMedia('(max-width:418px)'); //要加括号
var result2 = window.matchMedia('(max-width:768px)');
var result3 = window.matchMedia('(max-width:992px)');
if(result.matches) {
console.log("超小屏幕(<=418)");
//do something...
}else if(result2.matches){
console.log("小屏幕(>768&<=992)");
//do something...
}else if(result3.matches){
console.log("中等屏幕(>992&<=1200)");
//do something...
}else{
console.log("大屏幕(>1200)");
}
但此方式只能是页面首次或重新加载时才生效,若要像CSS媒体查询一样随着页面大小改变做出反应,就要使用addListener()方法监听
var sqls = [
window.matchMedia('(max-width:418px)'), //和CSS一样,也要注意顺序!
window.matchMedia('(max-width:768px)'),
window.matchMedia('(max-width:992px)'),
window.matchMedia('(max-width:1200px)')
]
function mediaMatches() {
if(sqls[0].matches){
console.log('<=418'); //do something...
}else if(sqls[1].matches){
console.log('>418 & <=768'); // do something...
}else if(sqls[2].matches){
console.log('>768 & <=992'); // do something...
}else if(sqls[3].matches){
console.log('> 992 & <=1200'); // do something...
}else {
console.log('>1200');
}
}
mediaMatches(); //页面首次加载
for(var i = 0; i < sqls.length; i++){
sqls[i].addListener(mediaMatches);
}
为每个MediaQueryList对象添加监听器,每个对象查询结果只有ture和false,当某个对象的查询结果改变时都会调用指定回调函数mediaMatches,这样就可以在每次页面大小改变时执行某些行为
参考资料
Window.matchMedia()方法|菜鸟教程
js如何使用媒体查询
JS媒体查询的更多相关文章
- CSS3及JS媒体查询教程
CSS3媒体查询: 语法: <media_query_list>:<media_query>[,<media_query>] <media_query> ...
- Web移动前端开发-——rem+less+媒体查询,rem+flexble.js+媒体查询
实际开发搞搞起来!!!! rem适配方案 媒体查询+rem+less 基础知识铺垫 第一步,我们需要拿到设计稿,安装设计稿的要求来设置一个合适的html字体大小. 第二步,计算元素大小的取值 页面re ...
- js媒体查询设置根字号
!function(n){var e=n.document,t=e.documentElement,i=750,d=i/50,o="orientationchange"in n?& ...
- css3 media媒体查询器用法总结(附js兼容方法)
css3 media媒体查询器用法总结 标签:class 代码 style html sp src 随着响应式设计模型的诞生,Web网站又要发生翻天腹地的改革浪潮,可能有些人会觉得 ...
- css样式,媒体查询,垂直居中,js对象
下面是一些截图,有关查询效率,css样式,媒体查询,垂直居中,js基本类型.
- rem适配布局(rem+less+媒体查询 和 rem+flexible.js)
1. rem 基础 rem 是一个相对单位,类似于 em ,em 是父元素字体大小. em 是相对于父元素 的字体大小来说的 rem 是相对于 html 元素 字体大小来说的 rem 优点 就是可以 ...
- 通过media媒体查询设置ie7/8样式、使用media判断各机型、手淘flexible.js
@media all and (min-width:1280px){ /* 所有设备宽度大于1280干嘛干嘛嘞... */ body{ background:#f00; } } @media (min ...
- 深入理解CSS Media媒体查询
× 目录 [1]媒介类型 [2]媒体属性 [3]语法[4]方法 前面的话 一说到响应式设计,肯定离不开媒体查询media.一般认为媒体查询是CSS3的新增内容,实际上CSS2已经存在了,CSS3新增了 ...
- CSS3媒体查询使用小结
首先我们在使用Media的时候需要先设置下面这段代码,来兼容移动设备的展示效果: 准备工作1:设置Meta标签 <meta name="viewport" content=& ...
随机推荐
- pybind11 安装
Prerequisites: $ sudo apt-get install python-dev (or python3-dev) $ sudo apt-get install cmake $ su ...
- App遍历探讨(含源代码)
好像好久没有更新博客了,之前写的几篇博客关于自动化的框架的居多,其中好多博友向我提了好多问题,我没有回复.这里给博友道个歉~ ~ 总结几点原因如下: 1.我一般很少上博客,看到了都是好几天之前的问题 ...
- Linux内存管理 (8)malloc
专题:Linux内存管理专题 关键词:malloc.brk.VMA.VM_LOCK.normal page.special page. 每章问答: malloc()函数是C函数库封装的一个核心函数,对 ...
- Golang 入门系列(一)Go环境搭建
安装 Go Go语言的优劣,这里就不介绍了,下面直接讲Go 的安装: Go 的官方网站:http://golang.org/(需要FQ软件) 国内下载地址:http://www.golangtc.co ...
- ASP.NET Web API2返回值处理流程
关于WebApi2控制器方法的四种返回类型请参考官方文档: https://docs.microsoft.com/zh-cn/aspnet/web-api/overview/getting-start ...
- EChars学习之路1
引入echarts.min.js或者使用CDN https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.min.js 为ECharts准备一个具备大小(宽高 ...
- [转帖]Go中的下划线
Go中的下划线 https://blog.csdn.net/wanglei9876/article/details/50475864 下划线的作用: 在import 时 是仅引入 init 函数 在正 ...
- JS异常
当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错误. 可能是语法错误,通常是程序员造成的编码错误或错别字. 可能是拼写错误或语言中缺少的功能(可能由于浏览器差异). 可能 ...
- IDEA的 mybatis插件报错 - IDE Fatal Errors
IDE Fatal Errors Exception in plugin Mybatis plugin. A minute ago. Occurred once since the last clea ...
- go Test的实现 以及 压力测试
引用 import "testing" 一些原则 文件名必须是 *_test.go* 结尾的,这样在执行 go test 的时候才会执行到相应的代码 必须 import testi ...