移动端开发适配的2中方案

原文地址:http://www.cnblogs.com/tugenhua0707/p/5568734.html

针对移动端适配的方案~

一: 第一种方案是:所有的单位使用rem来适配;
首先在页面上设置html的font-size的大小;如下我项目中的设置:

html { font-size: 100px; }
@media(min-width: 320px) { html { font-size: 100px; } }
@media(min-width: 360px) { html { font-size: 112.5px; } }
@media(min-width: 400px) { html { font-size: 125px; } }
@media(min-width: 640px) { html { font-size: 200px; } }

html的默认字体大小为100px;是针对于320px来设置的,那么在360px,400px,640px下都需要等比例缩放;
计算公式为: 320px/100 = 360 / x; 那么 x = (360*100 / 320) px; 其他的等比例缩放也是这个意思;
那么设计师给的设计稿给我们的都是默认640px的设计稿;而我们可以知道font-size:200px; 因此我们可以设置此倍率为200;

想px转化为rem的话,只要知道设计稿多少像素,比如图片的高度是500px;我们需要转换rem的话,计算公式如下:rem = (500 / 200) rem; 其他的属性也是一个意思;比如font-size,margin, padding, 等等属性都是这样计算的 即可转化为rem;我们使用简单的less预编译语言进行计算即可;

比如想保留2位小数;可以如下写 xx = round(500rem/200,2);

二:第二种方案是:纯碎使用px作为单位;(css3媒体查询如下:)

/* 对于400-450按照400px来计算 */
@media (min-width: 400px) and (max-width:450px){
/* 640/400 = 1.6*/
@multiple: 1.6;
.mixin(@multiple);
/* 下面可以写一些私有css属性覆盖掉 */

}
/* 对于360-399按照360px来计算 */
@media (min-width: 360px) and (max-width:399px){
/* 640/360 = 1.78 */
@multiple: 1.78;
.mixin(@multiple);
/* 下面可以写一些私有css属性覆盖掉 */
}
/* 对于320-359按照320px来计算 */
@media (min-width: 320px) and (max-width:359px){
/* 640/320 = 2*/
@multiple: 2;
.mixin(@multiple);
/* 下面可以写一些私有css属性覆盖掉 */
}

/* 下面的mixin函数是使用less预编译语言的,里面需要使用到round方法自动计算各个值 */
.mixin(@multiple){
// 比如高度为500px的话,那么计算公式如下:
height: round(500px / @multiple,2);
// 下面其他的属性值也是一个意思的,设计稿给的多少像素的话,就写多少像素,然后进行计算即可;
}

其他的不需要计算的属性可以写在函数外面,这样就有一个缺点,就是你不写在外面,都写在mixin函数里面的话,那么在每次调用mixin函数内都会生成
一份代码;代码重复了;如果我不写在里面的话,在不需要计算的样式都写在外面的话,那么假如很多类的属性有需要计算的,有不需要计算的,那么就会把
一个css样式分成2份写,对于代码维护不太友好;因此如果项目中能使用rem的话,尽量建议使用第一种方案,使用rem作为单位来适配移动端开发;
不过这两种方案都可以达到适配效果~

使用rem作为单位来对手机适配的demo如下:

rem适配方案参考

如上git代码已经放了demo,我们可以通过git 克隆下来即可:

如: git clone https://github.com/tugenhua0707/remAdapter.git

然后进入使用命令进入该目录后;在本地取个服务器可以运行命令 gulp server -d ;过一些时间会在本地上开启一个服务器;如:http://localhost:3000/

但是这样是访问不到页面的;因为我gulpfile.js代码全部打包到build文件夹下:比如项目打包后的路径:

build

css

html

images

js

因此我们可以在 http://localhost:3000/build/html/ 即可访问到index.html了;同时我们可以打开src源文件下的html下的index.html;可以看到 对应css

<link type="text/css" rel="stylesheet" href="@@@[email protected]@@/css/index.css" />

image图片 使用 @@@[email protected]@@/images/heart.png 这样的路径来引入的;及js文件引入也是通过 @@@[email protected]@@ 作为前缀来引入路径的;这样使用变量做的好处是 可以通过判断是线上环境还是开发环境,如果是开发环境的话 @@@[email protected]@@ 在打包后,会自动替换成 http://localhost:3000/build 这样的,对于线上的环境 可以根据自己的项目的需要替换成响应的路径即可;这些配置都在gulpfile.js内可以看得到,使用了gulp-replace插件进行替换;

