vue postcss postcss-pxtorem 页面自适应 动态

news2024/9/23 17:11:31

vue postcss postcss-pxtorem 页面自适应 动态

  • postcss-pxtorem实现页面自适应
    • 1、安装postcss-pxtorem
    • 2、根目录创建postcss.config.js,并配置以下内容
    • 3、创建rem.js,动态设置root px
    • 4、在main.js中引入rem.js
    • 5、在main.js中创建全局处理函数px2rem
    • 6、对内联样式使用px2rem

背景:vue2做的页面,希望可以根据浏览器分辨率动态调整页面元素大小

postcss一款灵活配置css的插件,而postcss-pxtorem是属于postcss中的小工具可以动态将页面px转换为rem,现使用postcss-pxtorem实现页面自适应效果

postcss-pxtorem实现页面自适应

1、安装postcss-pxtorem

npm install postcss-pxtorem --s

2、根目录创建postcss.config.js,并配置以下内容

module.exports = {
  plugins: {
    "postcss-pxtorem": {
      rootValue: 16, // 根元素字体大小,用于将像素转换为rem的基准值
      unitPrecision: 5, // rem的小数位数
      propList: ["*"], // 需要转换的属性列表,['*']表示所有属性都会被转换。
      selectorBlackList: [], // 需要忽略的选择器,可以是正则表达式或字符串
      replace: true, // 是否替换原始值
      mediaQuery: false, // 是否在媒体查询中转换px。
      minPixelValue: 0 // 小于或等于该值的像素单位不被转换。
    }
  }
};

3、创建rem.js,动态设置root px

