H5 端 rem 适配方案与 viewport 适配
H5 端 rem 适配方案与 viewport 适配
rem
rem 是 CSS3 新增的一个相对单位(root em,根 em)
只根据当前页面 HTML 页面的 font-size 设置,如果根目录的 font-size 为 18px,则 1rem=18px
媒体查询设置
@media screen and (min-width: 320px) {
html {
font-size: 32px;
}
}
@media screen and (min-width: 375px) {
html {
font-size: 37.5px;
}
}
@media screen and (min-width: 414px) {
html {
font-size: 41.4px;
}
}
@media screen and (min-width: 750px) {
html {
font-size: 75px;
}
}
使用 JS 动态修改
<script>
// 根据屏幕尺寸大小调整html的fontsize
function setHtmlFontSize() {
const width = document.documentElement.clientWidth;
document.documentElement.style.fontSize = width / 10 + "px";
}
// 初始化
setHtmlFontSize();
// 监听屏幕尺寸变化事件
window.addEventListener("resize", setHtmlFontSize);
// 监听屏幕翻转事件
window.addEventListener("orientationchange", setHtmlFontSize);
</script>
viewport
通过缩放来实现移动端各个尺寸的适配
适配方案 动态创建 mate viewport 属性,根据当前屏幕尺寸动态设置缩放值
Viewport 属性
属性 | 说明 | 备注 |
---|---|---|
width | 以 px 为单位定义 viewport 的宽度 | 一个正整数或者额字符串 device-width |
height | 以 px 为单位定义 viewport 的高度 | 一个正整数或者额字符串 device-height |
initial-scale | 定义设备的 dips 宽度与 viewport 尺寸之间的比例 | 一个 0.0 到 10.0 之间的正数 |
maximum-scale | 定义最大缩放值,他的值必需大于等于 minimum-scale 的值 | 一个 0.0 到 10.0 之间的正数 |
minimum-scale | 定义最小缩放值,他的值必需小于等于 maximum-scale 的值 | 一个 0.0 到 10.0 之间的正数 |
user-scalable | 一个布尔值,用户是否可以缩放页面 | yes 或 no |
使用 js 动态设置 viewport 属性
原理:通过设置 viewport 的 initial-scale 相关属性 , 将所有设备布局视口的宽度调整为设计图的宽度
//定义设计稿宽度为375
const DESIGN_WIDTH = 375;
//通过设置meta元素中content的initial-scale值达到移动端适配
const setViewport = function () {
//计算当前屏幕的宽度与设计稿比例
let scale = window.screen.width / DESIGN_WIDTH;
// 获取元素
let meta = document.querySelector("meta[name=viewport]");
let content = `width=${DESIGN_WIDTH}, initial-scale=${scale}, maximum-scale=${scale}, minimum-scale=${scale}`;
// 判断是否已存在
if (!meta) {
meta = document.createElement("meta");
meta.setAttribute("name", "viewport");
document.head.appendChild(meta);
}
meta.setAttribute("content", content);
};
setViewport();
// 监听屏幕变化事件
window.addEventListener("resize", setViewport);
// 监听屏幕翻转事件
window.addEventListener("orientationchange", setViewport);
H5 端 rem 适配方案与 viewport 适配的更多相关文章
- 移动端REM布局方案
引用http://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html的方案 下载地址https://github.com/hupan50 ...
- 移动端rem自适应方案
一般设计师给我们的设计稿尺寸都为750*1340 .. 网易,淘宝移动端首页上html元素的font-size 目前就先说一下网易的做法 引入下面这段js,用于计算动态的font-size (func ...
- 移动端rem flexible方案
一.px 自动转换为rem sublim Text3 下载本项目,比如:git clone https://github.com/flashlizi/cssrem 进入packages目录(在Subl ...
- 手淘H5移动端适配方案flexible源码分析
移动端适配一直是一个值得探讨的问题,在业余时间我找了一些页面,查看了一些厂商对于移动端H5页面的适配方案,看到了几个典型的例子,今天就来记录一下我看到的第一个典型的例子,也是我们公司目前普通H5项目正 ...
- 移动端高清适配方案(解决图片模糊问题、1px细线问题)
本文介绍了移动端适配的3种方法,以及移动端图片模糊问题和1px细线问题的解决方法.当然了,在这之前先整理了与这些方法相关的知识:物理像素.设备独立像素.设备像素比和viewport. >> ...
- 移动端font-size适配方案(续)
概述 之前写过一篇移动端font-size适配方案,但是在实践过程中,还是发现当时的思维太局限了,视野太窄了,所以现在补充更新一下,记录下来,供以后开发时参考,相信对其他人也有用. 我上一篇博文主要有 ...
- JavaScript强化教程 —— Cocos2d-JS的屏幕适配方案
1. 设置屏幕适配策略(Resolution Policy) 如果你还没有用过Resolution Policy,只需要在游戏载入过程完成之后(cc.game.onStart函数回调中),调用下面的代 ...
- Cocos2d-JS的屏幕适配方案
Cocos2d引擎为游戏开发者提供了屏幕适配策略(Resolution Policy)解决方案. 使用方式 1. 设置屏幕适配策略(Resolution Policy) 如果你还没有用过Resolut ...
- 适用于hips ui的iPhoneX及以上适配方案
版本信息: hips ui: 0.1.43 须知: 随着hips ui的迭代,可能会解决适配问题,所以下面的方案是有时效性的. 如果你项目上很紧急,可以直接看第三部分解决方案,复制粘贴代码即可. 一. ...
随机推荐
- windows10 WSL
搭建WSL linux下的home目录,映射windows的目录地址 用户家目录 ➜ ~ pwd /home/ajanuw C:\Users\ajanuw\AppData\Local\Packages ...
- 记录PyQt5 学习中遇到的一些问题
1 信号与槽的设置中,槽函数不用写括号: btn.clicked.connect(cao()) def cao(): ******** 会报错:argument 1 has unexpected ...
- Spring 注解(二)注解工具类
本文转载自Spring 注解(二)注解工具类 导语 首先回顾一下 AnnotationUtils 和 AnnotatedElementUtils 这两个注解工具类的用法: @Test @GetMapp ...
- RabbitMq手动确认时的重试机制
本文转载自RabbitMq手动确认时的重试机制 消息手动确认模式的几点说明 监听的方法内部必须使用channel进行消息确认,包括消费成功或消费失败 如果不手动确认,也不抛出异常,消息不会自动重新推送 ...
- Error: Actions must be plain objects. Use custom middleware for async actions.
原本代码: import { SREACH_FOCUS, SREACH_BLUR } from "./actionType" export const searchFocus = ...
- Python3+PYQT5 实现并打包exe小工具(2)
前言:前篇已经通过python代码实现了逻辑,传送门:https://www.cnblogs.com/jc-home/p/14447850.html 现在后篇记录的是打包成exe的方式给项目其他同事使 ...
- 完全基于node的web应用
完全基于node的web应用 node js web fs fs文件路径 事实上通常"正确的方式"一般都不简单. 用例 模块 基本http服务器 基于事件驱动回调 模块化serve ...
- 微信小程序左滑删除
<view class="touch-item {{item.isTouchMove ? 'touch-move-active' : ''}}" data-index=&qu ...
- PAT-1132(Cut Integer )数的拆分+简单题
Cut Integer PAT-1132 #include<iostream> #include<cstring> #include<string> #includ ...
- CCF(管道清洁):最小费用最大流
管道清洁 201812-5 需要清洁的管道下界为1, 不需要清洁的管道下界为0, 可重复经过的管道上界为正无穷, 不可重复经过的管道上界为1. 这属于无源无汇的有容量下界的最小费用可行流.解决的方法就 ...