Maison > Article > interface Web > Quelles sont les solutions de mise en page pour terminaux mobiles en HTML ?
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/dpr6.
<meta name="viewport" content="initial-scale=1,width=device-width,user-scalable=0,maximum-scale=1" />2. Plan de conception de la loterie NetEaseLoterie NetEaseAdopter l'échelle = 1.0 fenêtre codée en durAdopter
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; } } // 省略 }3. Plan de conception de TmallPage d'accueil de TmallAdopter scale = 1.0 et coder en dur la fenêtreNe pas utiliser rem, et la taille de la police = 14 px du corps est codée en dur disposition px + flexbox4. Problèmes rencontrés1. Problème de flou de ligne 1 px sous écran haute définition (dpr>1. )Le plus souvent, lorsque les concepteurs produisent des manuscrits de différentes tailles, ils dessinent d'abord un manuscrit de grande taille (généralement 2x), puis réduisent la taille et enfin l'exportent. Cela posera des problèmes : si le concepteur dessine une ligne de 1 px (par exemple, bordure : 1 px) dans le manuscrit 2x, si nous voulons la présenter à l'échelle=1,0, elle deviendra 0,5 px, ce qui est très grand. Certains téléphones portables ne le peuvent pas. dessinez 0,5px.
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;})6. Résumé du plan de conceptionD'après l'analyse ci-dessus, il n'est pas difficile de voir que : La solution de NetEase Lottery est rapide à démarrer, a une efficacité de développement élevée et une bonne compatibilité, mais ce n'est pas assez flexible et sophistiqué ; L'idée de conception de Cat est relativement simple, et flexbox est très flexible, mais la compatibilité de flexbox doit être gérée avec soin et n'est pas assez précise La solution de Taobao résout presque tous les problèmes rencontrés du côté mobile, et c'est une solution parfaite, mais l'efficacité du développement est faible et le coût est relativement élevé. Je pense que vous maîtrisez les méthodes après avoir lu ces cas. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
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!