移动端布局方案 网易

移动端布局:

rem方案:页面中的任何元素都采用rem布局,包括字体。

 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3
 4     <head>
 5         <meta charset="UTF-8">
 6         <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 7         <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
 8         <style type="text/css">
 9             * {
10                 margin: 0;
11                 padding: 0;
12             }
13
14             body {
15                 width: 7.5rem;
16                 font-size: 32px;
17                 font-size: .32rem;
18                 max-width: 1080px;
19                 margin: 0 auto;
20                 background: #f6f6f6;
21                 font-family: ‘STHeiti‘, ‘Microsoft YaHei‘, Helvetica, Arial, sans-serif;
22                 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
23             }
24         </style>
25     </head>
26
27     <body>
28         <script type="text/javascript">
29             var Dpr = 1,
30                 uAgent = window.navigator.userAgent;
31             var isIOS = uAgent.match(/iphone/i);
32             var isYIXIN = uAgent.match(/yixin/i);
33             var is2345 = uAgent.match(/Mb2345/i);
34             var ishaosou = uAgent.match(/mso_app/i);
35             var isSogou = uAgent.match(/sogoumobilebrowser/ig);
36             var isLiebao = uAgent.match(/liebaofast/i);
37             var isGnbr = uAgent.match(/GNBR/i);
38
39             function resizeRoot() {
40                 var wWidth = (screen.width > 0) ? (window.innerWidth >= screen.width || window.innerWidth == 0) ? screen.width :
41                     window.innerWidth : window.innerWidth,
42                     wDpr, wFsize;
43                 var wHeight = (screen.height > 0) ? (window.innerHeight >= screen.height || window.innerHeight == 0) ?
44                     screen.height : window.innerHeight : window.innerHeight;
45                 if(window.devicePixelRatio) {
46                     wDpr = window.devicePixelRatio;
47                 } else {
48                     wDpr = isIOS ? wWidth > 818 ? 3 : wWidth > 480 ? 2 : 1 : 1;
49                 }
50                 if(isIOS) {
51                     wWidth = screen.width;
52                     wHeight = screen.height;
53                 }
54                 if(wWidth > wHeight) {
55                     wWidth = wHeight;
56                 }
57                 wFsize = wWidth > 1080 ? 144 : wWidth / 7.5;
58                 wFsize = wFsize > 32 ? wFsize : 32;
59                 window.screenWidth_ = wWidth;
60                 if(isYIXIN || is2345 || ishaosou || isSogou || isLiebao || isGnbr) { //YIXIN 和 2345 这里有个刚调用系统浏览器时候的bug,需要一点延迟来获取
61                     setTimeout(function() {
62                         wWidth = (screen.width > 0) ? (window.innerWidth >= screen.width || window.innerWidth == 0) ?
63                             screen.width : window.innerWidth : window.innerWidth;
64                         wHeight = (screen.height > 0) ? (window.innerHeight >= screen.height || window.innerHeight ==
65                             0) ? screen.height : window.innerHeight : window.innerHeight;
66                         wFsize = wWidth > 1080 ? 144 : wWidth / 7.5;
67                         wFsize = wFsize > 32 ? wFsize : 32;
68                         document.getElementsByTagName(‘html‘)[0].style.fontSize = wFsize + ‘px‘;
69                         document.getElementById("fixed").style.display = "none";
70                     }, 500);
71                 } else {
72                     document.getElementsByTagName(‘html‘)[0].style.fontSize = wFsize + ‘px‘;
73                     document.getElementById("fixed").style.display = "none";
74                 }
75             }
76             resizeRoot();
77         </script>
78     </body>
79
80 </html>

html的font-size大小是根据移动设备自动计算的。

设计师完成的设计稿宽度为:750px,此时html跟节点的大小是50px,其他元素根据这个基准值设置rem大小。

html设置基准字体大小的测试地址为:http://3g.163.com/touch/all?dataversion=B&version=v_standard

页面上html的font-size不是预先通过媒介查询在css里定义好的,而是通过js计算出来的,如上述代码中的js代码部分就是计算html的font-size的大小。

时间: 2024-08-09 13:58:29

移动端布局方案 网易的相关文章

移动适配请使用比rem等更好的布局方案

??移动端大行其道,rem/em.百分比.响应式方案更是层出不穷,看见周围的伙伴们都在对使用rem和百分比情有独钟,可我却偏不爱,之所以出现如此多的方法,其目的只有一个屏幕适配. ??屏幕适配顾名思义就是一张设计稿还原出的程序要适应于当下市场上各种大小屏幕不一的终端,做到写一次各种终端大小的屏幕都能比例协调的显示.下面我们先来看下大家耳熟能详的几种方案是如何去解决屏幕适配的. rem/em:rem根元素字体大小单位,em元素字体大小单位.使用rem的时候我们需要在css中先为html元素设定fo

移动端自适应布局方案尝试

原文地址:移动端自适应布局方案尝试 问题 刚开始接触移动端H5页面的时候最困扰的几个问题是: 6或6p上明明是1px的边框怎么就成了2px或3px辣么粗! 图片,div等如何等比自适应设计图 后来慢慢知道了第一点是由于retina屏幕下设备像素比的问题造成,第二点知道了单位rem. 目的 不想因为使用rem而一一去计算设计稿的尺寸,设计稿750的尺寸的标注可以直接在sass中使用:字体不使用rem缩放,原因是: 显然,我们在iPhone3G和iPhone4的Retina屏下面,希望看到的文本字号

探讨移动端布局适配方案

一.前提知识 移动端的屏幕尺寸有多种,其中要知道几个知识 物理像素:即设计稿的尺寸 逻辑像素:实体机器的真正像素 下面是我们经常适配的屏幕尺寸 一.rem布局 rem是以根元素字体大小作为参照的布局方式 如下 //以750px设计稿为例,物理像素是375px.设置div宽度为整个容器宽度一半 html{font-size:12px} div{width:375/2/12 rem} 屏幕的尺寸是不同的,为了保证布局大小一致,我们需要做判断屏幕的宽度,如下例子: rem布局的缺点是要根据不同的屏幕大

响应式布局和移动端布局

响应式布局就是响应式设计方案呈现的效果.具体就是页面的布局会根据不同设备的显示面积(主要是宽度)的不同而呈现不同的布局,这个效果是比弹性的布局更好的地方是样式会主动地根据用户的设备的显示面积呈现的布局更灵活,可读性更强.当然对研发的要求也更高(比如说如何更好地让图片,适配,UI动画自适应各种布局).响应式设计一般来说是一套设计方案解决所有的设备的自适应问题.对应的样式文件可能是多个,也可以只写一个(在一个css文件声明不同的media query就可以). 移动端布局就是传统的固定宽度或者弹性布

移动端适配方案以及rem和px之间的转换

背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 1)首先,选取一款手机的屏幕宽高作为基准(以前是iPhone4的320×480,现在更多的是iphone6的375×667). 2)对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对iphone6而言:

淘宝弹性布局方案lib-flexible实践

2个月前,写过一篇文章<从网易与淘宝的font-size思考前端设计稿与工作流>总结过一些移动web中有关手机适配的一些思路,当时也是因为工作的关系分析了下网易跟淘宝的移动页面,最后才有那篇文章的总结,可惜的是因为项目的关系,这两个月来几乎没有机会做移动类项目的工作,所以那些理论一直没有得到真正的实践.这次因为公司有一个app需要做一个推广的下载页面,虽然简单,但也值得一试那篇文章里提到的适配方法,所以本文的内容就是介绍该文中提到的淘宝的做法:<lib-flexible弹性布局方案>

移动端自适应方案

本文来自大搜车博客:移动端自适应方案,主要讲:1.移动真的需要动态生成viewport吗?2.移动前端如何自适应?作者给出主观的最佳实践:最帅的flex.演示地址.里面讲了一些互联网公司的自适应做法,可以看看. 研究样本 手淘 ml.JS 天猫首页 手机携程 一个月前去了css开发者大会,听到了手淘的自适应方案,想起之前一直就想了解ml.js到底干了什么事.回来仔细研究了一下,抱着好奇心一并看了同样类型的网站的方案,深入学习一下. 研究结论 手淘 获取手机dpr(window.devicePix

08-移动端开发教程-移动端适配方案

由于移动端的特殊性,屏幕的尺寸碎片化严重,要想很好的适配不同的尺寸的设备,需要我们前端开发相比PC端要做一些基层的适配方案. 1. 常见的适配方案 百分比+固定高度布局方案 固定屏幕为理想视口宽度 少许的媒体查询设置字体 水平百分比布局 水平方向部分也可以使用弹性布局 Rem解决方案 Rem的大小取值:根据页面的dpr动态改变 Rem的取值: 1rem = 100px 或者 1rem = 1/10 * 理想视口的宽度 chrome浏览器字体小于12px(会被重置为12px) 固定设计稿的宽度开发

最火移动端跨平台方案盘点:React Native、weex、Flutter

1.前言 跨平台一直是老生常谈的话题,cordova.ionic.react-native.weex.kotlin-native.flutter等跨平台框架的百花齐放,颇有一股推倒原生开发者的势头. 为什么我们需要跨平台开发? 本质上,跨平台开发是为了增加代码复用,减少开发者对多个平台差异适配的工作量,降低开发成本,提高业务专注的同时,提供比web更好的体验.嗯-通俗了说就是:省钱.偷懒. 目前移动端跨平台开发中,备受关注的方案大致归纳为以下几种情况: 1)react native.weex均使