Heim > Web-Frontend > js-Tutorial > Anpassung mobiler Endgeräte rem.js

Anpassung mobiler Endgeräte rem.js

不言
Freigeben: 2018-04-10 11:26:01
Original
3188 Leute haben es durchsucht

Der Inhalt, der im folgenden Artikel mit Ihnen geteilt wird, handelt von der Anpassung mobiler Endgeräte rem.js Es hat einen gewissen Referenzwert.

Anpassung von Webseiten mobiler Endgeräte ist eine problematische Sache Zu den gängigen Methoden gehören Medienabfragen, JS-Steuerung usw.
Ich persönlich bin der Meinung, dass Medienabfragen in kleinen Mengen verwendet werden können.

Das Folgende ist meine eigene Zusammenfassung von rem. js:

(function(doc, win) {

  // html元素字体
  // 这里基础字体设置为10在uc, WX上没效果,  不知道为什么
  // 设置为10时, dpr=1的手机, 宽度360, 计算出来html的字体大小为5px, 可能是字体太小了
  // 尽量设置大一些, 这样避免12px字体大小的限制
  var _rootFontSize = window._rootFontSize || 25;  // 默认不支持缩放
  var _remMetaScalable = typeof window._remMetaScalable === 'undefined' 
    ? false 
    : !!window._remMetaScalable;  var docEl = doc.documentElement,
    isIOS = navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),    // 只针对IOS设备
    dpr = isIOS ? Math.min(win.devicePixelRatio, 3) : 1,    // 计算缩放比
    scale = 1 / dpr,    // 检测支持的"缩放"事件
    resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
  docEl.dataset.dpr = dpr;  // 被iframe引用时,禁止缩放
  dpr = window.top === window.self ? dpr : 1;  var metaEl = doc.createElement('meta');
  metaEl.name = 'viewport';  var metaElContent = 'width=device-width, ';  // 支持缩放
  if (_remMetaScalable) {
    metaElContent += 'initial-scale=' + scale;
  } else {
    metaElContent += (      'initial-scale=' + scale 
      + ',maximum-scale=' + scale 
      + ', minimum-scale=' + scale 
      + ', user-scalable=no');
  }
  metaEl.content = metaElContent;
  docEl.firstElementChild.appendChild(metaEl);  // 缩放/旋转设备检测函数
  var recalc = function() {
    var width = docEl.clientWidth;    // 750为设计用的宽度, 比如它以iphone6标准(宽750)
    // 此时, 按照设计稿的尺寸写就可以了
    // 如: 设计稿为100px, 那么就写4rem(100 / 25), 25是自己设置的
    // 也可以设置成100, 这样就写100px就写1rem
    docEl.style.fontSize = _rootFontSize * (width / 750) + 'px';
  };
  recalc();  if (!doc.addEventListener) return;
  win.addEventListener(resizeEvt, recalc, false);
})(document, window);
Nach dem Login kopieren

Verwendungsbeispiel:

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport"
    content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"><title>rem</title><style type="text/css">
  .c1 {    border: 2px solid black;    font-size: 32px;  }

  .c2 {    border: 2px solid black;    font-size: 1.28rem;  }

  .c3 {    border: 1px solid black;    font-size: 1.28rem;  }</style><script type="text/javascript" src="rem.js"></script></head><body>
  <pre class="c1">
  .c1 {
    border: 2px solid black;
    font-size: 32px;
  }  
Nach dem Login kopieren
  .c2 {
    border: 2px solid black;
    font-size: 1.28rem;
  }  
Nach dem Login kopieren
  .c3 {
    border: 1px solid black;
    font-size: 1.28rem;
  }    
  
Nach dem Login kopieren

Tatsächliche Wirkung:
Anpassung mobiler Endgeräte rem.js

Es ist zu sehen:

Wenn DPR 1 ist, können Sie eigentlich alles verwenden, so wie wir es normalerweise auf der PC-Seite schreiben.
Wenn DPR 2 ist:

  1. Nicht Verwenden Sie rem. js, der tatsächliche Anzeigeeffekt ist doppelt so hoch wie der, den wir geschrieben haben Aus diesem Grund sieht der von uns geschriebene 1-Pixel-Rand auf dem iPhone oft dicker aus

  2. Bei Verwendung von rem.js ist der Effekt das, was wir erwartet haben.

Anhang: So fügen Sie ein benutzerdefiniertes simuliertes Gerät in Google Chrome hinzu
Anpassung mobiler Endgeräte rem.js


Zusammenfassung:

Verwenden Sie hier rem js, das tun Sie nicht Medienabfragen benötigen,
erleichtert die globale Kontrolle und kann auch das „1px-Grenzenproblem“ auf dem iPhone lösen
In Kombination mit der Unterstützung von postcss-pxtorem, sublime cssrem und anderen Plug-ins
können Sie dies tun Es ist sehr praktisch, in px als Einheit wie auf dem PC zu schreiben.

Willkommen, um Korrekturen hinzuzufügen!

Verwandte Empfehlungen:


Trägheitsgleiten die mobile Seite So implementieren Sie die Rebound Vue-Navigationsleiste

js, um festzustellen, ob es sich um einen PC oder ein Mobilgerät handelt


Das obige ist der detaillierte Inhalt vonAnpassung mobiler Endgeräte rem.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage