css3vw适配_使用vw+rem实现移动端适配

利用视口单位实现适配布局

响应式布局的实现依靠媒体查询( Media Queries )来实现,选取主流设备宽度尺寸作为断点针对性写额外的样式进行适配,但这样做会比较麻烦,只能在选取的几个主流设备尺寸下呈现完美适配。即使使用rem方式来布局,也需要写一段js代码来动态改变根元素的大小。比较成熟的做法如手淘的做法。使用Flexible实现手淘H5页面的终端适配

现在我们介绍一种全新的适配方式即:利用视口单位来实现适配这样就不用引入多余的js代码

根据CSS3规范,视口单位主要包括以下4个:

vw : 1vw 等于视口宽度的1%

vh : 1vh 等于视口高度的1%

vmin : 选取 vw 和 vh 中最小的那个

vmax : 选取 vw 和 vh 中最大的那个

详细文章可参考再聊移动端页面的适配

做法一:只使用vw做css单位

使用vw作为css单位就涉及到设计师的设计稿如何转化未vw的问题。

使用sass做为函数编译

//以iphone6的设计稿举例

$base_vw = 375;

@function vw ($px) {

return ($px/$base_vw) * 100vw

};

复制代码使用

#app {

width: 100%;

.container {

padding: vw(20) vw(20) vw(20) vw(20)

.main {

width 100%

>h1 {

font-size 14px

}

}

}

}

复制代码高清屏一个像素解决

.border-1px-bottom {

position: relative;

&::after {

content: '';

position: absolute;

z-index: 1;

background-color: #f8f8f8;

height: 1px;

left: 0;

right: 0;

top: 0;

pointer-events: none;

@media only screen and (-webkit-min-device-pixel-ratio: 2) {

-webkit-transform: scaleY(0.5);

-webkit-transform-origin: 50% 0%;

}

}

}

复制代码对于banner要实现高宽比的图需要使用padding-top

.banner {

position: relative;

padding-top: percentage(100/750); // 使用padding-top

height: 0;

overflow: hidden;

img {

width: 100%;

height: auto;

position: absolute;

left: 0;

top: 0;

}

}

复制代码

做法二:使用vw+rem做css单位

虽然vw能更优雅的适配,但是还是有点小问题,就是宽,高没法限制。那么结合rem就可以完美解决啦。

// 设置html根元素的大小 750px->75 640px->64

// 将屏幕分成10份,每份作为根元素的大小。

$vw_fontsize: 75

@function rem($px) {

// 例如:一个div的宽度为100px,那么它对应的rem单位就是(100/根元素的大小)* 1rem

@return ($px / $vw_fontsize) * 1rem;

}

$base_design: 750

html {

// rem与vw相关联

font-size: ($vw_fontsize / ($base_design / 2)) * 100vw;

// 同时,通过Media Queries 限制根元素最大最小值

@media screen and (max-width: 320px) {

font-size: 64px;

}

@media screen and (min-width: 540px) {

font-size: 108px;

}

}

// body 也增加最大最小宽度限制,避免默认100%宽度的 block 元素跟随 body 而过大过小

body {

max-width: 540px;

min-width: 320px;

}

复制代码

使用

#app {

width: 100%;

.container {

padding: rem(20) rem(20) rem(20) rem(20)

.main {

width 100%

>h1 {

font-size 14px

}

}

}

}

复制代码

参考凹凸实验室

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值