移动端之在不同尺寸大小的手机上展示同一效果解决方案 by FungLeo

移动端之在不同尺寸大小的手机上展示同一效果解决方案 by FungLeo

前言,反思

在之前的项目当中,我在CSS中设置html{font-size: 62.5%;},也就是设置为10px,然后全站根据这个根植,来设置rem单位的样式.这样虽然解决了很多的问题.但是在面对不同宽度的手机的时候,还是需要去自适应设置很多的内容.当然,因为手机分辨率的不同,我们可以自由的将页面设置在320(iphone5s)-414(iphone6plus)这样的范围内还是很合适的.但是,奇葩手机年年有,华为meta8这款奇葩手机的缩放居然是2.5倍,也就是说,它的宽度居然是432,这样一来,我自适应的页面上的内容就显得有些小了.

而且,设计师对我实现的页面还是颇多微词,因为,只有在普通安卓手机上显示是最正常的,5S有点拥挤,6p又有点过宽.

那么,到底TMD有没有一种方式,可以完美的实现设计稿的设计呢?也就是说,不管你的手机屏幕是多大,屏幕分辨率是多少,都能在页面上完整的还原设计稿.

也就是说,要求就是,大手机上,看着每个元素,包括文字都要大一些.而在小手机上,看着要小一些.全部都整体缩放呢?

另外,我为什么要给html{font-size: 62.5%;},为什么不是直接写10px呢?我的思考是将选项交给用户.问题是,用户真知道吗?或许,一万个用户,也难得有几个会去调整浏览器的默认字体大小.白瞎了我的一番苦心.

那么,为什么我不去百分百还原设计稿呢?

我要解决这个问题.

实现的思路

首先,全部单位都是rem,全部基于rem来实现,这一点是肯定的.那么问题的关键还是,给html设置font-size.思路是大一点的手机,就设置大一点,小一点的手机就小一点.

思路没错.怎么实现呢?首先,我想到的是媒体查询.

但是我很快放弃了.

看过一些使用媒体查询的案例,首先,它不能无缝切换,而只能根据不同的手机尺寸来进行适配调整.而且,难保不会出现问题.虽然大部分的浏览器都是会进行缩放的.但是不排除某些页面嵌套到APP里面,没有进行缩放处理,导致特别小,或者特别大.这两天我已经被这个特别小或者特别大的问题给折腾疯了.

放弃了媒体查询.我将目光转向了JS,虽然我一直不喜欢在这种展现层去使用JS,因为我不希望因为JS进行DOM操作大幅的降低网页的性能.但是,我用JS来设置一些htmlfont-size好像不会损失太多的性能.

决定用JS来实现.就需要来考量一下.

计算逻辑

一个项目,要分为两种情况,一种是还没开发的,一种是已经开发了的.目前我遇到的情况就是,这个项目的前端部分我已经开发完成了.只是我希望我去解决一个问题.因此,我下面的算法是基于我已经写好的代码的基础上的.

而如果一个项目还没有开发,正在规划阶段,那么可以选用更加合适的数值.但是基本原理是一致的.我这边说一下我的情况.

我先前是按照html{font-size: 62.5%;},也就是设置为10px的基本设置,全站以REM为单位完成的开发.也就是说,我是按照360为设计稿宽度来制作的整个前端界面.

我们的html的font-size的计算公示应该如下:

设备宽度/设计稿宽度*比率

而我的这个项目的计算公示就应该如下:

设备宽度/360*10

其中,设备宽度是需要通过JS从浏览器自动获取的.以iphone5s为例,数值如下:

320/360*10 = 8.88888

当然,我这是基于我原有的代码来进行的调整.我们在启用一个新项目的时候,则可以更加随心所欲一些,例如,我们完全可以按照我们的标准设计稿的宽度,如720或者640或者1080来进行实际的计算.

当然,比率是一个问题.如,我们以10为比率,并且以720的设计稿宽度来计算,我们会得到如下

320/720*10 = 4.44444

这样的数值.在移动端这没有什么问题,但我们在PC端进行调试的时候就有问题了,因为chorme浏览器的最小像素为6px这就会给我们造成麻烦.因此,如果是这样,我建议比率可以设置为100,也就是如下:

320/720*100 = 44.44444

REM值的确定

因为我的项目之前是确定好了的.如,我需要写一个12px的文字,我就会写1.2rem,计算是很清晰的.基本上不需要费脑子计算.但如果,我们是基于上面的720的设计稿宽度,比率为100,那么显然,全站的rem值必须要进行一个调整.

这个计算公示如下:

数值/比率=需要的rem值

思路收回来一下,这个rem值是什么?

这个rem值是设计稿上的一个宽度,如设计稿宽度是720.对应在代码中,应该转化为多少rem值.

这个算法很简单,就是拿需要的数值/比率就可以得到对应的rem值了.如,设计稿宽度为720,比率为100.那么,我们设计稿上的零件的宽度为240px,我们需要写的就是240/100=2.4rem,我们需要写一个14px的文字,那么就是0.14rem.

scss代码

为什么要有scss代码呢?

回应上面的计算rem值的问题,如果设计稿的宽度为720,比率为100,那倒是真心不用费脑子去计算.但是各家公司的标准都是不一样的.因此,可能你公司的标准,使得这个数值非常难以计算,例如比率为50,或者75之类的.

因此,我们构建一个sass函数来解决这个问题.

@function rem($px){
    @return $px / 100 + rem;
}

而在需要调用的地方,就直接这样写:

width: rem(240);

上面的这个240就是设计师给你的设计稿上的px数值.

less中应该也有类似的功能.但是不用,所以就不是很清楚了.如果是使用less的同学请自行研究一下.

总结

每一天,都在推翻前一天的经验.每一天,都在惊喜和悔过中度过.

本文由FungLeo原创,允许转载.但转载必须署名作者,并保留文章首发链接.否则将追究法律责任.

首发地址:http://blog.csdn.net/FungLeo/article/details/51177863

时间: 2024-10-07 15:24:39

移动端之在不同尺寸大小的手机上展示同一效果解决方案 by FungLeo的相关文章

移动端,多屏幕尺寸高清屏retina屏适配的解决方案

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

如何用JavaScript在浏览器端获取图片的原始尺寸大小?

var img = $("#img_id"); // Get my img elem var pic_real_width, pic_real_height; $("<img/>") // Make in memory copy of image to avoid css issues .attr("src", $(img).attr("src")) .load(function() { pic_real_widt

基于rem的移动端响应式适配方案(详解) 移动端H5页面的设计稿尺寸大小规范

基于rem的移动端响应式适配方案(详解) : https://www.jb51.net/article/118067.htm 移动端H5页面的设计稿尺寸大小规范 http://www.tuyiyi.com/v/53039.html 原文地址:https://www.cnblogs.com/bydzhangxiaowei/p/9536126.html

移动端H5页面的设计稿尺寸大小规范

当我们在做手机端H5网页设计稿时(当然包含微信端的H5网页设计),如果没有做过类似的移动端的设计,UI设计师和前端工程师肯定会纠结的.如果是app设计师,就不会那么纠结啦. 那么多手机屏幕尺寸,设计稿应该按照哪一个尺寸作为标准尺寸.现在已经有2K分辨率的手机屏幕了,设计稿是不是也要把宽高跟着最大分辨率来设计.显然不是. 请注意:(以下所有讨论内容和规范均将viewport设定为content=”width=device-width”的情况下) 也就是我们的H5页面前端代码里面必须包含 <meta

用Python更改图片尺寸大小

1.PIL包推荐Pillow. 2.源码: #encoding=utf-8 #author: walker #date: 2014-05-15 #function: 更改图片尺寸大小 import os import os.path from PIL import Image ''' filein: 输入图片 fileout: 输出图片 width: 输出图片宽度 height:输出图片高度 type:输出图片类型(png, gif, jpeg...) ''' def ResizeImage(f

png图片尺寸大小调整

Android 开发中经常遇到各种hdpi,xhdpi,xxhdpi....很多尺寸大小的png图片要求. 网上也有不少工具,今天我又发现一款在线转换大小的网站,用了一下,一个png 114X114 转换成 16X16和512X512效果还可以; 连接在这里,希望需要的mark一下,么么 png工具类网站:http://images.my-addr.com/resize_png_online_tool-free_png_resizer_for_web.php

移动端界面设计之尺寸篇

移动端界面设计之尺寸篇 作者其它设计文章:PS图层样式之高级混合(1)PS图层样式之高级混合(2)手机音乐界面设计分析AE动画设计基础篇移动端界面设计之尺寸篇 作者在写这篇文章时候还没有出iphone6,所以把这一部分的给补上,相关的尺寸请点下面2篇文章查看. 移动端界面设计之尺寸篇(淘宝版) iPhone6 & 6 Plus 视觉设计适配说明 h5移动端页面设计学习文档

iOS开发-App Icons的尺寸大小

每个App中Icon的尺寸大小是不一样的,如果你添加部分尺寸的Icon,有些没有添加,xCode会给出相应的警告,最近遇到一个问题就是A 76x76 app icon is required for iPad apps targeting iOS 7.0 and later,问题后来解决了.不过由于还不是很清晰,去看了一下文档,iOS不是以像素为单位的,不过会给出建议的尺寸,iOS家族中主力是iPhone和iPad,iPod Touch,因为尺寸的大小根据机器的类型来比较. iPhone-Onl

【移动端】关于图片的大小----怎样保证图片高清

一.设备像素比( window.devicePixelRatio ) 设备像素比= 设备上物理像素/设备独立像素 非视网膜屏幕的iphone上,屏幕物理像素320像素,独立像素(视区宽度)也是320像素,因此,window.devicePixelRatio等于1.(chrome浏览器) 在视网膜屏幕的iphone上,屏幕物理像素640像素,独立像素还是320像素,因此,window.devicePixelRatio等于2.(iphone4  iphone5) [移动端]关于图片的大小----怎样