基于vue框架针对H5在不同分辨率的手机做出来一套适配方案,具体如下:

设计图按iPhone6/7/8 去掉底部返回条的尺寸设计的: width:750px , height:1108px(可使用该方法应对其他设计图尺寸)

一、以设计图的尺寸为标注的做一套适配方案,就是出完美高度比:

function  getResheightAndWidth() {//设计尺寸 w:750 h:1108//1.计算屏幕实际尺寸width / 设计图宽度比 750  宽度比;//2.通过比例算出高度应该是多少时,是完美比例//3.计算出实际高度与完美高度 的比例let adpter_scale = 1;let screen_width = document.body.clientWidth; //屏幕实际宽度let screen_height = document.body.clientHeight; //屏幕实际高度let w_scale = screen_width / 750; //计算屏幕实际尺寸width / 设计图宽度比 750  宽度比;let compute_height = 1108 * w_scale; //通过比例算出高度应该是多少时,是完美比例adpter_scale =parseInt((screen_height / compute_height)*100)/100; //计算出实际高度与完美高度 的比例return  adpter_scale;
}

二、在app.vue中添加自定指令:

//自定义样式指令
let adpter_scale = getResheightAndWidth();//计算出来的完美宽高比
console.log(adpter_scale)
Vue.directive('margin', { //margin 上,右,下,左bind: function (el, binding, vnode) {let value = binding.expression.split(',');if(+value[0])  el.style.marginTop = +value[0] * adpter_scale  + 'rem';if(+value[1])  el.style.marginRight = +value[1] * adpter_scale  + 'rem';if(+value[2])  el.style.marginBottom = +value[2] * adpter_scale  + 'rem';if(+value[3])  el.style.marginLeft = +value[3] * adpter_scale  + 'rem';}
})
Vue.directive('padding', { //padding 上,右,下,左bind: function (el, binding, vnode) {let value = binding.expression.split(',');if(+value[0])  el.style.paddingTop = +value[0] * adpter_scale  + 'rem';if(+value[1])  el.style.paddingRight = +value[1] * adpter_scale  + 'rem';if(+value[2])  el.style.paddingBottom = +value[2] * adpter_scale  + 'rem';if(+value[3])  el.style.paddingLeft = +value[3] * adpter_scale  + 'rem';}
})
Vue.directive('height', { //高度bind: function (el, binding, vnode) {let value = +binding.value;if(value)  el.style.height = value * adpter_scale  + 'rem';}
})
Vue.directive('width', { //宽度bind: function (el, binding, vnode) {let value = +binding.value;if(value)  el.style.width = value * adpter_scale  + 'rem';}
})
Vue.directive('line-height', { //行高bind: function (el, binding, vnode) {let value = +binding.value;if(value)  el.style.lineHeight = value * adpter_scale  + 'rem';}
})

自定义指令只列举出了常用margin/padding/width/height/line-height,如果需要font-size等其他css适配样式,可自行添加。

三、在组件中的使用:

在需要适配的dom元素上添加自定义指令:margin , padding 四个参数都是 (上,右,下,左) 用逗号隔开,不适配传0就可以了

<button  v-margin="1.4,0,0,2.2" v-padding="2,0,1,4.2" v-height="2.3"
v-width="9.7" v-line-height="2" class="btn blue" >按钮</button>

传入的参数都是按标准设计尺寸传入,通过在高度比换算之后,dom元素即可适配。

