移动端自适应

1.普通html页面

一般使用px定义,不会进行适配

移动端项目:从不同的终端保持页面的一致性(自适应),使用rem相对单位,rem是相对于根节点html的font-size的值进行动态换算的值

2.普通html页面进行适配

普通页面中:
监听屏幕宽度变化resize方法和首次刷新pageshow时,需要动态设置根节点html的font-size的值
需要调用时根据屏幕变化docEl.clientWidth去设置屏幕的rem的值;
font-size不能以屏幕宽度进行设置font-size/10进行计算

项目中如何通过rem实现自适应:肯定不会自己去换算rem单位,太麻烦了;
使用工具帮助进行换算,vsCode中有换算工具px to rem ,alt+z即可自动进行换算;

使用rem作为单位,但是需要进行换算,rem是相对于页面根节点html标签的font-size的值进行适配的。例如,如果页面根节点html标签的font-size的值为16px,那么1rem = 16px;如果页面根节点html标签的font-size的值为20px,则1rem = 20px,所以使用rem需要进行动态计算

适配方案:只要在窗口大小改变和初始刷新时获取到根节点的宽度/10,作为根节点的fontSize大小,再对元素使用rem作为单位即可实现适配

如下:只要动态设置了窗口大小改变和初始刷新时的fontSize的值,再对元素使用rem作为单位即可实现适配

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box{width: 4rem;height: 4rem;background-color: aquamarine;}</style>
</head>
<body><div class="box"><h6>这是标题</h6></div><script>const docEl = document.documentElement;console.log(docEl);function setRem(){// 直接设置为docEl.clientWidth宽度,如果docEl.clientWidth宽度过大计算结果为0.0023这种类似的数字不好显示docEl.style.fontSize = docEl.clientWidth / 10 + 'px'}window.addEventListener('resize',setRem);window.addEventListener('pageshow',setRem)</script>
</body>
</html>

3.VS code中使用插件px to rem对普通页面进行适配

如果按上诉适配方法,每次做适配都是需要计算的很麻烦,再VS code中使用插件px to rem或者插件

px to rem & rpx & vw (cssrem),页面中正常写px单位,然后使用快捷键alt+z即可自动进行换算

4.vue项目中自适应 ,使用插件amfe-flexible和postcss-pxtorem

实际项目中,vue页面需要进行适配,沟通浏览器页面 16px-》1rem -> 代码16px之间进行换算。
插件:amfe-flexible在页面尺寸发生变化时动态设置项目根节点的值
插件:postcss-pxtorem将页面中px单位换算成rem,需要在项目根节点添加postcss.config.js文件并设置换算规则

module.exports = {plugins: [require('postcss-pxtorem')({// rootValue: 16, //设置为16pxrootValue: 37.7, //以屏幕375px作为标准propList: ['*'],exclude: /node_modules/i,unitPrecision: 5, //保留rem小数点多少位//selectorBlackList: ['.radius'],  //则是一个对css选择器进行过滤的数组,比如你设置为['fs'],那例如fs-xl类名,里面有关px的样式将不被转换,这里也支持正则写法。replace: true, //这个真不知到干嘛用的。有知道的告诉我一下mediaQuery: false, //媒体查询( @media screen 之类的)中不生效minPixelValue: 8, //px小于12的不会被转换}),]
}

没有做适配前:

5.问题:less不会自适应

发现上面写法如果使用的是css可以实现自适应,但是如果是less或者sass就不能实现

解决:使用postcss-px-to-viewport,将px单位换成vw

6.less中实现自适应

参考地址:vue移动端适配postcss-px-to-viewport - 简书

npm i postcss-px-to-viewport -D 安装好后,postcss.config.js设置以下即可实现自适应

postcss.config.js:

const path = require('path');module.exports = ({ file }) => {//如果读取的是vant相关的文件,viewportWidth就设为375,如果是其他的文件,我们就按照我们UI的宽度来设置viewportWidth,即750。const designWidth = file.dirname.includes(path.join('node_modules', 'vant')) ? 375 : 750;return {plugins: {autoprefixer: {},"postcss-px-to-viewport": {unitToConvert: "px",viewportWidth: designWidth,unitPrecision: 6,propList: ["*"],viewportUnit: "vw",fontViewportUnit: "vw",selectorBlackList: [],minPixelValue: 1,mediaQuery: true,exclude: [],landscape: false}}}}

postcss-px-to-viewport 的缺点:无法把行内样式中的 px 转换成视口单位(vw, vh, vmin, vmax)

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

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

相关文章

wps三级标题不对齐

段落中设置首行缩进即可对其 效果&#xff1a; 使用格式刷去将其他三级标题同步

使用yarn安装electron时手动选择版本

访问1Password或者其他可以提供随机字符的网站&#xff0c;获取随机密码运行安装命令 操作要点&#xff0c;必须触发Couldnt find any versions for "electron" that matches "*"才算成功 将复制的随机密码粘贴到后面 例如&#xff1a;yarn add --dev elec…

Java基础知识回顾

Java基础 一、Java概述 1、Java技术体系平台 类型简介JavaSE 标准版支持面向桌面级的应用JavaEE 企业版支持为企业开发的应用JavaME 小型版运行在移动终端的平台 2、Java重要的特点 面向对象的语言&#xff08;OOP&#xff09; 健壮的语言&#xff0c;具有强类型转换、异常…

【Docker】基础篇

文章目录 Docker为什么出现容器和虚拟机关于虚拟机关于Docker二者区别&#xff1a; Docker的基本组成相关概念-镜像&#xff0c;容器&#xff0c;仓库安装Docker卸载docker阿里云镜像加速docker run的原理**为什么容器比虚拟机快**Docker的常用命令1.帮助命令2.镜像相关命令3.容…

SpringMVC拦截器

拦截器 1.拦截器概念2.拦截器开发2.1环境准备2.2拦截器开发流程 3 拦截器参数1. 前置处理方法2. 后置处理方法3 完成处理方法4.配置多个拦截器 1.拦截器概念 (1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后&#xff0c;会去判断请求的是静态资源…

可实现RSSD云硬盘120万IOPS的SPDK IO路径优化

一. 简介 用户对超高并发、超大规模计算等需求推动了存储硬件技术的不断发展&#xff0c;存储集群的性能越来越好&#xff0c;延时也越来越低&#xff0c;对整体IO路径的性能要求也越来越高。在云硬盘场景中&#xff0c;IO请求从生成到后端的存储集群再到返回之间的IO路径比较…

【Java】网络编程-UDP字典服务器客户端简单代码编写

上文讲了UDP回响服务器客户端简单代码编写 本文将讲述UDP字典服务器客户端简单代码编写。所谓回显&#xff0c;就是指客户端向服务器发送一个报文&#xff0c;从服务器那里得到一条一模一样的回响报文 而我们的字典功能呢&#xff0c;则是实现了输入中文&#xff0c;得到对应…

智能物联网汽车3d虚拟漫游展示增强消费者对品牌的认同感和归属感

汽车3D虚拟展示系统是一种基于web3D开发建模和VR虚拟现实技术制作的360度立体化三维汽车全景展示。它通过计算机1:1模拟真实的汽车外观、内饰和驾驶体验&#xff0c;让消费者在购车前就能够更加深入地了解车辆的性能、特点和设计风格。 华锐视点云展平台是一个专业的三维虚拟展…

Pytorch:backward()函数详解

.backward() .backward() 是 PyTorch 中用于自动求导的函数&#xff0c;它的主要作用是计算损失函数对模型参数的梯度&#xff0c;从而实现反向传播算法。 在深度学习中&#xff0c;我们通常使用梯度下降算法来更新模型参数&#xff0c;使得模型能够逐步逼近最优解。 在梯度下…

linux中deadline调度原理与代码注释

简介 deadline调度是比rt调度更高优先级的调度&#xff0c;它没有依赖于优先级的概念&#xff0c;而是给了每个实时任务一定的调度时间&#xff0c;这样的好处是&#xff1a;使多个实时任务场景的时间分配更合理&#xff0c;不让一些实时任务因为优先级低而饿死。deadline调度…

(保姆级教程)一篇文章,搞定所有Linux命令,以及tar解压缩命令,wget、rpm等下载安装命令,Linux的目录结构,以及用户和用户组

文章目录 Linux命令1. Linux目录结构2. 基本命令&#xff08;了解&#xff09;3. 目录&#xff08;文件夹&#xff09;命令列出目录切换目录创建目录删除目录复制目录移动和重命名目录 4. 文件命令创建文件编辑文件编辑文件时的其他操作 查看文件移动/重命名文件复制文件删除文…

机器学习---聚类(原型聚类、密度聚类、层次聚类)

1. 原型聚类 原型聚类也称为“基于原型的聚类” (prototype-based clustering)&#xff0c;此类算法假设聚类结构能通过一 组原型刻画。算法过程&#xff1a;通常情况下&#xff0c;算法先对原型进行初始化&#xff0c;再对原型进行迭代更新求解。著 名的原型聚类算法&#…

基于Redis限流(aop切面+redis实现“令牌桶算法”)

令牌桶算法属于流量控制算法&#xff0c;在一定时间内保证一个键&#xff08;key&#xff09;的访问量不超过某个阈值。这里的关键是设置一个令牌桶&#xff0c;在某个时间段内生成一定数量的令牌&#xff0c;然后每次访问时从桶中获取令牌&#xff0c;如果桶中没有令牌&#x…

【机器学习】梯度下降法:从底层手写实现线性回归

【机器学习】Building-Linear-Regression-from-Scratch 线性回归 Linear Regression0. 数据的导入与相关预处理0.工具函数1. 批量梯度下降法 Batch Gradient Descent2. 小批量梯度下降法 Mini Batch Gradient Descent&#xff08;在批量方面进行了改进&#xff09;3. 自适应梯度…

C++相关闲碎记录(17)

1、IO操作 &#xff08;1&#xff09;class及其层次体系 &#xff08;2&#xff09;全局性stream对象 &#xff08;3&#xff09;用来处理stream状态的成员函数 前四个成员函数可以设置stream状态并返回一个bool值&#xff0c;注意fail()返回是failbit或者badbit两者中是否任一…

【重点】【DP】152.乘积最大的子数组

题目 法1&#xff1a;DP 参考&#xff1a;https://blog.csdn.net/Innocence02/article/details/128326633 f[i]表示以i结尾的连续子数组的最大乘积&#xff0c;d[i]表示以i结尾的连续子数组的最小乘积 。 如果只有正数&#xff0c;我们只需要考虑最大乘积f[i]&#xff1b;有负…

MATLAB - Gazebo 仿真环境

系列文章目录 前言 机器人系统工具箱&#xff08;Robotics System Toolbox™&#xff09;为使用 Gazebo 模拟器可视化的模拟环境提供了一个界面。通过 Gazebo&#xff0c;您可以在真实模拟的物理场景中使用机器人进行测试和实验&#xff0c;并获得高质量的图形。 Gazebo 可在…

c# OpenCV 基本绘画(直线、椭圆、矩形、圆、多边形、文本)(四)

我们将在这里演示如何使用几何形状和文本注释图像。 Cv2.Line() 绘制直线 Cv2.Ellipse() 绘制椭圆Cv2.Rectangle() 绘制矩形Cv2.Circle() 绘制圆Cv2.FillPoly() 绘制多边形Cv2.PutText() 绘制文本 一、绘制直线 Cv2.Line(image, start_point, end_point, color, thickness) …

从传统型数据库到非关系型数据库

一 什么是数据库 数据库顾名思义保存数据的仓库&#xff0c;其本质是一个具有数据存储功能的复杂系统软件&#xff0c;数据库最终把数据保存在计算机硬盘&#xff0c;但数据库并不是直接读写数据在硬盘&#xff0c;而是中间隔了一层操作系统&#xff0c;通过文件系统把数据保存…

2023ChatGPT浪潮,2024开源大语言模型会成王者?

《2023ChatGPT浪潮&#xff0c;2024开源大语言模型会成王者&#xff1f;》 一、2023年的回顾 1.1、背景 我们正迈向2023年的终点&#xff0c;回首这一年&#xff0c;技术行业的发展如同车轮滚滚。尽管互联网行业在最近几天基本上处于冬天&#xff0c;但在这一年间我们仍然经…