Vue3自定义PostCss插件

Vue3自定义PostCss插件

      • 插件功能: 实现自动转px为vw功能
    • 1. 创建插件ts文件
    • 2. tsconfig.node.json引入插件
    • 3. vite.config.ts增加插件配置
    • 4. 编写插件内容
    • 5. 示例

插件功能: 实现自动转px为vw功能

px 固定单位,不会随着屏幕的变化而变化
vh vw 相对于视口高宽进行控制

1. 创建插件ts文件

在这里插入图片描述

2. tsconfig.node.json引入插件

"include": ["vite.config.ts","plugins/**/*"]

3. vite.config.ts增加插件配置

import { PostCssToViewport } from './plugins/postcss-px-to-viewport'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),vueJsx()],css:{//配置自定义postcss插件postcss:{plugins:[PostCssToViewport()]},},})

4. 编写插件内容

//postcss插件
import { Plugin } from "postcss"const Options = {viewportWidth: 375,//默认视口宽度
}
interface Options {viewportWidth?:number
}export const PostCssToViewport = (options:Options = Options):Plugin =>{const opt = Object.assign({},Options,options);return {postcssPlugin: 'postcss-px-to-viewport',//钩子函数Declaration(node){//判断需要转换的单位if(node.value.indexOf('xm') != -1){console.log(node.prop,node.value);const num = parseFloat(node.value);node.value = `${((num / opt.viewportWidth)*100).toFixed(2)}vw`}}}
}

插件会将样式中是自定义单位(xm)装换为vw

5. 示例

<template><div><header class="header"><div>left</div><div>center</div><div>right</div></header></div>
</template><script setup lang=ts>
import {ref} from 'vue'</script><style scoped lang="less">.header{display: flex;div{height: 50px;line-height: 50px;color: #fff;text-align: center;}div:nth-child(1){width:100xm;background-color: #f00;}div:nth-child(2){flex:1;background-color: #0f0;}div:nth-child(3){width: 100xm;background-color: #00f;}
}
</style>

在这里插入图片描述

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

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

相关文章

LeetCode541. 反转字符串 II

541. 反转字符串 II 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起&#xff0c;每计数至 2k 个字符&#xff0c;就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个&#xff0…

[UI5 常用控件] 07.SplitApp,SplitContainer

文章目录 前言1. SplitApp1.1 组件结构1.2 Demo1.3 mode属性 2. SplitContainer 前言 本章节记录常用控件SplitApp&#xff0c;SplitContainer。主要功能是在左侧显示Master页面&#xff0c;右侧显示Detail页面。 Master页面和Detail页面可以由多个Page组成&#xff0c;并支持…

BEV感知算法学习

BEV感知算法学习 3D目标检测系列 Mono3D(Monocular 3D Object Detection for Autonomous Driving) 流程&#xff1a; 通过在地平面上假设先验&#xff0c;在3D空间中对具有典型物理尺寸的候选边界框进行采样&#xff1b;然后我们将这些方框投影到图像平面上&#xff0c;从而避…

SpringBoot实战第三天

今天主要完成了&#xff1a; 新增棋子分类 棋子分类列表 获取棋子分类详情 更新棋子分类 更新棋子分类和添加棋子分类_分组校验 新增棋子 新增棋子参数校验 棋子分类列表查询(条件分页) 先给出分类实体类 Data public class Category {private Integer id;//主键IDNot…

Spring- FactoryBean接口中的getObject()方法

目录 一、Spring框架介绍 二、FactoryBean接口是什么 三、getObject()方法如何使用 一、Spring框架介绍 Spring框架是一个轻量级的、非侵入式的Java企业级应用开发框架&#xff0c;以IoC&#xff08;控制反转&#xff09;和AOP&#xff08;面向切面编程&#xff09;为核心思…

阿里云服务器租用费用_2024年2月最新价格表

2024年2月阿里云服务器租用价格表更新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核…

百面嵌入式专栏(技能篇)嵌入式技能树详解

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍嵌入式重点知识。 一、C语言 C语言这一块的高频考点有预处理、关键字、数据类型、指针与内存管理。 预处理有文件包含、宏定义、条件编译,其中最重要的是宏定义,通常考核宏定义的语法、宏替换与函数的区…

Redis核心技术与实战【学习笔记】 - 24.Redis 数据分片方案选择:Codis 和 Redis Cluster

简述 Redis 的切片集群使用多个实例保存数据&#xff0c;能很好的应对大数据量的场景。在《4.Redis 切片集群》中&#xff0c;介绍了 Redis 官方提供的切片集群方法 Redis Cluster。本章&#xff0c;再来学习下&#xff0c;在 Redis Cluster 方案正式发布前&#xff0c;业界广…

算法练习-四数之和(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;数组 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨在…

推动海外云手机发展的几个因素

随着科技的不断发展&#xff0c;海外云手机作为一种新兴技术&#xff0c;在未来呈现出令人瞩目的发展趋势。本文将在用户需求、技术创新和全球市场前景等方面&#xff0c;探讨海外云手机在未来的发展。 1. 用户需求的引领&#xff1a; 随着人们对移动性和便捷性的需求不断增长&…

【FPGA】快速学习路径

FPGA学习教程、功利式学习路径、以找工作为目的&#xff0c;早日入门FPGA_哔哩哔哩_bilibili