Kaedah JavaScript untuk menentukan peranti menyemak imbas berdasarkan CSS Media Queries_javascript kemahiran

WBOY
Lepaskan: 2016-05-16 08:59:51
asal
2876 orang telah melayarinya

Bahagian CSS

Mula-mula, cipta kelas baharu untuk membuat pertimbangan, dan kemudian gunakan Pertanyaan Media untuk menetapkan nilai yang berbeza kepada atribut indeks-z kelas ini. Kelas ini hanya digunakan untuk membaca JavaScript, jadi ia perlu dialihkan keluar dari tetingkap skrin dan tidak dapat dilihat oleh penyemak imbas untuk mengelakkan situasi yang tidak dijangka.

Sebagai demonstrasi, kod berikut menetapkan empat keadaan peranti: versi biasa desktop, versi desktop skrin kecil, versi tablet dan versi mudah alih.

/* 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;
  }
}

Salin selepas log masuk

Penghakiman JavaScript

CSS sudah ada, jadi anda perlu menggunakan JavaScript untuk menjana objek DOM sementara, kemudian tetapkan kelas yang sepadan untuknya, dan kemudian baca nilai indeks-z objek ini. Kaedah penulisan asal adalah seperti berikut:

// 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;
  }
}

Salin selepas log masuk

Dengan cara ini, anda boleh menggunakan kod berikut untuk menentukan status peranti, dan kemudian melaksanakan kod JavaScript yang sepadan:

if(getDeviceState() == 'tablet') {
  // 平板电脑下执行的 JavaScript 代码
}
Salin selepas log masuk

Jika anda menggunakan jQuery di sini, hanya gunakan kod berikut:

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

Salin selepas log masuk

Buat dahulu, kemudian dapatkan, dan akhirnya padamkan nod Peranti tertentu akan dikeluarkan dalam konsol anda Klik di sini untuk melihat Demo Anda boleh cuba menyeret sempadan tengah dan kemudian klik Jalankan.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan