兼容性问题---H5屏幕适配方案

对前端计量单位的理解:px、vw、rem、em、%等;

 https://www.tiangong.cn/chatShare?share_id=e3a157fe37e041de95a2

前端开发中常见的计量单位主要包括以下几种:px (像素): 屏幕显示的最小单位,一个像素表示显示器上一个点的颜色。% (百分比): 通常相对于父元素的宽度或高度,例如 width: 50% 意味着元素的宽度是父元素宽度的一半。em: 相对于当前元素的字体尺寸,例如 font-size: 2em 表示元素的字体大小是当前字体尺寸的2倍。rem: 相对于根元素(通常是 <html> 元素)的字体尺寸,例如 font-size: 2rem 表示元素的字体大小是根元素字体尺寸的2倍。vw (视口宽度): 相对于视口宽度的百分比,1vw 等于视口宽度的1%。vh (视口高度): 相对于视口高度的百分比,1vh 等于视口高度的1%。cm, mm, in (厘米、毫米、英寸): 这些是绝对长度单位,用于打印等领域。pt (点): 1pt 等于 1/72 英寸,常用于印刷行业。pc (派卡): 1pc 等于 12pt,也常用于印刷行业。

 这些计量单位可以用来设置元素的宽度、高度、字体大小、边距、内边距等各种样式属性。使用合适的计量单位可以提高网页的响应性和灵活性,并确保在不同设备和屏幕尺寸上都有良好的显示效果。

一、动态rem适配方案:适合H5项目的适配方案

实现方式为:动态设置页面根元素大小,同时配合postcss-pxtorem插件pxtorem自动转换插件;

第一步:动态设置页面根元素大小

第一种:使用媒体对象@media根据屏幕的宽度设置不同的根元素大小

/* 基础样式 */
html {font-size: 16px; /* 默认字体大小 */
}/* 小屏设备(手机)样式 */
@media screen and (max-width: 600px) {html {font-size: 14px; /* 小屏设备字体大小 */}
}/* 中等屏幕(平板)样式 */
@media screen and (min-width: 601px) and (max-width: 1024px) {html {font-size: 16px; /* 中等屏幕字体大小 */}
}/* 大屏设备(桌面)样式 */
@media screen and (min-width: 1025px) {html {font-size: 18px; /* 大屏设备字体大小 */}
}

 第二种:使用js动态设置根元素大小

 (function (doc, win) {var docEl = doc.documentElement,resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',recalc = function () {var clientWidth = docEl.clientWidth;if (!clientWidth) return;if(clientWidth>=750){docEl.style.fontSize = '16px';}else{docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';}};recalc()if (!doc.addEventListener) return;win.addEventListener(resizeEvt, recalc, false);doc.addEventListener('DOMContentLoaded', recalc, false);})(document, window);

 第三种:使用插件lib-flexible.js动态调整根元素大小(推荐)

第二步:配合px自动转rem的插件:postcss-pxtorem

 1. 安装

npm install postcss-pxtorem --save-dev

 2. 文件配置

// 在项目根目录创建或编辑 postcss.config.js 文件,添加 postcss-pxtorem 插件配置
/* postcss.config.cjs  */
module.exports = {plugins: {'postcss-pxtorem': {rootValue: 16, // 基准值,对应于根元素的 font-sizeunitPrecision: 5, // 保留小数点位数propList: ['*', '!min-width', '!max-width'], // 排除 min-width 和 max-width 属性selectorBlackList: [], // 忽略的选择器replace: true, // 替换而不是添加备用属性mediaQuery: false, // 允许在媒体查询中转换 pxminPixelValue: 0 // 最小的转换数值}}
};
/* vite  */
export default defineConfig({css: {postcss: './postcss.config.cjs',}
})

二、使用vw、vh视口单位适配H5页面

使用插件postcss-px-to-viewport实现:

1.安装

npm install postcss-px-to-viewport --save-dev

2. 使用

// 需要在项目的 postcss.config.js 文件中配置这个插件
// 示例代码:
module.exports = {plugins: {'postcss-px-to-viewport': {viewportWidth: 375, // 视口的宽度,对应的是设计稿的宽度unitToConvert: 'px', // 需要转换的单位viewportUnit: 'vw', // 转换后的单位selectorBlackList: ['ignore'], // 不转换的选择器minPixelValue: 1, // 小于1px的不转换mediaQuery: false // 是否允许在媒体查询中转换}}
}

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

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

相关文章

【第24章】MyBatis-Plus之SQL注入器

文章目录 前言一、概述1. 使用场景2. 功能 二、注入器配置三、自定义全局方法攻略1. 定义SQL2. 注册自定义方法3.定义BaseMapper4.配置SqlInjector 四、注意事项五、更多示例六、实战1. 定义SQL2. 注册自定义方法3.定义BaseMapper4.配置SqlInjector5. 测试类6. 结果 总结 前言 …

QT调节屏幕亮度

1、目标 利用QT实现调节屏幕亮度功能&#xff1a;在无屏幕无触控时&#xff0c;将屏幕亮度调低&#xff0c;若有触控则调到最亮。 2、调节亮度命令 目标装置使用嵌入式Linux系统&#xff0c;调节屏幕亮度的指令为&#xff1a; echo x > /sys/class/backlight/backlight/…

Linux开机自启动连接wifi

&#x1f308;个人主页&#xff1a;Rookie Maker &#x1f525; 系列专栏&#xff1a;Linux &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于IT的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到我的代码世界~ &#x1f601; 喜欢的…

【技术支持】npm镜像设置

临时设置 npm install <package> --registryhttps://registry.npmmirror.com/永久设置 npm config set registry https://registry.npmmirror.com/获取设置值 npm config get registry退回官方 npm config set registry https://registry.npmjs.org/

P8306 【模板】字典树

题目描述 给定 n 个模式串 s1​,s2​,…,sn​ 和 q 次询问&#xff0c;每次询问给定一个文本串 ti​&#xff0c;请回答 s1​∼sn​ 中有多少个字符串 sj​ 满足 ti​ 是 sj​ 的前缀。 一个字符串 t 是 s 的前缀当且仅当从 s 的末尾删去若干个&#xff08;可以为 0 个&#…

Kubernetes管理神器-插件管理器Krew

Kubernetes管理神器-插件管理器Krew Krew是Kubernetes的一个插件管理器&#xff0c;它允许用户搜索、安装和管理kubectl插件。通过Krew&#xff0c;用户可以方便地扩展kubectl的功能&#xff0c;使用社区提供的各种插件。 类似于apt,dnf,brew等工具&#xff0c;截至目前&…

环境快照:精通Conda中的conda env export命令

环境快照&#xff1a;精通Conda中的conda env export命令 引言 在科学计算和软件开发中&#xff0c;能够准确地复制和共享工作环境是至关重要的。Conda提供了conda env export命令&#xff0c;允许用户导出当前环境的配置&#xff0c;包括已安装的包及其版本。这使得环境的复…

2.贪心算法.基础

2.贪心算法.基础 基础知识题目1.分发饼干2.摆动序列3.最大子序和4.买股票的最佳时机24.2.买股票的最佳时机5.跳跃游戏5.1.跳跃游戏26.K次取反后最大化的数组和7.加油站8.分发糖果 基础知识 什么是贪心? 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪…

【代码随想录算法训练Day63】最小生成树算法

Day63 图论第七天 prim算法 #include<iostream> #include<vector> #include <climits>using namespace std; int main() {int v, e;int x, y, k;cin >> v >> e;// 填一个默认最大值&#xff0c;题目描述val最大为10000vector<vector<int…

面试经典 106. 从中序与后序遍历序列构造二叉树

最近小胖开始找工作了&#xff0c;又来刷苦逼的算法了 555 废话不多说&#xff0c;看这一题&#xff0c;上链接&#xff1a;https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/?envTypestudy-plan-v2&envIdtop-inte…

Linux-磁盘空间不足的清理步骤(详细版本)

当 Linux 服务器出现 “no space left on device” 错误时,意味着磁盘空间已满,需要采取一些措施来清理磁盘,可以根据下面步骤依次清理: 1. 检查磁盘使用情况 首先,使用 df 和 du 命令检查磁盘使用情况,找出哪些目录占用了大量空间。 可以通过如下命令来查询 df -h举例…

将ceph中的submodule转化为正常文件提交到内部仓库中

将ceph中的submodule转化为正常文件提交到内部仓库中 1、问题 ceph 的submodule经常下载不下来导致编译打包都困难&#xff0c;如果有一个方法将submodule下载下来然后直接放到仓库中&#xff0c;以免每次都需要重新clone了。这时发现另外一个问题&#xff0c;submodule没有被…

CentOS 8升级gcc版本

1、查看gcc版本 gcc -v发现gcc版本为8.x.x&#xff0c;而跑某个项目的finetune需要gcc-9&#xff0c;之前搜索过很多更新gcc版本的方式&#xff0c;例如https://blog.csdn.net/xunye_dream/article/details/108918316?spm1001.2014.3001.5506&#xff0c;但执行指令 sudo yu…

如何从 Vue 2 无痛升级到 Vue 3,一文搞定!

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 随着 Vue 3 的发布,许多开发者都面临着从 Vue 2 升级到 Vue 3 的挑战。 本文将详细介绍如何从 Vue 2 无痛升级到 Vue 3,包括每个步骤的详细说明与代码示例。 让我们开始吧! 准备工作 在正式开始升级之前,请确保你已经…

纳米级材料尺寸如何测量?

在纳米显微测量领域&#xff0c;基于纳米传动与扫描技术、白光干涉与高精度3D重建技术、共聚焦测量等技术积累&#xff0c;具有自主知识产权的白光干涉仪&#xff08;Z向分辨率可高达0.1纳米&#xff09;和共聚焦显微镜&#xff0c;广泛应用于半导体、3C电子、高校科研等行业领…

VMware安装centos9详细教程(保姆级)

前言 centos9最新的centos版本&#xff0c;在近期的使用中发现它的操作界面与以往的centos7/8更加舒适&#xff0c;界面优化更加精细 项目终止日期&#xff08;EOL&#xff09; 从公告可知&#xff0c;CentOS 项目重心从 CentOS Linux 转移到了 CentOS Stream。下面是各个项…

机场公厕厕位指引屏,布线简单,安装便捷

在人潮涌动的机场&#xff0c;公厕不仅是旅客的必需设施&#xff0c;更是衡量机场服务质量的重要指标。然而&#xff0c;传统机场公厕往往存在信息不透明、清洁维护滞后、高峰期拥挤等问题&#xff0c;严重影响了旅客的使用体验。近年来&#xff0c;随着智慧机场理念的兴起&…

【方法】如何打开设置了密码的ZIP文件?

对于重要的ZIP文件&#xff0c;很多人会设置密码保护&#xff0c;那要如何打开设置了密码的ZIP文件呢&#xff1f;今天我们一起来看下&#xff0c;在记得密码和忘记密码的情况下&#xff0c;如何打开ZIP文件。 情况1&#xff1a; 如果知道ZIP文件原本设置的密码&#xff0c;我…

Excel第28享:如何新建一个Excel表格

一、背景需求 小姑电话说&#xff1a;要新建一个表格&#xff0c;并实现将几个单元格进行合并的需求。 二、解决方案 1、在电脑桌面上空白地方&#xff0c;点击鼠标右键&#xff0c;在下拉的功能框中选择“XLS工作表”或“XLSX工作表”都可以&#xff0c;如下图所示。 之后&…

用LangGraph、 Ollama,构建个人的 AI Agent

如果你还记得今年的 Google I/O大会&#xff0c;你肯定注意到了他们今年发布的 Astra&#xff0c;一个人工智能体&#xff08;AI Agent&#xff09;。事实上&#xff0c;目前最新的 GPT-4o 也是个 AI Agent。 现在各大科技公司正在投入巨额资金来创建人工智能体&#xff08;AI …