最近面试,很多面试官都问做过移动端吗?屏幕适配应该怎么实现呢?无奈自己太菜,粗略回答是通过rem,bootstrap栅格布局去实现。面试官再问还有其他的方式实现吗?然后我就一脸黑人问号,加上最近看一位b站博主小满zs的教学视频,刚好看到这个章节,所以特意记录来下,加深一下自己的印象。

现在有了更好用的vw跟vh。

vw视口的最大宽度,1vw等于视口宽度的百分之一

vh视口的最大高度,1vh等于适口高度的百分之一

我们的ui设计稿上面一般标注的是px,所以我们需要使用一个插件来把px转换成为vw跟vh。

首先我们先来创建一个项目

然后用vs code打开项目,安装一下相关依赖,运行一下

npm run dev

项目可以正常运行的话,下面就可以进入正题了,安装一下所需的插件

npm install postcss-px-to-viewport -D

然后我们需要在vite.config.ts里面配置一下这个插件

但是里面会有一个报错,说这个插件缺少一个声明文件,我们尝试用这个方法去装一下,还是会一样报错,所以说明社区并没有给这个插件去写声明文件,所以这个插件目前是不支持ts的,那么或者我们去手写这个声明文件。

我们在根目录下创建一个postcss-px-to-viewport.d.ts文件,我们通过declare module给这个插件去扩充声明。

然后我们需要tsconfig.config.json里面引入一下postcss-px-to-viewport.d.ts这个文件

声明完之后,这个插件还要传一些参数

这里给你们贴出来

unitToConvert: 'px' | 'rem' | 'cm' | 'em',
viewportWidth: number,
viewportHeight: number, // not now used; TODO: need for different units and math for different properties
unitPrecision: number,
viewportUnit: string,
fontViewportUnit: string,  // vmin is more suitable.
selectorBlackList: string[],
propList: string[],
minPixelValue: number,
mediaQuery: boolean,
replace: boolean,
landscape: boolean,
landscapeUnit: string,
landscapeWidth: number

这时候报错已经不见了,这个插件常用到两个参数只有两个

下面我们就写个小demo测试一下这个插件, 这里需要提醒一下需要安装一下npm install less,不然运行的时候会报错

