H5移动端字体自适应(也适用于宽高)
原文地址:
https://mp.weixin.qq.com/s/hhmav2sbAgb7w17ipVZiTw
方法一:纯css方法, 精确度高,IOS 和 安卓 字体大小同等比例
1.1 以16px为基准,在根元素html下,字体为62.5%
1.2 此时1rem=10px;
/* css代码 */
html {
/* 10÷16=62.5% */
font-size: 62.5%;
} body {
font-size: 12px;
/* 12÷10=1.2 */
font-size: 1.2rem;
}
方法二:纯css方法, 精确度高,IOS 和 安卓 字体大小同等比例
2. 在css里,设置 html 元素的字体 font-size 设置为,50px;
2.1 字体和元素宽度用rem,字体和元素的实际大小等于:rem乘以100除以2
/* css代码 */
/* 在根元素html下,font-size 设置为,50px; */
html{
// 此处为重点
font-size: 50px;
}
body{
font-size: 12px;
} /* 示例 设置一个宽为400px 高为150px 字体大小为 24px 的div盒子 */
.div {
font-size: 0.48rem;
width:8rem ;
height: 3rem;
background-color:red ;
}
/* 以上结果为:
* width:400px;
* height:150px;
* font-size:24px;
* /
方法三:使用JS,通过识别设备是IOS 还是 安卓,用JS动态计算rem转换px
3. 此方法rem转px精确不是高
3.1 以iphone6为例,rem转px 零误差;以三星S5为例,rem转px误差0002
3.2 ios 上1rem=10px;安卓上,1rem=1.5px到1.4168px之间;因此使用了 ismobile 方法判断设备平台,使rem转转px,尽量在IOS 和 安卓上 单位长度保持统一==
3.3 1rem=10px
// JS JS动态计算rem转换p
function fontSize() {
var mobileType = ismobile(0)
//通过navigator判断是否是移动设备
if ((navigator.userAgent.match(
/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
))) {
//在移动端
(function(doc, win) {
// html
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function() {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
// console.log("ty",mobileType);
if (mobileType == "Android") {
console.log("我是安卓----------");
clientWidth = (clientWidth > 768) ? 768 : clientWidth;
docEl.style.fontSize = 10.4168 * (clientWidth / 375) + 'px'; //这个10可以根据自己使用的数据来调整
}
if (mobileType == "iPhone") {
console.log("我是苹果----------");
clientWidth = (clientWidth > 768) ? 768 : clientWidth;
docEl.style.fontSize = 10 * (clientWidth / 375) + 'px'; //这个10可以根据自己使用的数据来调整
}
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
recalc();
})(document, window);
//移动端 文字适配
} else { //如果是pc端我们可以像微信公众号那样,设置最大宽度为740px
document.documentElement.style.margin = "0 auto"
//PC端
}
} // -识别IOS还是安卓
// param test: 0:iPhone 1:Android
function ismobile(test) {
var u = navigator.userAgent,
app = navigator.appVersion
if (/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (
/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/
.test(navigator.userAgent))) {
if (window.location.href.indexOf("?mobile") < 0) {
try {
if (/iPhone|mac|iPod|iPad/i.test(navigator.userAgent)) {
return "iPhone";
} else {
return "Android";
}
} catch (e) {
// alert(e);
}
}
} else if (app.indexOf('iPad') > -1 || app.indexOf('iPhone') > -1) {
return "iPhone";
} else {
return "Android"; }
};
H5移动端字体自适应(也适用于宽高)的更多相关文章
- 移动端 css实现自适应正圆 ( 宽高随着手机屏幕宽度自适应 )
序言:应朋友要求随手写了一下移动端 css实现自适应正圆 ( 宽高随着手机屏幕宽度自适应 ) ,以备后用 LESS代码: .adaptive-circle { margin: 50px auto 0; ...
- NGUI 屏幕自适应(初始设定宽高800x480只支持比其大的屏幕)
自适应讲解部分可以参考以下网址:http://www.xuanyusong.com/archives/2536,下面代码中提到的AdaptiveManualHeight()函数就是参考该文章的. 下面 ...
- 移动端1px边框伪类宽高计算
移动端1px边框在手机上看显得比较粗,于是我们用伪类结合css3缩放的方法去设置线条,但是如果设置div的一条边,水平线就设置宽度100%,垂直线就设置高度100%,那么如果是div的四条边呢?宽高1 ...
- 原生js移动端字体自适应方案
自从进入新公司之后,就一直采用800的方案,也就是判断屏幕尺寸,大于800px是一种html字体处理方案,另一种方案是小于800px的html字体处理方案, 代码如下: (function(doc, ...
- h5 移动端开发自适应 meta name="viewport"的使用总结
本文系个人理解,可能有误差,仅供参考,谨慎采纳! 布局视口: 系统自带 一般大于屏幕宽度 理想宽度: 设置页面的viewport 的一个宽度,使不同的手机的布局视口宽度尽量接近可视窗口的值: 可视视 ...
- CSS实现宽度自适应100%,宽高16:9的比例的矩形
现在我们来讲讲做自适应16:9的矩形要怎么做 第一步先计算高度,假设宽100%,那么高为h=9/16=56.25% 第二步利用之前所说设置padding-bottom方法实现矩形 代码 HTML &l ...
- C# 控制台程序(命令行程序)设置字体颜色,窗口宽高,光标行数
控制台程序(命令行程序)设置窗口宽度高度,如下代码: Console.WriteLine(Console.WindowHeight); Console.WriteLine(Console.Buffer ...
- CSS实现宽度自适应100%,宽高16:9的比例的圖片或者矩形
前言 图片的大小是多少,宽度一定,高度要始终自自适应为16:9. 解决 1通过js,程序算出绝对高度再进行设置.这是解决问题最容易想到的方法. 2.我们的原则是能用css实现的功能尽量用css,这有利 ...
- 获取iframe自适应后的宽高
1.同域 一:引入jquery <script type="text/javascript" src="../jquery.min.js">< ...
- 从原理到方案,一步步讲解web移动端实现自适应等比缩放
前言 在移动端做自适应,我们常用的有媒体查询,rem ,em,宽度百分比这几种方案.但是都各有其缺点. 首先拿媒体查询来说,在某一个宽度区间内只能使用一种样式,为了适应不同屏幕要,css的代码量就会增 ...
随机推荐
- 【模板】最近公共祖先:LCA算法
LCA最近公共祖先 \[\begin{align} 要求 \ 给出一个树和他的根节点\text{root} \quad给出Q个询问 回答\text {LCA}(a,b) \end{align} \] ...
- 如何查看mongodb的索引命中率
如何查看mongodb的索引命中率 一.背景 现在mongodb使用率很高,经常会遇到查询慢时,就会创建索引,而有时候索引命中率又不高,下面来介绍下测试环境下如何查看索引命中率 二.方案 1.首先查看 ...
- java汉字占用字节
若使用utf-8编码,中文占3个字节,英文的话只占一个字节 System.out.println("人".getBytes().length); 输出3 若使用unicode编码, ...
- Ubuntu 16.04 部署Mariadb
默认上MariaDB的包并没有在Ubuntu仓库中.要安装MariaDB,我们要设置MariaDB仓库. sudo apt-get install software-properties-common ...
- java_类属性&对象属性
访问类属性方式有两种: 对象.类属性 类.类属性 但是理解上第一种方法存在小小小问题, 逻辑没问题 2022年7月31日18:44:29
- 充分利用HarmonyOS NEXT:开发者的全功能指南
随着技术的不断进步,开发者们面临着如何在复杂的技术环境中创造出卓越应用的挑战.在当今的科技浪潮中,如何抓住创新的机遇?HarmonyOS NEXT的发布,带来了全新的机遇和功能.本文将探讨开发者如何充 ...
- JMeter手机app录制
在移动应用的性能测试中,如何准确.全面地捕捉用户操作并生成可复用的测试脚本,始终是测试工程师面临的一大挑战.而JMeter,作为一款功能强大的开源性能测试工具,不仅在Web测试中表现优异,在手机App ...
- FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
自从互联网普及之后,用于视频直播的流媒体技术就发展起来.这几十年中,比较有影响的主要有MMS.RTSP.RTMP.HLS.SRT.RIST几种,分别介绍如下. 1.MMS协议 MMS全称Micros ...
- A星搜索算法的更多细节
A*搜索算法的更多内容 A*算法,也许你会习惯称它为「A*寻路算法」.许多人大概是因寻路--尤其是「网格地图」寻路认识它的,网上很多教程也是以网格地图为例讲解它的算法实现.这导致了许多人在遇到同样用了 ...
- CSS单位em、rem、vh和vw等及CSS3的calc()以及line-height百分比
css单位我们常用的是px,也即是像素.随着网页开发自适应的要求,css3新增了许多单位,rem.vw和vh.vmin和vmax.ch和ex等. em 做前端的应该对em不陌生,不是什么罕见的单位,是 ...