【Vue3】PostCss 适配

  • px 固定的单位,不会进行自适应。
  • rem r = root font-size=16px 1rem=16px,但是需要手动进行单位的换算
  • vw vh 相对于视口的尺寸,不同于百分比(相对于父元素的尺寸)375屏幕 1vw = 3.75px

利用插件进行 px(设计稿)=> viewport。

vite 内置了 PostCss 。

Declaration(node) {
	console.log(node.prop,node.value)
},

在这里插入图片描述

具体实现

  1. 清除默认样式
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <link rel="icon" type="image/svg+xml" href="/vite.svg"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>Vite + Vue + TS</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        html, body, #app {
            height: 100%;
            overflow: hidden;
        }
    </style>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

  1. 写个圣杯布局(三栏布局)
<template>
  <header>
    <div class="left">left</div>
    <div class="center">center</div>
    <div class="right">right</div>
  </header>
</template>

<script setup lang="ts">

</script>

<style scoped lang="less">
header {
  display: flex;

  .left {
    width: 100px;
    height: 50px;
    background: lightblue;
  }

  .center {
    flex: 1;
    height: 50px;
    background: lightcoral;
  }

  .right {
    width: 100px;
    height: 50px;
    background: lightgoldenrodyellow;
  }
}
</style>

在这里插入图片描述

  1. 忽略一些不必要的报错
    在这里插入图片描述

tsconfig.node.json

{
  "compilerOptions": {
    "composite": true,
    "skipLibCheck": true,
    "module": "ESNext",
    "moduleResolution": "bundler",
    "allowSyntheticDefaultImports": true,
    "noImplicitAny": false
  },
  "include": [
    "vite.config.*",
    "plugins/**/*"
  ]
}

  1. 编写插件
// vite 内置了 postcss 插件,无需安装
import {Plugin} from "postcss";

const Options = {
    viewPortWidth: 375  // UI设计稿的宽度,给多少写多少
}

interface Options {
    viewPortWidth: number
}

export const PostcssPxToViewport = (options: Options = Options): Plugin => {
    const opt = Object.assign({}, Options, options)
    return {
        postcssPlugin: 'postcss-px-to-viewport',
        Declaration(node) {
            // 这里的px可以写成自定义任意单位,保证只有部分单位需要转换
            if (node.value.includes('px')) {
                const num = parseFloat(node.value)
                node.value = `${((num / opt.viewPortWidth) * 100).toFixed(2)}vw`
            }
        },
    }
}


  1. vite配置

在这里插入图片描述

vite.config.ts

export default defineConfig({
  plugins: [vue()],
  // 通过配置变为全局通用样式
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: '@import "./src/bem.scss";',
      },
    },
    postcss: {
      plugins: [PostcssPxToViewport()]
    }
  }
})

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1209. 带分数 刷题笔记

思路 暴力匹配 读入目标数 n 看n是否与ab/c相等 因为c里面的除法是整除 我们将 nab/c 转换为 c*na*cb 那么如何获得a,b&#xff0c;c 依题意 a&#xff0c;b&#xff0c;c三个数由1-9九个数字组成 且每个数字只能出现一次 由此 我们可以搜出123456789的全部排列方式…

加密与安全_探索口令加密算法(PBE)

文章目录 概述疑问PBE 算法 &#xff08; Password Based Encryption&#xff09;CodePOM实现 小结 概述 加密与安全_探索对称加密算法中我们提到AES加密密钥长度是固定的128/192/256位&#xff0c;而不是我们用WinZip/WinRAR那样&#xff0c;随便输入几位都可以。 这是因为对…

爬虫入门到精通_实战篇7(Requests+正则表达式爬取猫眼电影)_ 抓取单页内容,正则表达式分析,保存至文件,开启循环及多线程

1 目标 猫眼榜单TOP100&#xff1a;https://www.maoyan.com/board 2 流程框架 抓取单页内容&#xff1a;利用requests请求目标站点&#xff0c;得到单个网页HTML代码&#xff0c;返回结果。正则表达式分析&#xff1a;根据HTML代码分析得到电影名称,主演,上映时间,评分,图片…

洗地机推荐购买要点全攻略:洗地机哪些品牌好用?热门洗地机详细体验点评

清洁家务可谓是家务清洁中最累人的存在&#xff0c;既浪费时间也浪费精力&#xff0c;还费腰。如果是家有萌宠的铲屎官们就更加辛苦了&#xff0c;不仅清洁时会被萌宠们打扰&#xff0c;还要处理漫天飞舞和沾在地面上的毛发。那么有没有一款智能家电可以帮助我们快速高效的完成…

C++string类讲解

大家好鸭 见字如面&#xff0c;已经有好久没有写文章了&#xff0c;这段时间忙着学习&#xff0c;也忙着玩&#xff0c;所以停更了一段时间 今天让我们来谈一谈关于C中的string类 什么是string类&#xff1f; 在c语言中我们操作字符串往往采用指针&#xff0c;这样的访问方式并…

阿里巴巴面试必备:数据库集群知识全面解读!

