js使用媒体查询

 前言:有时候,我们需要根据媒体查询,判断用户窗口的改变,从而控制一些代码的变化。样式的改变,通过CSS3的媒体查询;行为和功能的改变使用JS的媒体查询

一、定义和用法

       matchMedia()返回一个新的MediaQueryList对象,表示指定的媒体查询字符串解析后的结果。

       matchMedia()方法的值可以是任何一个CSS@media规则的特性,如min-height,min-width,orientation等。

      MediaQueryList对象有以下两个属性:

  •  media:查询语句的内容。
  • matches:用于检测查询的结果,如果文档匹配media query列表,值为true,否则为false.

    MediaQueryList对象还可以监听事件。通过监听,在查询结果发生变化时,就调用指定的回调函数。

    还有两个方法:

  •  addListener():添加一个新的监听函数,查询结果改变时,调用指定回调;
  • removeListenter():删除之前添加的监听器,若不存在则不执行任何操作。

二、js部分的运用

//根据媒体查询,判断窗口大小start
function myFunction(x) {
   if (x.matches) { // 媒体查询
        $('#pdf-popTF').css({ 'transform': 'translate(-20%,0px) scale(' + initial + ')' });
   } else {
        $('#pdf-popTF').css({ 'transform': 'translate(0%,0px) scale(' + null + ')' });
   }
 }
 var x = window.matchMedia("(max-width: 700px)")
 myFunction(x) // 执行时调用的监听函数
 x.addListener(myFunction) // 状态改变时添加监听器
 //根据媒体查询,判断窗口大小end

  注意:①如果只使用matches属性,此方式只能在页面首次或者重新加载时才生效,若要像CSS媒体查询一样随着页面大小改变做出反应,就要使用addListener()方法监听;

             ②本文案例中,就是使用了ddListener()方法监听,为每个MediaQueryList对象添加监听器,每个对象查询结果只有true和false,当某个对象的查询结果改变时,都会调用指定回调函数mediaMatches,这样就可以在每次页面大小改变时执行某些行为。

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

                  Window matchMedia() 方法/菜鸟教程  https://www.runoob.com/jsref/met-win-matchmedia.html

JavaScript 可以通过使用媒体查询来更改和应用特定的DOM更改或任意的JavaScript代码。这种方法可以通过在window对象上公开一个简单而轻量级的JavaScript API来实现,称为"responseto"。 除了这种常见的方法之外,还有另一种使用媒体查询的方式是在JavaScript中直接使用媒体查询。这种方法可以通过在JavaScript代码中编写媒体查询来实现。 尽管JavaScript媒体查询不像CSS媒体查询那样流行,但它们提供了灵活性和许多优势,使其成为某些用例的更好选择。使用JavaScript媒体查询可以根据不同的条件来更改代码的执行逻辑,从而实现更高度的自定义和控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [respondto:一个简单的 JavaScript API,用于根据定义的媒体查询条件应用(和取消应用)DOM 更改](https://download.csdn.net/download/weixin_42130889/19418313)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [如何在 JavaScript使用媒体查询](https://blog.csdn.net/weixin_42232156/article/details/129937656)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [JavaScript 媒体查询](https://blog.csdn.net/weixin_46267040/article/details/125369790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值