JavaScript根据CSS的Media Queries来判断浏览设备的方法
来源: 阅读:580 次 日期:2016-07-01 14:33:26
温馨提示: 小编为您整理了“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 class="state-indicator"></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。

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map