postcss-px-to-viewport实现屏幕适配
最近面试,很多面试官都问做过移动端吗?屏幕适配应该怎么实现呢?无奈自己太菜,粗略回答是通过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实现屏幕适配相关推荐
- android分辨率px跟dp,Android屏幕适配 px,dp,dpi及density的关系与深入理解
PX(pixel): 即传统计算机语言中描述的像素,在Android则代表绝对像素. 之所以Android中不推荐使用这种单位,正是因为不同生产厂商,不同品牌,不同屏幕的设备,其分辨率亦不一. 举例来 ...
- h5适配华为手机_rem、px、em(手机端h5页面屏幕适配的几种方法)
px px像素(pixel):相对长度单位.相对于显示器屏幕分辨率而言.pc端使用px倒也无所谓,可是在移动端,因为手机分辨率种类颇多,不可能一个个去适配,这时px就显得非常无力,所以就要考虑em和r ...
- 【转】Android中dp,px,sp概念梳理以及如何做到屏幕适配
2019独角兽企业重金招聘Python工程师标准>>> 首先来看一下他们的基本概念: px :是屏幕的像素点 dp :一个基于density的抽象单位,如果一个160dpi的 ...
- autosize px转dp_Android 屏幕适配以及autoSize的原理.md
AndroidAutoSize的原理 px = dp * density; 根据百分比适配的话, 如果设计稿给的是1080x1920,那么宽就为360dp,像素为1080px,density为3,占满 ...
- [转]Android中dp,px,sp概念梳理以及如何做到屏幕适配
http://blog.csdn.net/jiangwei0910410003/article/details/40509571 今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI ...
- Android 多屏幕适配 dp和px的关系
一直以来别人经常问我,android的多屏幕适配到底是怎么弄,我也不知道如何讲解清楚,或许自己也是挺迷糊. 以下得出的结论主要是结合官方文档进行分析的https://developer.android ...
- Android 屏幕适配攻略(二)单位dp与px来表示控件的尺寸
Android 屏幕适配攻略(二)单位dp与px来表示控件的尺寸 在安卓中,将屏幕密度分为了五类 屏幕密度 对应的标签 对应的像素 120dip ldpi 1dp= 0.75px 160dip mdp ...
- 浅谈屏幕适配 dp dip sp dpi ppi px sp
一.Drawable资源文件夹之间的关系 Android开发中,UI一般会制作多种图片素材,根据素材的分辨率大小,放在如下几个文件夹中: Android 工程里 res 目录下的 drawable-h ...
- Android 屏幕尺寸、屏幕分辨率(px)、屏幕像素密度(dpi)、密度无关像素(dp/dip)、屏幕适配
1. dp , dpi , px 关系 (假设已经熟悉了基本概念,也可以参考最后的链接) 2. 运行时dp 如何转换成 px 3. 使用dp 和 px 设计结果比较 参考: Android屏幕适 ...
- Android屏幕适配 px,dp,dpi及density的关系与深入理解(转载)
PX(pixel): 即传统计算机语言中描述的像素,在Android则代表绝对像素. 之所以Android中不推荐使用这种单位,正是因为不同生产厂商,不同品牌,不同屏幕的设备,其分辨率亦不一. 举例来 ...
最新文章
- 利用VS+MFC+Opencv显示图像和视频所需添加类(CvvImage.h和CvvImage.cpp的源码)。
- tensorflow中的关键字global_step使用
- 20个常用的Python小技巧
- apache-apollo启动报错
- python 天勤 金叉 编程代码_Python量化策略开发框架,固定的套路、突破策略的福音...
- OpenCv之图像二值化(笔记12)
- [官版翻译ing]OpenStack云计算快速入门之一:OpenStack及其构成简介
- asp.net MVC之 自定义过滤器(Filter)
- springboot项目打成可依赖jar包_用IDEA把SpringBoot项目打成jar发布项目
- vivado使用入门
- SEM实验室常见仪器计量问题详解及仪器标准大全附
- 【Word】去掉“项目符号/编号”之后的制表符
- CUDA之GPU生态系统
- PostgreSQL 数据库查询
- Node JS 初识
- Revit开发将WPF的Ower设置为Revit窗体
- 单片机list文件解析及 hardfalt问题定位
- 20.JVM监控以及诊断工具-GUI篇
- Andriod Scroller使用小结
- 遗传算法GA算法思路及其C++实现