// 设置 rem 函数
function setRem() {
  // 1920 默认大小16px; 1920px = 120rem ;每个元素px基础上/16 这里是16就是初始化根元素px大小
  const screenWidth = 1920
  const scale = screenWidth / 16
  const htmlWidth = document.documentElement.clientWidth || document.body.clientWidth
  // 得到html的Dom元素
  const htmlDom = document.getElementsByTagName('html')[0]
  // 设置根元素字体大小
  htmlDom.style.fontSize = htmlWidth / scale + 'px'
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.addEventListener('resize', ()=>{
  setRem()
})

4、在main.js中引入rem.js

import '@/utils/rem.js'

此时打开调试工具会发现px已经全部被转换为rem,也基本可以实现页面自适应变化了
在这里插入图片描述

注:postcss-pxtorem无法将内联样式转换为rem,此时需要额外单独处理
在这里插入图片描述

5、在main.js中创建全局处理函数px2rem

function px2rem(px){
  if(/%/ig.test(px)){ // 有百分号%,特殊处理,表述pc是一个有百分号的数,比如:90%
    return px
  }else{
    return (parseFloat(px) / 16) + 'rem' // 这里的16就是初始化根元素px大小
  }
}
Vue.prototype.$px2rem = px2rem // 放到全局

6、对内联样式使用px2rem

<span :style="{'margin-left': $px2rem('20px')}">内联样式</span>

到此结束,页面基本可以实现自适应!!!
若部分元素无法自适应,则可能是没有设置width、height

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

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

相关文章

上海亚商投顾:沪指震荡微涨 固态电池、折叠屏概念股集体大涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日窄幅震荡&#xff0c;黄白二线分化明显&#xff0c;微盘股指数涨超2.5%&#xff0c;题材概念较为活跃…

【渗透测试】ATTCK靶场一,phpmyadmin,域渗透,内网横向移动攻略

前言 博客主页&#xff1a;h0ack1r丶羽~ 从0到1~ VulnStack&#xff0c;作为红日安全团队匠心打造的知识平台&#xff0c;其独特优势在于全面模拟了国内企业的实际业务场景&#xff0c;涵盖了CMS、漏洞管理及域管理等核心要素。这一设计理念源于红日安全团队对ATT&CK红队评…

VBA之正则表达式(47)-- 快速将公式转换为静态值计算

实例需求&#xff1a;工作表I列包含多种计算公式&#xff0c;为了便于演示&#xff0c;将I列公式显示在J列单元格中&#xff0c;现在需要将公式的单元格引用转换为静态值&#xff0c;如K列所示。 示例代码如下。 Sub RegExpDemoReplace()Dim Res()Dim objRegEx As ObjectDim o…

零基础5分钟上手亚马逊云科技-NLP文字理解AI服务

简介&#xff1a; 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我会每天介绍一个基于亚马逊云科技…

android gradle 配置国内gradle地址

1. 地址&#xff1a; 腾讯云镜像 Gradle下载地址&#xff1a;https://mirrors.cloud.tencent.com/gradle/ 阿里云镜像 Gradle下载地址&#xff1a;https://mirrors.aliyun.com/macports/distfiles/gradle/ 阿里云镜像 Gradle下载地址&#xff1a;https://mirrors.aliyun.com…

Python酷库之旅-第三方库Pandas(102)

目录 一、用法精讲 441、pandas.DataFrame.mask方法 441-1、语法 441-2、参数 441-3、功能 441-4、返回值 441-5、说明 441-6、用法 441-6-1、数据准备 441-6-2、代码示例 441-6-3、结果输出 442、pandas.DataFrame.query方法 442-1、语法 442-2、参数 442-3、功…

【C++题解】1223. 汉诺塔的移动次数

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1223. 汉诺塔的移动次数 类型&#xff1a;函数、递归基础 题目描述&#xff1a; 汉诺塔的问题大家都已经很熟悉了&#xff0c;有三个柱子&#xff0c;每个柱子上有一些大小不一的金…

Python(C)图像压缩导图

&#x1f3af;要点 傅里叶和小波变换主成分分析彩色图压缩制作不同尺寸图像K均值和生成式对抗网络压缩无损压缩算法压缩和解压缩算法离散小波变换压缩树结构象限算法压缩矩阵分解有损压缩算法量化模型有损压缩算法JPEG压缩解压缩算法 Python图像压缩 图像压缩可以是有损的&…

Gazebo Harmonic gz-harmonic 和 ROS2 Jazzy 注意事项

激光显示 点呈现 射线呈现 rviz2 新旧版本并存的混乱 本教程旨在为在Ubuntu Jammy&#xff08;最新支持Gazebo Classic包的Ubuntu版本&#xff09;上运行Gazebo Classic&#xff08;如Gazebo 11&#xff09;的用户提供指导&#xff0c;这些用户计划将其代码迁移到新的Gazebo版…

大语言模型(LLMs)全面学习指南

大语言模型&#xff08;LLMs&#xff09;作为人工智能&#xff08;AI&#xff09;领域的一项突破性发展&#xff0c;已经改变了自然语言处理&#xff08;NLP&#xff09;和机器学习&#xff08;ML&#xff09;应用的面貌。这些模型&#xff0c;包括OpenAI的GPT-4o和Google的gem…

泛运动生态持续破圈,重估Keep时刻来临

在中国超40万亿的庞大消费市场中&#xff0c;从不缺少“燃点”。 前不久举办的巴黎奥运会&#xff0c;就带火了国内规模空前的“奥运经济”。在诸多品牌助力下&#xff0c;这股运动消费热潮持续破圈。 比如&#xff0c;运动科技公司Keep通过发布主题为《心火已燃》的品牌TVC&…

生信圆桌x生信友好期刊:助力生物信息学研究的学术平台

介绍 生物信息学作为一门交叉学科&#xff0c;近年来得到了快速发展。为了促进生信领域的科研交流&#xff0c;许多学术期刊开始关注并专门发表生物信息学相关的研究成果。这些期刊被称为“生信友好期刊”&#xff0c;它们为研究人员提供了一个展示和传播最新科研成果的重要平…

怎么成为ChatGPT使用大神?

成为高效使用ChatGPT的高手&#xff0c;可以通过以下几个方面来提升你的使用体验和效果&#xff1a; 1. 清晰明确的提问 明确问题&#xff1a;尽量将问题表述清楚、具体。例如&#xff0c;“如何提高文章写作技巧&#xff1f;” 比 “写作技巧” 更具体。提供上下文&#xf…

UnrealEngine学习(01):安装虚幻引擎

1. 下载安装 Epic Games 目前下载UE引擎需要先下载Epic Games&#xff0c;官网为我们提供了下载路径&#xff1a; https://www.unrealengine.com/zh-CN/downloadhttps://www.unrealengine.com/zh-CN/download 我们点击图中步骤一即可进行下载。 注释&#xff1a;Unreal Engi…

AI嵌入式开发 ---- pt模型文件 -> ONNX模型 -> rknn模型 -> 部署到RK3588开发板上(以yolov5为例)

目录 一、前言 1.1 任务 1.2 开发板下跑预训练模型流程 二、pt 文件转换为 onnx 或 TorchScript 文件&#xff08;平台&#xff1a;x86机器Windows系统&#xff09; 二、将 .onnx 模型文件转换为 .rknn 模型文件【平台&#xff1a;x86上的 Linux虚拟系统】 三、在 Linux虚…

python爬虫控制aiohttp并发数量方式例子解析

在使用Python的aiohttp库进行爬虫开发时&#xff0c;控制并发数量是一个重要的环节&#xff0c;以避免对目标网站造成过大压力或触发反爬机制。以下是一些控制并发数量的方法和示例&#xff1a; 使用Semaphore限制并发数&#xff1a;Semaphore&#xff08;信号量&#xff09;是…

用大模型学习大模型-40问掌握大模型入门知识点(上)

采用提问方式&#xff0c;从个人知识盲点开始&#xff0c;渐进式掌握大模型入门知识点。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 1、大模型中7b、70B代表什么 在讨论人工智能领域特别是大型语言模型&#xff08;LLMs&#xff09;时&#xff0c;“7b”和“70B”均…

【Kotlin设计模式】Kotlin实现装饰器模式

前言 装饰器模式&#xff08;Decorator Pattern&#xff09;&#xff0c;用于动态地为对象添加新功能&#xff0c;而无需修改其结构&#xff0c;通过使用不用装饰类及这些装饰类的排列组合&#xff0c;可以实现不同的功能和效果&#xff0c;但是这样的效果就是会增加很多类&…

debian12 - rsyslog的安装/配置/使用

文章目录 debian12 - rsyslog的安装/配置/使用概述笔记实现main.cppmy_syslog.hmy_syslog.cppMakefileMakefile的准备工作END debian12 - rsyslog的安装/配置/使用 概述 以前在debian7.5中用syslog可以。 现在准备在debian12虚拟机中做个rsyslog的实验&#xff0c;看syslog还…

2024年PDF转换成PPT三步走,职场小白秒变高手

这个信息满天飞的时代&#xff0c;我们几乎天天都得处理一堆文件&#xff0c;PDF和PPT这对搭档简直就是我们工作学习中的老面孔。你有没有碰到过这种头疼事&#xff1a;急着要把PDF转成PPT来准备个演讲&#xff0c;但就是找不到个又快又好使的招&#xff1f;别慌&#xff0c;今…