移动端H5终端适配方案

1.JS的根据不同屏幕宽度动态设置html的font-size,使用rem布局。

a.手淘方案 flexible+rem(参考https://github.com/amfe/article/issues/17)

引入flexible.js,不需要在html结构中加入viewport标签。

flexible.js会在元素上增加一个data-dpr属性,以及一个font-size样式。JS会根据不同的设备添加不同的data-dpr值,比如说2或者3;同时会给html加上对应的font-size的值,比如说75px;以及会添加viewport标签,JS会根据不同的设备添加不同的缩放比(建议内联处理,在所有资源加载之前执行这个JS)

例如:设计稿是750px宽度,将750px进行10等分,则1rem=75px,

如果设计稿中量出某块区域的margin-top值20px,对应换算成rem为20/75=0.266667rem。

css代码就是margin-top:0.266667rem。
一般用于解决 “数据大屏“ 展示的屏幕适配问题: 解决 “数据大屏“ 展示的屏幕适配问题

b.不引入第三方库,自写js动态设置html的font-size+rem

(function (doc, win) {
var docEl = doc.documentElement,//根元素html
//判断窗口有没有orientationchange这个方法,有就赋值给一个变量,没有就返回resize方法。
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;//把document的fontSize大小设置成跟窗口成一定比例的大小,从而实现响应式效果。      docEl.style.fontSize = 16* (clientWidth / 375) + 'px';
}; 
//alert(docEl)
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);//addEventListener事件方法接受三个参数:第一个是事件名称比如点击事件onclick,第二个是要执行的函数,第三个是布尔值
doc.addEventListener('DOMContentLoaded', recalc, false)//绑定浏览器缩放与加载时间
})(document, window);

js会根据不同设备的宽度设置html的font-size,html结构需要加入

屏幕根据设计稿的比例转换对应的rem值,比如:

750的设置 = 16*(clientWidth/375)

640的设置 = 20*(clientWidth/320)

320的设置 = 10*(clientWidth/320)

例如:设计稿是750px宽度(基于iphone6 375*2=750 得到的设计稿),如果设计稿中量出某块区域的margin-top值20px,

在实际iphone6设备375px宽度中,应该除以2,所以得到值mragin-top是20/2=10px,

因为1rem=16px(16*(iphone6设备宽度/375)+'px'),所以对应换算成rem为10/16=0.625rem。

css代码中就是margin-top:0.625rem。

2.flex布局,不使用rem,直接使用px。

html结构需要加入

例如:设计稿是750px宽度,设计稿是750px宽度(基于iphone6 375*2=750 得到的设计稿),

如果设计稿中量出某块区域的margin-top值20px,

在实际iphone6设备375px宽度中,应该除以2,所以得到值mragin-top是20/2=10px。

css代码中就是margin-top:10px。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WWW超文本源码浏览器

Linux下的C程序&#xff1a;读取远程服务器上的网页源码。 /*功能&#xff1a;WWW超文本源码浏览器 */#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include <sys/socket.h> #include <netinet/in.h&g…

TCP为何采用三次握手来建立连接,若采用二次握手可以吗

1. TCP简介 TCP&#xff08;Transmission Control Protocol 传输控制协议&#xff09;是一种面向连接&#xff08;连接导向&#xff09;的、可靠的、基于IP的传输层协议&#xff0c;采用三次握手确认建立一个连接。 TCP为了保证报文传输的可靠[1]&#xff0c;就给每个包一个序号…

在asp.net中备份还原SQL Server数据库

在web中&#xff0c;安全性主要体现在两个方面&#xff1a;一个是程序安全性&#xff0c;即防止网页在插入恶意代码&#xff1b;另一个是数据库安全性&#xff0c;这个我们可以经常备份数据库来实现。在文中&#xff0c;我将演示如果在网页中备份和恢复数据库。其实备份和恢复数…

Leetcode刷题(4)罗马数字转整数

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&a…

深入理解移动前端开发之viewport