同时页面使用了browser-sync插件,可以实时监听html,css,js动态改变,只需要按ctrl+s保存操作,页面会自动刷新;

也支持js的模块化的加载依赖文件,使用了browserify插件进行js模块化加载;

原文地址:https://www.cnblogs.com/colorful-paopao1/p/10102951.html

时间: 2024-08-03 23:02:12

移动端开发适配的2中方案的相关文章

移动端开发适配总结

移动端开发适配2种方案总结 针对移动端适配的方案~ 一: 第一种方案是:所有的单位使用rem来适配:首先在页面上设置html的font-size的大小:如下我项目中的设置: html { font-size: 100px; } @media(min-width: 320px) { html { font-size: 100px; } } @media(min-width: 360px) { html { font-size: 112.5px; } } @media(min-width: 400p

移动端开发在iOS系统中 new Date() 返回 NaN 的问题

问题: 通过 new Date() 函数将后台返回的时间('2021-11-25')获取时间戳.在 chrome 浏览器中没有出现问题,但在 iPhone 真机测试的时候,显示的结果不符合预期.通过调试发现 iOS 中 new Date('2021-11-25') 返回的结果是 NaN,问题出现的原因是 iOS new Date() 中不能包含 - 符号. 解决办法: 最简单的办法,后台直接返回处理好的时间; 通过字符串的replace()方法(String.prototype.replace(

移动端web适配屏幕方案总结

基础知识点 设备像素:设备像素又称物理像素(physical pixel),设备能控制显示的最小单位,我们可以把这些像素看作成显示器上一个个的点. iPhone5的物理像素是640X1136. PS:在普通屏幕下,1个css像素对应1个物理像素(1:1).        在超高像素密度屏幕(Retina显示屏)下,1个css像素对应4个物理像素(1:4).(这里指专指苹果超高清屏幕)        因此,在移动端方面就需要设置dpr来保证超高清屏显示图片不会失真. 逻辑像素( logical p

关于近期对于移动端开发的一些看法

首先移动端开发最基本的就是尺寸问题: <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/> 这行代码是肯定知道要加的,但是我们还会面临在不同尺寸的屏幕上对应尺寸的大小变化.对于这个问题我之前看过很多网站对于这个的处理,我主要是采用小米官网对于这个的修改,单位

web移动端开发技巧与注意事项汇总

一.meta的使用 1.<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/> 强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览 2.winphone系统a.input标签被点击时产生的半透明灰色背景怎么去掉

移动端开发高清效果和多屏适配

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

移动端font-size适配方案(续)

概述 之前写过一篇移动端font-size适配方案,但是在实践过程中,还是发现当时的思维太局限了,视野太窄了,所以现在补充更新一下,记录下来,供以后开发时参考,相信对其他人也有用. 我上一篇博文主要有2个误区,下面我一一记下来. 这篇博文参考了移动端适配方案(下). 适配方案 有多种适配方案: 百分比布局:固定高度,宽度自适应.就是固定高度,宽度用百分比.可以想象,对于不同的屏幕,所有的东西都有横向拉伸,导致非常不好看. px布局:固定宽度,viewport缩放.就是全部用px,然后用js控制i

移动端的适配方案

目录 移动端的适配方案 百分比适配 viewport缩放适配 DPR缩放适配 rem适配 hotcss适配(使用dpr+rem,简单好用) vw/vh适配(为适配而生,最优方案) 移动端的适配方案 不同的尺寸的手机设备上,页面相对合理的展示(自适应)或者保持统一效果的等比缩放 百分比适配 根据父级计算百分比,需要配合其他布局使用 <div class="container"> <div></div> <div></div> &

PC端、移动端页面适配方案

前言 页面自适应PC端.移动端大体上可以分为两种: 1.在同一个页面进行自适应布局,通常使用CSS3 @media 媒体查询器实现 2.两套页面,在后端进行统一适配,根据不同的浏览器UA返回对应的页面 本文记录在java后端进行PC端.移动端页面适配的方案 工程结构 想要实现后端统一适配,首先要规范好工程结构 后端代码,跟之前差不多,响应的viewName路径,直接从业务模块开始,适配工作交给aop:两套页面,对应的业务模块,分别放在两个目录下面 aop适配器 统一的适配工作交由aop环绕切面进