Récemment, j'ai étudié la mise en page de style de page d'accueil wap de Taobao, Tmall et NetEase Lottery 163. Aujourd'hui, je vais résumer pour vous quelques plans de mise en page mobile et analyser les avantages et les inconvénients des technologies utilisées.
Remarque : le code s'exécute en utilisant le protocole de fichier. La référence aux fichiers locaux n'est pas prise en charge dans Chrome et une erreur inter-domaine sera demandée. Vous pouvez l'ouvrir avec Firefox ou Safari
<.>wty2368Recherche sur le schéma de mise en page du terminal mobileÉtudiez la mise en page du style de page d'accueil WAP de Taobao, Tmall et NetEase Lottery 163 et résumez le schéma de mise en page du terminal mobileRemarque : le code fonctionne sous le protocole de fichier et ne prend pas en charge les références dans Chrome. Les fichiers locaux provoqueront une erreur inter-domaines. Vous pouvez les ouvrir avec Firefox ou Safari
scale = 1/dpr
<meta name="viewport" content="initial-scale=1,width=device-width,user-scalable=0,maximum-scale=1" />
Requête multimédia Pour déterminer la valeur font-size de l'élément racine html, c'est-à-dire la valeur rem
rem + disposition en pourcentage Le code CSS de la requête multimédia est le suivant suit ://网易彩票的响应式布局是采用媒体查询来改变rem值实现的 //媒体查询css#media-query{ @media screen and (min-width: 240px) { html,body,button,input,select,textarea { font-size:9px!important; } } @media screen and (min-width: 320px) { html,body,button,input,select,textarea { font-size:12px!important; } } @media screen and (min-width: 374px) { html,body,button,input,select,textarea { font-size:14px!important; } } @media screen and (min-width: 400px) { html,body,button,input,select,textarea { font-size:15px!important; } } // 省略 }
Théoriquement, 1 pixel bitmap correspond à 1 pixel physique, afin que l'image puisse être affichée parfaitement et clairement. Il n'y a pas de problème sur un écran normal, mais sur un écran Retina (dpr=2) il n'y aura pas assez de pixels dans le bitmap, ce qui donnera une image floue.
balise img , vous devez fournir une image 400×600. Pour un écran Retina avec dpr=2, 1 pixel bitmap correspond à 4 pixels physiques. Puisqu'un seul pixel bitmap ne peut pas être divisé davantage, la couleur ne peut être prise qu'à partir de l'emplacement le plus proche, ce qui entraîne des images floues (notez ce qui précède. plusieurs valeurs de couleur). Par conséquent, pour le problème des images haute définition, une meilleure solution consiste à utiliser deux fois l’image. Par exemple : balise img 200×300 (pixel css), vous devez fournir une image 400×600.
$(document).ready(function(){ var dpr, rem, scale; var docEl = document.documentElement; var fontEl = document.createElement('style'); var metaEl = document.querySelector('meta[name="viewport"]'); var view1 = document.querySelector('#view-1'); if(window.screen.width < 540){ dpr = window.devicePixelRatio || 1; scale = 1 / dpr; rem = docEl.clientWidth * dpr / 10; }else{ dpr = 1; scale =1; rem = 54; }//貌似最新的淘宝网站又去掉了,只是限制了主体内容的宽度 // 设置viewport,进行缩放,达到高清效果 metaEl.setAttribute('content', 'width=' + dpr * docEl.clientWidth + ',initial-scale=' + scale + ',maximum-scale=' + scale + ', minimum-scale=' + scale + ',user-scalable=no'); // 设置整体div的宽高 view1.setAttribute('style', 'width:'+ docEl.clientWidth+'px; height:'+ docEl.clientHeight+'px'); // 设置data-dpr属性,留作的css hack之用 docEl.setAttribute('data-dpr', dpr); // 动态写入样式 docEl.firstElementChild.appendChild(fontEl); fontEl.innerHTML = 'html{font-size:' + rem + 'px!important;}'; $('body').attr('style', 'font-size:' + dpr * 12 +'px'); // 给js调用的,某一dpr下rem和px之间的转换函数 window.rem2px = function(v) { v = parseFloat(v); return v * rem; }; window.px2rem = function(v) { v = parseFloat(v); return v / rem; }; window.dpr = dpr; window.rem = rem;})
Lecture connexe :
Quelles sont les techniques d'utilisation des barres de défilement en HTML
Le HTML permet de passer à d'autres pages en deux secondes
Comment définir l'autre caché dans une balise L'attribut affiche uniquement les images
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!