如图,如何为不同的移动设备设置html不同的font-size,从而可以使用rem这个相对长度单位?
只能通过js动态设置
function setBaseFont () {
var c = 320; // 基准宽度,取的是iphone5
var a = 100;
var b = document.getElementsByTagName('html')[0];
var f = b.getBoundingClientRect().width / c;
var d = f * a / 10;
b.style.fontSize = d + 'px';
}
可以试试em
为了避免Internet Explorer 中无法调整文本的问题,许多开发者使用 em 单位代替像素。
em的尺寸单位由W3C建议。
1em和当前字体大小相等。在浏览器中默认的文字大小是16px。
因此,1em的默认大小是16px。可以通过下面这个公式将像素转换为em:px/16=em
不过,如果使用 em 单位,则可以在所有浏览器中调整文本大小。
不幸的是,仍然是IE浏览器的问题。调整文本的大小时,会比正常的尺寸更大或更小。
然后-------------------------------------------------------------------
在所有浏览器的解决方案中,设置 <body>元素的默认字体大小的是百分比
例如
body {font-size:100%;}
h1 {font-size:2.5em;}
h2 {font-size:1.875em;}
p {font-size:0.875em;}
在所有浏览器中,可以显示相同的文本大小,并允许所有浏览器缩放文本的大小。
我从runoob网站上看到的
iPhone6的屏幕下1rem=50px
或者用css
html{font-size:calc(100vw / 7.5);}
分割线
抱歉,之前的那段js代码兼容性不是很好,包括那段css代码,只要在低版本的安卓手机上就会失效,找了很久找到一段代码分享一下,兼容性杠杠的
(function(){
var originWidthByDesign = 750 / 2;
var originRootFontSize = 50;
var maxLimitWidth = 667;
var doc = document.documentElement;
var div = document.createElement('div');
div.setAttribute('style', 'font-size: 1rem');
if (!!document.addEventListener && '1rem' === div.style.fontSize) {
var reCalculate = function reCalculate() {
var clientWidth = doc.clientWidth;
if (!clientWidth) {
return;
}
clientWidth = clientWidth < maxLimitWidth ? clientWidth : maxLimitWidth;
doc.style.fontSize = originRootFontSize * clientWidth / originWidthByDesign + 'px';
doc.style.display = 'none';
doc.clientWidth;
doc.style.display = '';
};
window.addEventListener('resize', reCalculate, false);
document.addEventListener('DOMContentLoaded', reCalculate, false);
reCalculate();
}
function getQueryString (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
})()
目测你使用了 flexible
// 当dpr=1时,font-size为12px
div {
width: 1rem;
height: 0.4rem;
font-size: 12px; // 默认写上dpr为1的fontSize
}
// 当dpr=2时,font-size为24px
[data-dpr="2"] div {
font-size: 24px;
}
// 当dpr=3时,font-size为24px
[data-dpr="3"] div {
font-size: 36px;
}
// 1、2、3分别针对1倍、2倍、3倍使用。
前提是你自己的html中不能写
<meta name="viewport" content=""/>
使用 flexible
会自动通过js给你的html添加类似于这样的语句
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
@media 可以针对不同的屏幕尺寸设置不同的样式,结合rem单位一起使用