<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>xxx</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
<style>
/*问题现象,当父元素的实际宽度超过了视窗宽度也就是100%之后,字体的大小变变的不受控制,比如当设置width = 29rem, width = 130%;都可以复现问题,测试只在部分IOS机型出现,测试机型为iphone5s v8.3,以及 iphone6 v9.3.2,复现问题需要设置meta width=device-width*/
* {
box-sizing: border-box;
}
.box1 {
width: 150%;
/* 解决方法1. 宽度不超过100%即可,注意盒子模型的几个属性margin\padding\border的值都会影响到元素的宽度的实际范围的,所以此处使用了box-sizing: border-box;来消除这种影响 */
/* 解决方法2. 即使宽度超过100%,设置一个具体数值的高度即可,可以是px或者rem,但不可以是百分比,目前并不明白为什么设置了之后可以解决 */
/*height: 5rem;*/
/* 解决方法3. 设置-webkit-text-size-adjust: none; 即可*/
/*-webkit-text-size-adjust: none;*/
/* 问题原因:在移动设备中浏览器为了防止出现字体太小看不清楚,有一个字体自适应算法(text inflation algorithm) text-size-adjust,当元素宽度超过了100%,即超过视窗之后,字体放大,目前查看IOS有该问题,安卓没有问题,如果关闭该行为,设置none即可*/
/* MDN原话:When a focused element containing text use 100 % of the width of the screen, its text size is increased until it reached a readable size, without modifying the layout and removing the need of an horizontal scrollbar.*/
/* 不成熟的翻译:当其中包含文字的元素使用到了视窗宽度100%的时候,其中的字体会增大到一个可读的大小*/
/* MDN 链接:https://developer.mozilla.org/en-US/docs/Web/CSS/text-size-adjust */
color: red;
border: 1px solid #666;
}
.box2 {
width: 100%;
color: green;
border: 1px solid #666;
}
.text1 {
font-size: .8rem;
}
.text2 {
font-size: 1rem;
}
</style>
</head>
<body>
<ul class="box1">
ul.box1
<li class="text1">我的字体是0.8rem</li>
<li class="text2">我的字体是1rem</li>
</ul>
<ul class="box2">
ul.box2
<li class="text1">我的字体是0.8rem</li>
<li class="text2">我的字体是1rem</li>
</ul>
<div class="box1">
div.box1
<div class="text1">我的字体是0.8rem</div>
<div class="text2">我的字体是1rem</div>
</div>
<div class="box2">
div.box2
<div class="text1">我的字体是0.8rem</div>
<div class="text2">我的字体是1rem</div>
</div>
<p>box1跟box2的文字大小一样是符合预期的,如果不一样则是不符合预期的,问题原因及解决方法见style部分注释</p>
</body>
</html>