CSS Media Queries_javascript 기술을 기반으로 브라우징 장치를 결정하는 JavaScript 방법

WBOY
풀어 주다: 2016-05-16 08:59:51
원래의
2875명이 탐색했습니다.

CSS 부분

먼저 판단을 위한 새 클래스를 만든 다음 미디어 쿼리를 사용하여 이 클래스의 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;
  }
}

로그인 후 복사

자바스크립트 판단

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();
});

로그인 후 복사

먼저 노드를 생성한 다음, 마지막으로 삭제하면 특정 장치가 콘솔에 출력됩니다. 데모를 보려면 여기를 클릭하세요.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