在移动设备上进行网页的重构或开发&#xff0c;首先得搞明白的就是移动设备上的viewport了&#xff0c;只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用&#xff0c;才能更好地让我们的网页适配或响应各种不同分辨率的移动设备。 一、viewport的概念 通…

Git之版本回退

像这样&#xff0c;你不断对文件进行修改&#xff0c;然后不断提交修改到版本库里&#xff0c;就好比玩RPG游戏时&#xff0c;每通过一关就会自动把游戏状态存盘&#xff0c;如果某一关没过去&#xff0c;你还可以选择读取前一关的状态。有些时候&#xff0c;在打Boss之前&…

整型数组的循环右移

/*实现整型数组的循环右移cycleMoveR1&#xff1a;临时空间比较大&#xff0c;但是时间复杂度为O(1)cycleMoveR2&#xff1a;临时空间比较小&#xff0c;时间复杂度为O(n)*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h&…

Leetcode刷题(5)最长公共前缀

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&…

Internal Server Error - http code 500

Eror Example 1 :转载于:https://www.cnblogs.com/shuman/p/3938096.html

面包与童话

面包主导童话? 或许吧&#xff01; 油吧 我会吃上面包的 至于童话 随便吧 与我无关 心也会慢慢慢慢的平静下来的 转载于:https://www.cnblogs.com/fairy-tale/articles/1272636.html

Git之工作区和暂存区

工作区&#xff08;Working Directory&#xff09; 就是你在电脑里能看到的目录&#xff0c;比如我的learngit文件夹就是一个工作区 版本库&#xff08;Repository&#xff09; 工作区有一个隐藏目录.git&#xff0c;这个不算工作区&#xff0c;而是Git的版本库 Git的版本库…

vue移动端html5页面根据屏幕适配的四种解决方法

最近做了两个关于h5页面对接公众号的项目&#xff0c;不得不提打开微信浏览器内置地图导航的功能确实有点恶心。下次想起来了的话&#xff0c;进行总结分享一下如何处理。在vue移动端h5页面当中&#xff0c;其中适配是经常会遇到的问题&#xff0c;这块主要有死个方法可以适用。…

数据报套接字服务端和客户端

这里练习用数据报套接字来通讯。 listener.c // 数据报套接字服务器(listener.c)&#xff1a;在指定端口监听&#xff0c;收到数据报后关闭连接#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.…

javascript学习系列(12):数组中的join方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说j…

NIO机制总结

Selector selector Selector.open();普通的IO流的读取&#xff0c;写入都是一个字节一个字节或一个字符一个字符的循环进行&#xff0c;在这个过程中&#xff0c;程序是阻塞的&#xff0c;inputStream虽然既可以一个字节一个字节的读 inputSream.read()&#xff0c;也可以批量…

Git之管理修改

现在&#xff0c;假定你已经完全掌握了暂存区的概念。下面&#xff0c;我们要讨论的就是&#xff0c;为什么Git比其他版本控制系统设计得优秀&#xff0c;因为Git跟踪并管理的是修改&#xff0c;而非文件 你会问&#xff0c;什么是修改&#xff1f;比如你新增了一行&#xff0…

双绞线施工质量的检测方法

综合布线工程的施工与结束的过程中&#xff0c;往往需要对布线工程的质量进行必要的检测&#xff0c;其中双绞线的施工质量首当其冲&#xff0c;笔者根据多年的设计施工经验&#xff0c;归纳出一套比较实用的检测程序&#xff0c;描述出来与各位同行共享。测试前的检查不可少 检…

TCP文件传输

下面是一个简单的TCP文件传输的例子&#xff0c;实现环境&#xff1a;Linux C Server.c // 向客户端发送文件#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <stdio.h>#include <stdlib…

javascript学习系列(14):数组中的indexOf方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说…

Git之撤销修改

自然&#xff0c;你是不会犯错的。不过现在是凌晨两点&#xff0c;你正在赶一份工作报告&#xff0c;你在readme.txt中添加了一行 在你准备提交前&#xff0c;一杯咖啡起了作用&#xff0c;你猛然发现了“stupid boss”可能会让你丢掉这个月的奖金&#xff01; 既然错误发现得…