大屏开发适配方案(vw/vh)

背景

公司需要开发一个用于4k大屏展示的项目,所以给到的UI视觉稿也是参照4k屏进行了设计(单位为px),而我们开发所用的屏幕多为1080p/2k屏,为了让大家开发时不用关注适配问题,我设计了这套基于vw/vh的适配方案

技术栈

vue + sass

思路

视觉稿给到的宽高值都是基于4k屏,所以本地开发时不能直接使用,需要经过某种计算转换,为了逻辑清晰,我们可以考虑设计三个函数来分别将宽/高/字体的px转为vw/vh
以宽为例,视觉稿上的某元素宽为1000px,而4k屏的宽度为3840px,那么1000/3840*100vw就是我们需要的实际宽度值

代码

  • sass代码,代码中的宽高可以根据自身需求变更,font函数与vw其实是一样的,只是为了提升开发体验所以单独抽出。
// utils.scss
// 使用scss的math函数,https://sass-lang.com/documentation/breaking-changes/slash-div

@use "sass:math";

//默认设计稿的宽度
$designWidth: 3840;
//默认设计稿的高度
$designHeight: 2160;
//最小字体
$minFontSize: 12;

//px转为vw的函数

@function vw($px) {
  @return math.div($px, $designWidth) * 100vw;
}

//px转为vh的函数

@function vh($px) {
  @return math.div($px, $designHeight) * 100vh;
}

//字体转vw
@function font($px) {
  @return math.div($px, $designWidth) * 100vw;
}
  • 通过vue.config.js挂载到全局
module.exports = {
  ...
  css: {
    loaderOptions: {
      sass: {
        prependData: `@import "@/style/utils.scss";`
      }
    }
  }
}
  • 使用示例,入参直接使用设计稿中的值即可,所见即所得
.demo {
  width: vw(500);
  height: vh(400);
  font-size: font(30)
}

结语

这套方案是为了1080p/2k/4k这样的屏幕设计的,他们的宽高比其实都是一致的,在其他宽高比屏上可能还有要优化的地方。希望这套方案能帮到看官老爷们,让你们早五分钟下班。

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CC_leather

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值