移动端字体适配

一、移动端图片适配

1、使用 <img> 的 srcset
<img src="logo.png"srcset="logo@2x.png 2x,logo@3x.png 3x"alt="Logo">

优点:原生支持,浏览器自动选择最合适的图片。

2、使用媒体查询切换背景图
.logo {background-image: url("logo.png");
}@media (-webkit-min-device-pixel-ratio: 2),(min-resolution: 192dpi) {.logo {background-image: url("logo@2x.png");background-size: contain;}
}

适用场景:适用于背景图或图标等需要精细控制的场景。

二、适配不同屏幕大小(响应式布局)

为了使页面在各种设备上都能良好显示,应避免使用固定单位 px,而采用相对单位来布局,如:

单位说明推荐指数
rem相对于根元素字体大小,适合全局控制⭐⭐⭐⭐⭐
vw/vh视口宽度/高度的百分之一,适合全屏布局⭐⭐⭐⭐
em相对于当前元素字体大小,适合局部组件⭐⭐⭐

三、推荐方案:使用 rem + JS 动态计算字号(主流做法)

这是目前移动端开发中最常用的适配方案,尤其适合以 750px 或 640px 为标准设计稿的项目。

1. 设置视口 viewport
<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0, user-scalable=no">
2. 动态设置 HTML 根字号(JS 控制)
function setRem() { const baseSize = 16; // 假设设计稿宽度为 750px,1rem = 16pxconst scale = document.documentElement.clientWidth / 750; 
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'; 
} 
window.addEventListener('resize', setRem); 
setRem();

📌 说明

  • 通过 JavaScript 动态调整 htmlfont-size,从而让 rem 的值随屏幕变化;
  • 设置最大缩放比例(如不超过 2 倍),防止文字过大影响体验。
3. 编写样式时使用 rem 单位
.container { width: 750px; /* 按照设计稿数值 */ font-size: 16px; /* 对应 1rem */ } 
.title { font-size: 1.5rem; /* 实际为 24px */ }

📌 优化建议

  • 使用 PostCSS 插件 postcss-pxtorem 可以自动将 px 转换为 rem,提升开发效率;
  • 配合 Vue CLI、Vite 等现代构建工具,可一键完成转换。

四、备选方案:使用 vw/vh 实现响应式布局

适用于不需要复杂交互、结构简单的页面,比如 H5 页面、营销页等。

.title { font-size: 5vw; /* 字体大小随视口宽度变化 */ } 
.fullscreen { width: 100vw; height: 100vh; }

优点

  • 不依赖 JavaScript;
  • 实现简单直观。

缺点

  • 在 iOS 上软键盘弹出会影响 vh 计算;
  • 字体大小波动较大,可能影响阅读体验。

五、完整的移动端适配流程总结

步骤内容
1️⃣ 获取设计稿明确设计稿宽度(如 750px)
2️⃣ 设置 viewport<meta name="viewport"> 必不可少
3️⃣ 设置 root font-sizeJS 动态设置 html 的 font-size
4️⃣ 编写样式使用 rem 或 vw/vh 单位编写样式
5️⃣ 多倍图处理使用 srcset 或媒体查询加载高清图
6️⃣ 媒体查询优化针对特殊设备做微调(如 iPad、折叠屏)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914607.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git起步

git官网&#xff1a;https://git-scm.com git使用手册&#xff1a;https://git-scm.com/book/zh/v2 一、Git 是什么&#xff1f; 1、版本控制 版本控制是一种记录一个或若干文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。我们经常是用的是保存软件源代码的…

SSL与HTTP概述

一、概念1.SSL概念SSL&#xff08;Secure Sockets Layer&#xff09;是一种网络安全协议&#xff0c;用于在互联网通信中建立加密链接&#xff0c;保护在网络中传输的敏感数据免遭窃取或篡改。2.TLS概念虽然现在更先进的 TLS&#xff08;Transport Layer Security&#xff09; …

前端报错:“Uncaught SyntaxError: missing ) after argument list

问题描述&#xff1a;前端报错&#xff1a;“Uncaught SyntaxError: missing ) after argument list在 JavaScript 中遇到“SyntaxError: missing ) after argument list”这个错误通常意味着在函数调用或者声明中&#xff0c;参数列表的括号没有正确闭合。错误代码&#xff1a…

广州邮科光纤交换机的应用:网络世界中的幕后核心

你知道吗&#xff1f;在我们每天畅游互联网&#xff0c;发送邮件、看视频、打游戏时&#xff0c;背后支撑这一切流畅体验的关键设备之一就是光纤交换机。它像一个幕后英雄&#xff0c;默默地确保信息传输高效、稳定。那么&#xff0c;究竟邮科光纤交换机有哪些不可或缺的应用领…

C++内存布局、构造函数规则和优化策略解析

一、类对象内存布局深度解析 1.1 核心内存占用规则 ​非静态成员变量​&#xff1a;每个对象独立存储&#xff0c;按声明顺序排列&#xff08;含内存对齐填充&#xff09; 示例&#xff1a;class A{int x; char y;}; → 实际占用8字节&#xff08;413填充&#xff09;4​静态…

Fastapi框架总览与核心架构

Fastapi框架总览与核心架构 FastAPI 是一个基于 Python 的现代 Web 框架&#xff0c;专注于 高性能、高并发 和 开发效率&#xff0c;特别适合构建 异步 API 服务、微服务接口&#xff0c;同时在大模型接口封装中也广泛应用。它基于 Starlette&#xff08;异步 Web 框架&#x…

高并发四种IO模型的底层原理

