Maison > interface Web > js tutoriel > Adaptation du terminal mobile rem.js

Adaptation du terminal mobile rem.js

不言
Libérer: 2018-04-10 11:26:01
original
3189 Les gens l'ont consulté

Le contenu partagé avec vous dans l'article suivant concerne l'adaptation du terminal mobile rem.js. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer

Adaptation de la page Web du terminal mobile C'est une chose gênante. .Les méthodes courantes incluent la requête multimédia, le contrôle js, etc.
Personnellement, je pense que la requête multimédia est redondante et peut être utilisée en petites quantités, je préfère js pour la contrôler.

Ce qui suit est mon propre résumé. de 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);
Copier après la connexion

Exemple d'utilisation :

<!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;
  }  
Copier après la connexion
  .c2 {
    border: 2px solid black;
    font-size: 1.28rem;
  }  
Copier après la connexion
  .c3 {
    border: 1px solid black;
    font-size: 1.28rem;
  }    
  
Copier après la connexion

Effet réel :
Adaptation du terminal mobile rem.js

On peut le voir :

Lorsque DPR est 1, vous pouvez réellement utiliser n'importe quoi, c'est ainsi que nous l'écrivons normalement sur la page PC
Lorsque DPR est 2 :

  1. Ne le faites pas. utilisez rem. js, l'effet d'affichage réel sera le double de celui que nous avons écrit
    . C'est pourquoi la bordure de 1 px que nous écrivons semble souvent plus épaisse sur l'iPhone

  2. En utilisant rem.js, l'effet est celui auquel nous nous attendions.

Pièce jointe : Comment ajouter un appareil simulé personnalisé dans Google Chrome
Adaptation du terminal mobile rem.js


Résumé :

Utilisez le rem js ici, vous ne le faites pas. besoin de requêtes multimédias,
facilite le contrôle global et peut également résoudre le « problème de bordure 1px » sur iPhone
S'il est combiné avec l'aide de postcss-pxtorem, sublime cssrem et d'autres plug-ins,
vous pouvez. Il est très pratique d'écrire en px comme unité comme sur PC

Bienvenue pour ajouter des corrections !

Recommandations associées :


Glissement inertiel& on. le côté mobile Comment implémenter la barre de navigation rebond Vue

js pour déterminer s'il s'agit d'un PC ou d'un mobile


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal