网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 JavaScript根据CSS的Media Queries来判断浏览设备的方法
内容
    这篇文章主要介绍了JavaScript根据CSS的Media Queries来判断浏览设备的方法,主要思路是通过CSS Media Queries改变一个类的某个属性值(例如 z-index),然后用JavaScript读取判断,需要的朋友可以参考下
    CSS 部分
    首先随便新建一个用来做判断的类,然后通过 Media Queries 来对这个类的 z-index 属性赋予不同的值。这个类仅作为 JavaScript 读取使用,所以需要将其移出屏幕窗口,让浏览者不可见以免引起意外情况。
    作为演示,下面代码设置了四种设备状态:桌面普通版、小屏幕桌面版、平板电脑版和手机版。
    /* default state */
    .state-indicator {
      position: absolute;
      top: -999em;
      left: -999em;
      z-index: 1;
    }
    /* small desktop */
    @media all and (max-width: 1200px) {
      .state-indicator {
        z-index: 2;
      }
    }
    /* tablet */
    @media all and (max-width: 1024px) {
      .state-indicator {
        z-index: 3;
      }
    }
    /* mobile phone */
    @media all and (max-width: 768px) {
      .state-indicator {
        z-index: 4;
      }
    }
    JavaScript 判断
    CSS 已经就位了,那么就需要用 JavaScript 来生成了一个临时的 DOM 对象,然后为它设置对应的类,然后再读取这个对象的 z-index 值。原生的写法如下:
    // Create the state-indicator element
    var indicator = document.createElement('div');
    indicator.className = 'state-indicator';
    document.body.appendChild(indicator);
    // Create a method which returns device state
    function getDeviceState() {
      return parseInt(window.getComputedStyle(indicator).getPropertyValue('z-index'), 10);
    }
    getDeviceState() 函数返回的就是 z-index 的值,为了增强一下可读性,可以用 switch 函数来规范输出一下:
    function getDeviceState() {
      switch(parseInt(window.getComputedStyle(indicator).getPropertyValue('z-index'), 10)) {
        case 2:
          return 'small-desktop';
          break;
        case 3:
          return 'tablet';
          break;
        case 4:
          return 'phone';
          break;
        default:
          return 'desktop';
          break;
      }
    }
    这样,就可以用一下代码来判断设备状态,然后执行相应的 JavaScript 代码:
    if(getDeviceState() == 'tablet') {
      // 平板电脑下执行的 JavaScript 代码
    }
    这里如果你使用的是 jQuery,直接使用下面代码就可以了:
    $(function(){
      $('body').append('<div></div>');
      function getDeviceState() {
        switch(parseInt($('.state-indicator').css('z-index'),10)) {
          case 2:
            return 'small-desktop';
            break;
          case 3:
            return 'tablet';
            break;
          case 4:
            return 'phone';
            break;
          default:
            return 'desktop';
            break;
        }
      }
      console.log(getDeviceState());
      $('.state-indicator').remove();
    });
    先创建,然后获取,最后删掉这个节点,具体的设备会在你的控制台中输出,可以试着拖动一下中间的边框,然后点击 Run。
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/15 3:10:24