<template><div class="wraps"><header class="header"><div>left</div><div>中间</div><div>right</div></header><main class="main"><div class="main-items" v-for="item in 100"><div class="main-port"></div><div class="main-desc"><div>小霖{{ item }}</div><div>小霖dec描述内容</div></div></div></main><footer class="footer"><div class="footer-items" v-for="item in footer"><div>{{ item.icon }}</div><div>{{ item.text }}</div></div></footer></div>
</template><script setup lang='ts'>
import { reactive } from 'vue'
type Footer<T> = {icon: T,text: T
}const footer = reactive<Footer<string>[]>([{icon: "1",text: "首页"},{icon: "2",text: "商品"},{icon: "3",text: "信息"},{icon: "4",text: "我的"},
])</script><style lang="less">
* {padding: 0;margin: 0;
}html,
body,
#app {overflow: hidden;height: 100%;
}.wraps {height: inherit;display: flex;flex-direction: column;overflow: hidden;}.header {display: flex;background: pink;justify-content: space-around;padding: 5px;
}.main {flex: 1;overflow: auto;&-items {border-bottom: 1px solid #ccc;padding: 5px;display: flex;}&-port {width: 30px;height: 30px;background: black;border-radius: 200px;}&-desc {margin-left: 10px;div:last-child {font-size: 10px;margin-top: 5px;}}
}.footer {display: grid;grid-template-columns: 1fr 1fr 1fr 1fr;border-top: 1px solid #ccc;&-items {display: flex;flex-direction: column;justify-content: center;align-items: center;padding: 3px;div:last-child {margin-top: 5px;}}
}
</style>

这时候我们发现插件已经成功帮我们把px转成vw、vh,已经实现屏幕适配了

最后,共勉一下,一定要持续学习,才能更好的拥抱变化。大家有兴趣的话,也可以去b站看看小满zs的教学视频,满满的干货~~主要是不花钱学习,哈哈哈

postcss-px-to-viewport实现屏幕适配相关推荐

  1. android分辨率px跟dp,Android屏幕适配 px,dp,dpi及density的关系与深入理解

    PX(pixel): 即传统计算机语言中描述的像素,在Android则代表绝对像素. 之所以Android中不推荐使用这种单位,正是因为不同生产厂商,不同品牌,不同屏幕的设备,其分辨率亦不一. 举例来 ...

  2. h5适配华为手机_rem、px、em(手机端h5页面屏幕适配的几种方法)

    px px像素(pixel):相对长度单位.相对于显示器屏幕分辨率而言.pc端使用px倒也无所谓,可是在移动端,因为手机分辨率种类颇多,不可能一个个去适配,这时px就显得非常无力,所以就要考虑em和r ...

  3. 【转】Android中dp,px,sp概念梳理以及如何做到屏幕适配

    2019独角兽企业重金招聘Python工程师标准>>> 首先来看一下他们的基本概念: px   :是屏幕的像素点 dp   :一个基于density的抽象单位,如果一个160dpi的 ...

  4. autosize px转dp_Android 屏幕适配以及autoSize的原理.md

    AndroidAutoSize的原理 px = dp * density; 根据百分比适配的话, 如果设计稿给的是1080x1920,那么宽就为360dp,像素为1080px,density为3,占满 ...

  5. [转]Android中dp,px,sp概念梳理以及如何做到屏幕适配

    http://blog.csdn.net/jiangwei0910410003/article/details/40509571 今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI ...

  6. Android 多屏幕适配 dp和px的关系

    一直以来别人经常问我,android的多屏幕适配到底是怎么弄,我也不知道如何讲解清楚,或许自己也是挺迷糊. 以下得出的结论主要是结合官方文档进行分析的https://developer.android ...

  7. Android 屏幕适配攻略(二)单位dp与px来表示控件的尺寸

    Android 屏幕适配攻略(二)单位dp与px来表示控件的尺寸 在安卓中,将屏幕密度分为了五类 屏幕密度 对应的标签 对应的像素 120dip ldpi 1dp= 0.75px 160dip mdp ...

  8. 浅谈屏幕适配 dp dip sp dpi ppi px sp

    一.Drawable资源文件夹之间的关系 Android开发中,UI一般会制作多种图片素材,根据素材的分辨率大小,放在如下几个文件夹中: Android 工程里 res 目录下的 drawable-h ...

  9. Android 屏幕尺寸、屏幕分辨率(px)、屏幕像素密度(dpi)、密度无关像素(dp/dip)、屏幕适配

    1. dp , dpi , px 关系 (假设已经熟悉了基本概念,也可以参考最后的链接)  2. 运行时dp 如何转换成 px  3.  使用dp 和 px 设计结果比较 参考: Android屏幕适 ...

  10. Android屏幕适配 px,dp,dpi及density的关系与深入理解(转载)

    PX(pixel): 即传统计算机语言中描述的像素,在Android则代表绝对像素. 之所以Android中不推荐使用这种单位,正是因为不同生产厂商,不同品牌,不同屏幕的设备,其分辨率亦不一. 举例来 ...

最新文章

  1. 利用VS+MFC+Opencv显示图像和视频所需添加类(CvvImage.h和CvvImage.cpp的源码)。
  2. tensorflow中的关键字global_step使用
  3. 20个常用的Python小技巧
  4. apache-apollo启动报错
  5. python 天勤 金叉 编程代码_Python量化策略开发框架,固定的套路、突破策略的福音...
  6. OpenCv之图像二值化(笔记12)
  7. [官版翻译ing]OpenStack云计算快速入门之一:OpenStack及其构成简介
  8. asp.net MVC之 自定义过滤器(Filter)
  9. springboot项目打成可依赖jar包_用IDEA把SpringBoot项目打成jar发布项目
  10. vivado使用入门
  11. SEM实验室常见仪器计量问题详解及仪器标准大全附
  12. 【Word】去掉“项目符号/编号”之后的制表符
  13. CUDA之GPU生态系统
  14. PostgreSQL 数据库查询
  15. Node JS 初识
  16. Revit开发将WPF的Ower设置为Revit窗体
  17. 单片机list文件解析及 hardfalt问题定位
  18. 20.JVM监控以及诊断工具-GUI篇
  19. Andriod Scroller使用小结
  20. 遗传算法GA算法思路及其C++实现

热门文章

  1. 外贸跨境电商网站常用的在线客服系统
  2. 拿什么拯救缺芯又“缺心”的科技产业?
  3. Javascript内存泄漏与优化
  4. 程序员语录---温馨小家庭
  5. jsp有哪些动作?作用是什么
  6. tar 解压文件到指定目录
  7. 【原创】WordPress安装悬浮音乐播放器
  8. 计算机科学与工程学院公章,福建船政交通职业学院--土木工程学院行政公章管理规定...
  9. 清华、北大、浙大的计算机课程资源集都在这里了 | 技术头条
  10. 不做规划 也要步步为营