最近做大屏幕开发时需要把 1920px
的设计稿做成响应式布局,因为是要在同一个 Vue 项目里面同时实现移动端 + PC 端大屏幕的自适应,移动端的设计稿是 750px
,大屏幕的设计稿则是 1920px
,项目中默认使用了 750px
的淘宝 flexible.js
的 rem 的自适应的解决方案,那么 PC 端大屏幕端呢?现需要同时实现 PC 端大屏幕端自适应。让 UI 把设计稿改为 750 是不可能的。之前就了解过 vw
/ vh 的自适应解决方案,但还未真正在项目中使用过,现终于可以派上用场了!因为是在 Chrome
上使用的,可以不用考虑各种 IE 兼容性。
解决思路主要使用 scss
/ sass
定义好函数,自动转 vw
。把宽为 1920px
的设计稿定义为 100vw
,然后在页面上直接调用函数就可以了。关键函数如下:
@function r($px) { @if $px==0 { @return 0; } @return $px / 1920 * 100vw; }
页面上使用函数写样式,直接按设计稿的大小来写就可以了,scss
代码如下:
.title { font-family: PingFangSC-Medium; font-size: r(30); color: #ffffff; padding: r(47) 0; text-align: center; } .box { width: r(200); margin: 0 auto; img { width: 100%; } }
完成,就这么简单,使用一个 r
函数就可以实现的页面自适应,百分百还原高保真,太爽了。这其中有些处理技巧,如果 vw 满足不了,页面还可以使用 vh 辅助处理高度的局部自适应,足以应付各种刁钻要求。