大家好,我是小米。今天,我们将深入探讨阿里巴巴面试题中一个备受关注的话题:数据库集群。作为技术领域中的一项重要实践,数据库集群不仅是企业架构中的核心组成部分,更是保障系统稳定性和数据可靠性的关键一环。让我们一起来揭秘数据库集群的奥秘吧! 主从复制过程 主从…

★【二叉搜索树(中序遍历特性)】【 ★递归+双指针】Leetcode 98. 验证二叉搜索树

★【二叉搜索树&#xff08;中序遍历特性&#xff09;】【 ★递归双指针】Leetcode 98. 验证二叉搜索树 二叉搜索树 98. 验证二叉搜索树解法1 笨 中序递归遍历为一个数组 然后判断数组是不是升序排列就可以★解法2 不使用数组 递归法 ---------------&#x1f388;&#x1f38…

ssm701基于JavaWeb的个人健康信息管理系统

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一 、设计说明 1.1 研究…

Excel常用公式总结非常实用

16个最实用的Excel万能公式 1、多条件判断 IF(And(条件1,条件2..条件N),条件成立返回值) IF(or(条件1,条件2..条件N),条件成立返回值) 2、多条件查找 Lookup(1,0/((条件1*条件2*...条件N)),返回值区域&#xff09; 3、多条件求和 Sumifs(值区域,判断区域1,条件1,判断区域2,条…

JS reduce() 附使用详解

reduce() 方法对数组中的每个元素执行自己提供的回调函数(依次执行)&#xff0c;将其结果汇总为单个返回值。 文章目录 前言一、reduce()是什么&#xff1f;二、使用步骤1.语法2.实例解析 initialValue 参数3.注意事项4.应用情况 三、总结 前言 reduce()方法可以搞定的东西特别…

【leetcode】用队列实现栈

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 点击查看题目 思路: 在做此题之前&#xff0c;我们先要实现队列&#xff0c;这在上个博客中已经写过&#…

【深度学习笔记】5_4 池化层

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 5.4 池化层 回忆一下&#xff0c;在5.1节&#xff08;二维卷积层&#xff09;里介绍的图像物体边缘检测应用中&#xff0c;我们构造卷…

pyhton3+selenium的web页面自动化测试框架!

web自动化测试框架 pyhton3selenium3unittestHTMLTestRunner 环境部署&#xff1a; python3SeleniumunittestHTMLTestRunnerpageObject Web自动化测试框架 &#xff08;Page Object设计模式&#xff09; 环境部署&#xff1a; python3、selenium3 开发工具&#xff1a; P…

小程序事件处理

事件处理 一个应用仅仅只有界面展示是不够的&#xff0c;还需要和用户做交互&#xff0c;例如&#xff1a;响应用户的点击、获取用户输入的值等等&#xff0c;在小程序里边&#xff0c;我们就通过编写 JS 脚本文件来处理用户的操作 1. 事件绑定和事件对象 小程序中绑定事件与…

基于springboot实现保险信息网站系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现保险信息网站系统演示 摘要 随着互联网的不断发展&#xff0c;现在人们获取最新资讯的主要途径来源于网上新闻&#xff0c;当下的网上信息宣传门户网站的发展十分的迅速。而保险产品&#xff0c;作为当下人们非常关注的一款能够给人们带来医疗、生活、养老或…

HTML5新特性:为Web带来的翻天覆地变化

随着互联网的发展&#xff0c;HTML5作为Web开发的重要里程碑&#xff0c;为我们带来了一系列令人兴奋的新特性和功能。本文将带领大家探索HTML5的新特性&#xff0c;揭示其对Web技术的巨大影响。 一、介绍 HTML5作为HTML的最新版本&#xff0c;不仅强化了网页结构与内容&#…

【JVM】JVM相关机制

1. JVM内存区域划分 1.1 内存区域划分简介 内存区域划分&#xff1a;实际上JVM也是一个进程&#xff0c;进程运行时需要向操作系统申请一些系统资源&#xff08;内存就是典型的资源&#xff09;&#xff0c;这些内存空间就支撑着后续Java程序的运行&#xff0c;而这些内存又会…

【go语言开发】swagger安装和使用

本文主要介绍go-swagger的安装和使用&#xff0c;首先介绍如何安装swagger&#xff0c;测试是否成功&#xff1b;然后列出常用的注释和给出使用例子&#xff1b;最后生成接口文档&#xff0c;并在浏览器上测试 文章目录 安装注释说明常用注释参考例子 文档生成格式化文档生成do…

T3SF:一款功能全面的桌面端技术练习模拟框架

关于T3SF T3SF是一款功能全面的桌面端技术练习模拟框架&#xff0c;该工具针对基于主场景事件列表的各种事件提供了模块化的架构&#xff0c;并包含了针对每一个练习定义的规则集&#xff0c;以及允许为对应平台参数定义参数的配置文件。 该工具的主模块能够执行与其他特定模…

Python学习 问题汇总(None)

None的总结 在Python中&#xff0c;对于一些变量往往需要赋初始值&#xff0c;为了防止初始值与正常值混淆&#xff0c;通常采用置0或置空操作&#xff0c;置0比较简单&#xff0c;置空则是赋NoneNone是一个空值&#xff0c;可以赋给任意类型的变量&#xff0c;起到占位的作用…
最新文章