韩小圈app
85.86MB · 2025-10-30
最近打算写几个大屏,作为后续工作的一个简历吧。毕竟现在技术类的找工作不单单的是得会忽悠,还得有点儿作品。
怎么好像在说UI岗一样,在网上扒了扒效果,想要写的炫酷一些,页面开发完了以后在公司给一哥们演示的时候拉跨了。
家里的电脑屏幕本身是2K的,而公司里的是普通的1080p的。
原本在家里适配的非常好的页面在公司非常别扭,而且大量的宽度、高度、字体因为是写死的,在1080p的屏幕上出现了换行。
唉,百密一疏啊!页面效果、动画展示、数据加载等等都考虑到了,就是没考虑屏幕兼容...
紧急调研了一下,现在比较主流的兼容方案一般有以下几种:
层层筛选还是打断用相对单位做,但是可以使用 less 函数来简化这个过程。
简单地说就是使用 less 函数让他在编译过程中自动的将 px 转化为 vw/vh,实现相对比较完美的显示效果。
npm i less --save-dev
@charset "utf-8";
// 默认设计稿的宽度
@designWidth: 1920;
// 默认设计稿的高度
@designHeight: 1080;
// px 转 vw
.px2vw(@name, @px) {
@{name}: (@px / @designWidth) * 100vw;
}
// px 转 vh
.px2vh(@name, @px) {
@{name}: (@px / @designHeight) * 100vh;
}
preprocessorOptions 为每个less插入工具函数export default defineConfig({
css: {
preprocessorOptions: {
less: {
additionalData: `@import "@/assets/css/utils.less";`
}
}
}
})
vue 中使用<style scope lang='less'>
.card {
.px2vw(width, 400);
.px2vh(height, 300);
}
</style>
非常简单的一个小方案,但是却实现了相当不错的效果。适配上来说也还算比较的好吧,但是肯定是不如媒体查询那么完美。
不过从实现上来说比媒体查询的难度下降了不是一个量级。
最大的难度或许来自于你在 css 中写 .px2vw(width, 200) 这种别扭的感觉。