移动端适配的理解和各种方案解析(补充)+浏览器字体大小说明

文章探讨了vw/vh单位在移动端字体大小控制的问题,提出通过z-index触发重绘的解决方法。同时,介绍了CSS中的回流和重绘概念,以及不同操作如何影响这两个过程。对于浏览器最小字体限制,文章提到了Chrome的12px默认值,并讨论了支持更小字体的几种技术手段,如zoom、transform:scale()和-webkit-text-size-adjust:none。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

移动端适配 (47条消息) 移动端适配的理解和各种方案解析(详解)_紫陌~的博客-CSDN博客

注意:

vh/wh

在使用过程中发现 vw/vh 无法控制字体大小的放大缩小

解决方法:

window.onresize = function(){
    var box = document.getElementById("box");
    box.style["z-index"] = 1; //显式的触发repaint
}

z-index可以对应的元素被重绘(repaint)。

延伸一点点关于重绘(repaint)和回流(reflow)的知识:

1. 添加、删除元素(回流+重绘)

2. 隐藏元素,display:none(回流+重绘),visibility:hidden(只重绘,不回流)

3. 移动元素,比如改变top,left(jquery的animate方法就是,改变top,left不一定会影响回流),或者移动元素到另外1个父元素中。(重绘+回流)

4. 对style的操作(对不同的属性操作,影响不一样)

5. 还有一种是用户的操作,比如改变浏览器大小,改变浏览器的字体大小等(回流+重绘)

让我们看看下面的代码是如何影响回流和重绘的:

var s = document.body.style; s.padding = "2px"; // 回流+重绘

s.border = "1px solid red"; // 再一次 回流+重绘

s.color = "blue"; // 再一次重绘s.backgroundColor = "#ccc"; // 再一次 重绘

s.fontSize = "14px"; // 再一次 回流+重绘

// 添加node,再一次 回流+重绘

既然谈到字体了,就展开说说浏览器字体大小

跑一段代码试一下

    <p style="font-size: 12px;">你好1</p>
    <p style="font-size: 10px;">你好2</p>
    <h2>英文</h2>
    <p style="font-size: 12px;">hello</p>
    <p style="font-size: 10px;">hello</p>

使用不同的浏览器打开

从上面效果我们可以看到chrome,edge浏览器中,12px无论中文还是英文,与8px的字体表现是一致的。(Firefox例外,无默认最小字体,直至0px)

为什么会这样呢?

Chrome 中文版浏览器会默认设定页面的最小字号是12px,英文版没有限制

原因是:Chrome 团队认为汉字小于12px就会增加识别难度。

  • 中文版浏览器

与网页语言无关,取决于用户在Chrome的设置里把哪种语言设置为默认显示语言。我尝试了一下,好像无法修改默认语言。

如何支持更小的字体呢?

  1. 我们只需要修改浏览器的设置,如下

但是,我们总不能让用户自己去修改吧?pass!

我们常见的解决方案有以下三种:

zoom
-webkit-transform:scale()
-webkit-text-size-adjust:none

  1. zoom

但是,官方不推荐

  1. transform:scale()

注意的是,使用scale属性只对可以定义宽高的元素生效,所以,如果是span标签,则需要转换为行内块元素。

可以显示最小的字号,但是不会改变元素占据的空间大小,页面布局也不会发生变化。

  1. -webkit-text-size-adjust:none

该属性用来设定文字大小是否根据设备(浏览器)来自动调整显示大小

需要注意的是,自从chrome 27之后,就取消了对这个属性的支持。同时,该属性只对英文、数字生效,对中文不生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值