移動端字體適配

一、移動端圖片適配

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
英文地址,請注明出處:http://en.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 模塊基于正向計算…