多屏适配笔记

关于前端屏幕适配方案这块,目前主要使用过以下6个方案:

1、rem 

通过js根据当前设备屏幕宽度,动态计算元素长度单元。

var html = document.getElementsByTagName('html')[0];
var pageWidth = html.getBoundingClientRect().width;
html.style.fontSize = pageWidth / 10 + 'px';

例如屏幕宽度为1080px,则fontSize为108px,1rem=108px。

该方案在pc端使用,切换屏幕element、font过大或过小,图片失真,不适合在pc端全局使用。

在移动端使用,加上下面代码,保证页面不会变形:

var pixclPatio = 1 / window.devicePixelRatio;
document.write('<meta name="viewport" content="width=device-width,initial-scale='+pixclPatio+',minimum-scale='+pixclPatio+',maximum-scale='+pixclPatio+',user-scalable=no" />');

附:

initial-scale 初始的缩放比例;minimum-scale最小的缩放比例;maximum-scale最大的缩放比例;user-scalable 用户是否可以调整缩放比例。

由于开发中,需要将 px 转 rem 计算比较麻烦,在vue中可使用px2ren插件,将px单位转rem。

 

2、百分比

bootstrap的栅栏布局、element UI 栅格布局都是根据100%划分的,适合页面宽度自适应,页面高度不限定可视区域的设计,对于字体、行距等无法进行定义。

对于高度限定在可视区域,限制不允许出现的滚动条的设计,用百分比实现,会造成页面出现“不应该”出现的滚动条,或页面超出可视区域。

 

3、vw vh

100 vw 页面视口宽度,100vh页面视口高度,使用与百分比方案相似,区别在于这两个单位可用于字体、行距。

 

4、em

em与rem区别在于:em相对于父元素,rem相对于根元素

适合封装类似按钮,选择框等小组件样式,改变父级元素样式,自己元素样式也随之变化,不想需要重新调整。

例如,给字体设置大小,line-height 使用 em ,当字体变化时,不需要更改行高。

 

5、多媒体查询

使用@media查询,根据不同的屏幕尺寸些不同的样式代码,例如移动端横屏、竖屏的步骤条样式变化。

@media screen and (max-width: 375px) {
    body {
        background-color:red;
    }
}

如果屏幕宽度小于375px,背景颜色为红色。

缺点在于,适配屏幕多,需要写不同的样式代码。

 

6、css calc()

calc()用于动态计算长度,适用于部分固定,部分自使用的布局。

例如,管理平台,常使用左侧导航固定,右侧内容自适应的布局,自使应部分可用 calc(100vw -  200px )定义宽度。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值