Vue自定义指令—解决H5页面不同尺寸屏幕的适配问题相关推荐

  1. Vue自定义指令—— 完美解决H5页面不同尺寸屏幕的适配问题

    H5适配一直是一个头疼的问题,基于vue框架针对H5在不同分辨率的手机做出来一套适配方案,具体如下: 设计图按iPhone6/7/8 去掉底部返回条的尺寸设计的:  width:750px , hei ...

  2. html兼容不同屏幕 代码,rem的正确使用姿势 -- 完美解决H5页面不同尺寸屏幕的适配问题...

    实例代码: 废土坱行 * { margin: 0; padding: 0; } .downloadBtn { width: 12rem; height: 3.6rem; background: red ...

  3. rem的正确使用姿势 -- 完美解决H5页面不同尺寸屏幕的适配问题

    实例代码: <!DOCTYPE html> <html> <head><meta charset="utf-8" /><met ...

  4. Vue 自定义指令 解决IOS webview input 获取焦点被键盘遮挡

    Vue 自定义指令 解决IOS webview input 获取焦点被键盘遮挡 创建自定义指令 在使用input的地方添加自定义指令,记录一下还有优化空间. vue 文件 <div id=&qu ...

  5. 移动端h5页面不同尺寸屏幕适配方法

    移动互联网时代,多端适配对于前端工作者来说带来了很多麻烦,有麻烦相应的就有解决方案,面对适配方法有很多,百分比布局.弹性布局,,还有rem布局 今天主要针对rem布局讲解一下: 本方法是阿里手淘的页面 ...

  6. html网页在不同尺寸屏幕大小,移动端h5页面不同尺寸屏幕适配方法

    移动互联网时代,多端适配对于前端工作者来说带来了很多麻烦,有麻烦相应的就有解决方案,面对适配方法有很多,百分比布局.弹性布局,,还有rem布局 今天主要针对rem布局讲解一下: 本方法是阿里手淘的页面 ...

  7. html怎么移动到vue,vue自定义指令之拖动页面的元素

    此案例中,用到了鼠标事件onmousedown.onmousemove.onmouseup 源代码如下: Document .outer div{ position:absolute; 100px; ...

  8. 移动端h5页面不同尺寸屏幕适配兼容方法

    最近刚开始做移动端页面,遇到了不少bug,说一下解决移动端不同屏幕页面的适应问题. 1. viewport属性及html页面结构 <meta name="viewport" ...

  9. vuejs 指令封装 button 加载效果_这些Vue自定义指令,让你的项目开发爽到爆

    受 AngularJS 的启发,Vue 内置了一些非常有用的指令(比如v-html 和 v-once等),每个指令都有自身的用途.完整的指令列表可以在这里查看. 这还没完,更棒的是可以开发自定义指令. ...

最新文章

  1. android-技术教程-调试程序的基础,在控制台上打印出想打印的东西 转载
  2. 锁类型_ sys.dm_os_wait_stats
  3. select,table,form
  4. functionclass[LeetCode]Path Sum II
  5. windows2008 sp2 x64安装 ocs 2007 r2 笔记
  6. AC Again hdoj 1582 搜索
  7. 安装itunes需要管理员身份_ITUNES无法安装,提示没有权限如何解决?
  8. earthdata数据的.nc4如何使用
  9. ios 权限提示语_iOS工作室都在用按键v1.6.1(体验版)
  10. 草稿-调试让本地的django项目上线到云服务器-不完整版
  11. 金山词霸2006常规窗口不见了!只能看到最大化的的原因
  12. MapStruct 详解
  13. Lattice Diamond 3.12下载与安装(免费获取license.dat)
  14. 【未来简史】读书笔记
  15. switchport nonegotiate
  16. 关于Axure-9组合交互内联框架问题
  17. 教育培训行业如何做好私域运营
  18. 四阶龙格库塔法的基本思想_利用龙格库塔法求解郎之万方程.doc
  19. Java语言程序设计与数据结构(基础篇)梁勇第九章 *9.3
  20. 宠物诊所java项目_JavaWeb项目-宠物诊所管理系统

热门文章

  1. Watson基因技术将参与美国乔·拜登癌症登月计划
  2. 在mysql 8.0.22 运行load data local 从本地文本导入数据
  3. 从U盘安装centos7(史上最简单的终极解决方案)
  4. HoloLens2开发入门教程
  5. BZOJ 1072: [SCOI2007]排列perm [DP 状压 排列组合]
  6. 东南亚Lazada下半年热门商品有哪些?速速来了解!
  7. 两个聊天机器人的情话--今天打开淘宝旺旺看到聊天机器人,于是聊了两句,很有趣.........
  8. Android 打开Facebook应用账号主页或网页主页代码
  9. 史上最盛大的黑科技年会前夕,阿里妹做了一个重大决定
  10. 璀璨盛启·焕美升级 上颜集团杭州医学旗舰中心盛大启幕