高并发四种IO模型的底层原理 1 IO读写的基本原理 为了避免用户进程直接操作内核&#xff0c;保证内核安全&#xff0c;操作系统将内存&#xff08;虚拟内存&#xff09;划分为两部分&#xff1a;一部分是内核空间(Kernel-Space)&#xff0c;另一部分是用户空间(User-Space)。在…

腾讯云短信实战:Spring Boot接入YML配置与签名/模板/发送/统计/状态/号码包工具类详解

下面是一个Spring Boot集成腾讯云短信服务的详细示例&#xff0c;包含配置和6个工具类&#xff08;签名、模板、发送、统计、状态&#xff09;&#xff0c;采用YML配置&#xff1a; 1. 添加Maven依赖 <dependency><groupId>com.tencentcloudapi</groupId>&…

【Java篇】IntelliJ IDEA 安装与基础配置指南

序 本篇文章将介绍IDEA 2023 版本。 提高开发人员的生产力。无论您是刚开始接触编程的新手&#xff0c;还是经验丰富的开发专家。 一&#xff1a;官网下载安装包&#xff1a; IDEA下载链接 这个版本可以根据自己的需要选择。 二、安装方法 双击进这个.exe文件 这里要选择合…

2-Nodejs运行JS代码

2-Nodejs运行JS代码 创建一个 js 文件编写 JS 代码 要注意的是&#xff0c;在nodejs环境中不能操作浏览器 DOM 对象相关的api&#xff0c;在Nodejs 中运行 JS 代码 按住 shift 键&#xff0c;在 js 文件所在文件夹空白处右键&#xff0c;选择 Powershell 窗口执行如下命令&…

vue中使用西瓜播放器xgplayer (封装)+xgplayer-hls 播放.m3u8格式视频

1.西瓜播放器官网 http://h5player.bytedance.com/guide/2.安装 # 最新稳定版 $ npm install xgplayer对于已有项目也可以通过 CDN 引入&#xff0c;代码如下&#xff1a; <script src"//unpkg.byted-static.com/xgplayer/2.31.2/browser/index.js" type"tex…

2025-07-15通过边缘线检测图像里的主体有没有出血

本节观点&#xff1a;一个好的提问就已经解决了问题的90%。 对于问题的描述正确与否决定了解决问题的方法和路径&#xff0c;所以我们在AI时代必须要学会正确的描述问题和表达问题&#xff0c;否则即使有AI辅助也是很难精准的解决问题。 我的问题&#xff1a; 如何利用代码从图…

【Docker基础】Dockerfile指令速览:文件与目录操作指令详解

目录 引言 1 ADD&#xff1a;高级文件复制与解压 1.1 指令简介 1.2 语法 1.3 功能详解 1.4 使用场景 1.5 执行流程 1.6 示例 1.7 注意事项 2 WORKDIR&#xff1a;设置工作目录 2.1 指令简介 2.2 语法 2.3 使用场景 2.4 创建流程 2.5 示例 2.6 注意事项 3 VOLU…

Python 程序设计讲义(2):Python 概述

Python 程序设计讲义&#xff08;2&#xff09;&#xff1a;Python 概述 一、Python 语言的发展史 Python 语言诞生于 1990 年。 2002 年 10 月&#xff0c;Python2.0 正式发布。 2008 年 12 月&#xff0c;Python3.0 正式发布。 Python3.0 在语法层面和解释器内部做了很多重大…

多租户SaaS系统中设计安全便捷的跨租户流程共享

四维协同架构​​,结合动态授权、加密传输、行为审计和智能策略 一、​​权限控制体系​​ 1. ​​动态权限模型​ ​ 2. ​​授权策略实现​​ ​​RBAC+ABAC混合模型​​ 在流程表增加shared_tenants字段存储授权信息,结合属性动态校验: CREATE TABLE workflow_process…

Spring Ioc Bean 到底是什么

Bean 到底是什么&#xff1f; 简单来说&#xff0c;Spring Bean 就是一个由 Spring IoC 容器负责创建、管理和装配的 Java 对象。 它不是一种新的技术&#xff0c;它本质上还是一个普普通通的 Java 对象&#xff08;POJO - Plain Old Java Object&#xff09;&#xff0c;但它的…

【PCIe 总线及设备入门学习专栏 5.1.1 -- PCIe PERST# 信号的作用】

文章目录 PCIe PERSTN#PERST# 信号作用概述简要定义PERST# 的关键功能PERST# 的时序图示意Synopsys PCIe EP IP 中 PERST# 的作用关键信号接口典型复位流程示例代码(Verilog for Synopsys PCIe)PERST# 使用场景举例(Synopsys PCIe EP)1. 系统上电初始化2. 热复位特定设备3.…

使用python的pillow模块将图片转化为灰度图,获取值和修改值

使用python的pillow模块可以将图片转化为灰度图&#xff0c; 可以获取灰度图的特定点值&#xff0c;区域值&#xff0c; 修改值并保存到图片 图片转换为灰度图 from PIL import Image# 打开图片 image Image.open("d://python//2//1.jpg")gray_image image.convert…

记忆力训练day41

通常是一个地点记2组词 数字和人体记忆宫殿更注重 即时性&#xff1b;地点记忆宫殿是长久性

自动微分模块

一.前言本章节我们是要学习梯队计算&#xff0c;⾃动微分&#xff08;Autograd&#xff09;模块对张量做了进⼀步的封装&#xff0c;具有⾃动求导功能。⾃动微分模块是构成神经⽹络 训练的必要模块&#xff0c;在神经⽹络的反向传播过程中&#xff0c;Autograd 模块基于正向计算…