vue创建+rem 视口自适应

vue+vant 实现rem的转换=>视频地址

原文文档地址

1. 搭建环境

1.1.输入 vue ui

在这里插入图片描述

1.2. create project 创建项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JKNdk0mU-1608575680484)(./img/image-20201222011751211.png)]

1.3. 选择手动安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MbuWBvyk-1608575680486)(./img/image-20201222011820216.png)]

1.4. 选择配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Edt6IC0J-1608575680487)(./img/image-20201222011911014.png)]
在这里插入图片描述

1.5. 选择版本和postcss配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9JdZb3cK-1608575680489)(./img/image-20201222011956081.png)]

1.6. 选择预设—我们这边不选择预设

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsU1Lpow-1608575680490)(./img/image-20201222012030384.png)]

1.7. 等待创建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mGTzhOBC-1608575680491)(./img/image-20201222012111107.png)]

1.8. 创建成功!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z34cvnII-1608575680491)(./img/image-20201222012135084.png)]

2. 启动项目

在这里插入图片描述

2.1. 找到对应的项目文件—> 找到tasks任务----> 找到serve 服务----> 找到Run task 启动项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mzYyfQYF-1608575680492)(./img/image-20201222012331782.png)]

2.2. 点击启动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-11EkYIg1-1608575680493)(./img/image-20201222012413595.png)]

2.3. 启动成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S0RM4GdS-1608575680494)(./img/image-20201222012431021.png)]

3. 安装vant

3.1. 找到Dependencies–>install

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JxxpGxrD-1608575680495)(./img/image-20201222012607962.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BZRFZgI6-1608575680496)(./img/image-20201222012702807.png)]

3.2. 安装成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TT1sBoqj-1608575680497)(./img/image-20201222012754919.png)]

4. vue项目中使用vant

4.1.配置babel,新建根目录下新建:.babelrc(如果项目中,就不需要新建了)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wZN5rzOD-1608575680498)(./img/image-20201222014048543.png)]

  • 写入配置:

    {
      "plugins": [
        ["import", {
          "libraryName": "vant",
          "libraryDirectory": "es",
          "style": true
        }]
      ]
    }
    123456789
    

4.2. 安装依赖

# 1.安装babel-plugin-import实现按需加载
yarn add babel-plugin-import
12

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZVrX33HP-1608575680499)(./img/image-20201222013513457.png)]

4.3. 测试是否可以使用vant

    1. 在about.vue页面写入:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KiqZ9iGn-1608575680500)(./img/image-20201222014403160.png)]

      <van-button type="default">默认按钮1</van-button>
      <van-button type="primary" @click="clickEvent">主要按钮</van-button>
      <van-button type="info">信息按钮</van-button>
      <van-button type="warning">警告按钮</van-button>
      <van-button type="danger">危险按钮</van-button>
      12345
      
    2. 在main.js写入:

      import {Button} from 'vant';
      Vue.use(Button);
      12
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qUhDX1rN-1608575680501)(./img/image-20201222014335071.png)]

    3. 刷新页面:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-47XvhqYe-1608575680501)(./img/image-20201222014439268.png)]

    4. 说明成功了

5. 引入rem转换–安装postcss-pxtorem 这个是将px转为rem----注意直接可以在项目设置px,这个插件自动会编译的rem自动识别,你在项目中使用px就可以了,不用在vscode再次使用rem,这样子写起来更快了

5.1. 命令安装:postcss-pxtorem

yarn add postcss-pxtorem
1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sc9bXbXg-1608575680502)(./img/image-20201222014615304.png)]

5.2. 命令安装:amfe-flexible

yarn add amfe-flexible
1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mVrLLBLA-1608575680503)(./img/image-20201222022000235.png)]

5.3. 在main.js文件中引入amfe-flexible/index.js

	import 'amfe-flexible/index.js'
1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dtQuXoY1-1608575680503)(./img/image-20201222022110175.png)]

5.4. 在public/index.html加入meta标签

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nacYy3qK-1608575680504)(./img/image-20201222022210465.png)]

5.5. 在package.json项目配置里设置postcss

        "postcss": {
		    "plugins": {
		      "autoprefixer": {
		        "overrideBrowserslist": [
		          "Android 4.1",
		          "iOS 7.1",
		          "Chrome > 31",
		          "ff > 31",
		          "ie >= 8"
		        ]
		      },
		      "postcss-pxtorem": {
		        "rootValue": 37.5,
		        "propList": [
		          "*"
		        ]
		      }
		    }
		  }
12345678910111213141516171819

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pWduYqSJ-1608575680505)(./img/image-20201222022310468.png)]

5.6. 在浏览器测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VS6dtYTm-1608575680505)(./img/image-20201222022419328.png)]

  • 这是在plus下的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R8sGY6y4-1608575680506)(./img/image-20201222022452539.png)]

  • 在iPhone6测试一下,看看是否改变了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r2tG00F8-1608575680506)(./img/image-20201222022551418.png)]

变小了,说明我们自适应成功了!!!

<think>好的,我需要帮助用户了解如何使用postcss-px2rem实现屏幕自适应。首先,我得回顾用户提供的引用内容,找出相关配置步骤和注意事项。 用户提到了引用[5]中的vue.config.js配置示例,其中使用了postcss-px2rem插件,并设置了remUnit为37.5。这说明在Vue项目中,可以通过修改vue.config.js来配置这个插件。不过用户现在可能使用的是Vite,比如引用[3]提到vite.config.ts的配置,需要注意不同构建工具的区别。 首先,安装插件是必要的,引用[2]和[4]都提到了需要安装postcss-px2rem。然后,配置文件中需要添加PostCSS插件部分,根据项目类型(Vue CLI或Vite)配置方式不同。例如,Vue CLI在vue.config.js中配置,而Vite则在vite.config.ts中使用postcss.config.js或者直接在配置文件中引入。 另外,引用[3]指出行内样式不会被转换,这点需要特别提醒用户。同时,引用[2]提到amfe-flexible用于设置rem基准值,通常需要配合使用,将1rem设为宽度的1/10。所以,用户可能需要在项目中同时安装amfe-flexible,并在入文件引入。 需要注意的还有,remUnit的设置应根据设计稿尺寸来定。例如,设计稿是750px,通常remUnit设为75,这样1rem=75px,但引用[5]的例子中用了37.5,可能是因为设计稿是375px,或者为了兼容第三方库。需要向用户解释如何根据实际情况调整这个值。 最后,测试配置是否生效,用户可能需要检查编译后的CSS是否将px转换为rem,并确保动态调整时布局自适应。此外,排除第三方库的转换也是常见需求,可以通过配置exclude或selectorBlackList来实现。 总结步骤:安装插件、配置PostCSS、引入amfe-flexible、设置基准值、注意事项(行内样式、排除文件)、测试验证。这样用户就能逐步完成配置,并理解每个步骤的作用。</think>### 如何使用 postcss-px2rem 实现屏幕自适应? #### 一、核心原理 1. **单位转换**:将 CSS 中的 `px` 单位按比例转换为 `rem`,1rem 的值由屏幕宽度动态决定(通常为 `屏幕宽度/10`)[^2][^5]。 2. **动态基准值**:通过 `amfe-flexible` 动态设置 HTML 根元素的 `font-size`,实现不同屏幕尺寸的适配[^3]。 --- #### 二、具体配置步骤(以 Vue CLI 项目为例) ##### 1. 安装依赖 ```bash npm install amfe-flexible postcss-px2rem --save-dev ``` ##### 2. 配置 `vue.config.js` ```javascript module.exports = { css: { loaderOptions: { postcss: { plugins: [ require("postcss-px2rem")({ remUnit: 37.5, // 设计稿宽度/10(如设计稿为375px则填37.5) exclude: /node_modules/ // 排除第三方库 }) ] } } } }; ``` ##### 3. 引入动态基准值 在 `main.js` 中添加: ```javascript import "amfe-flexible"; ``` --- #### 三、关键配置项说明 | 配置项 | 作用 | 示例值 | |---------------|----------------------------------------------------------------------|--------------| | `remUnit` | 设计稿尺寸/10,决定 `1rem` 对应的像素值 | 37.5(375设计稿) | | `exclude` | 排除不需要转换的文件/目录 | `/node_modules/` | | `propList` | 指定需要转换的 CSS 属性(默认全部转换) | `['*']` | --- #### 四、注意事项 1. **行内样式不生效**:仅转换 `.css`、`.scss` 等样式文件中的 `px`,行内样式需手动处理。 2. **第三方库适配**:若使用 UI 库(如 ElementUI),可通过 `selectorBlackList` 过滤特定类名避免冲突。 3. **Vite 项目配置**:需在 `vite.config.ts` 中通过 `postcss.config.js` 单独配置。 --- #### 五、验证效果 1. 浏览器中检查元素样式是否已转换为 `rem`: ```css /* 原始代码 */ .container { width: 750px; } /* 转换后(remUnit=75) */ .container { width: 10rem; } ``` 2. 调整浏览器窗大小,观察布局是否动态适配。 --- §§ 1. 如何解决第三方 UI 库与 `postcss-px2rem` 的样式冲突? 2. 在 Vite + TypeScript 项目中如何配置 `postcss-px2rem`? 3. `rem` 布局与 `vw/vh` 布局的优缺点对比是什么?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值