H5适配一直是一个头疼的问题,基于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元素即可适配。

(end。。。欢迎评论交流。。有不当之处欢迎感谢指出。。)

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

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

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

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

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

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

    基于vue框架针对H5在不同分辨率的手机做出来一套适配方案,具体如下: 设计图按iPhone6/7/8 去掉底部返回条的尺寸设计的: width:750px , height:1108px(可使用该方 ...

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

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

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

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

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

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

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

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

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

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

  9. clientsideevents能定义几个click事件_分享8个非常实用的Vue自定义指令

    作者:lzg9527 https://juejin.cn/post/6906028995133833230 在 Vue,除了核心功能默认内置的指令 ( v-model 和 v-show ),Vue 也 ...

最新文章

  1. php 和mysql实现抢购功能_php处理抢购类功能的高并发请求
  2. qt-embedded-linux-opensource-src-4.5.3移植到s3c6410
  3. mongoDB的安装(一)
  4. LeetCode 6060. 找到最接近 0 的数字
  5. .net 批量更新_Revit二次开发——读取CAD文字实现更新模型的思路
  6. Linux协议栈:基于ping流程窥探Linux网络子系统,及常用优化方法
  7. java多张图片合成一张_一款国外有趣、简单、功能齐全的图片处理软件。
  8. linux之man命令
  9. 何时、何地应用何种窗函数?
  10. virtualbox导致Windows7重启
  11. 杨中科老师-C语言也能干大事链接
  12. RISC-V 之一 使用 ARM CMSIS 的 SVD 文件辅助调试
  13. jquery validate 验证单个
  14. 网络基础之路由器的应用原理
  15. Android 11 功能和 API 概览
  16. weblogic unable to get file lock问题解决方案
  17. 判断一个点是否在指定的圆内
  18. 计算机课件制作总结,课件制作比赛活动总结范文
  19. 小孟网站被黑客攻击,已经哭晕在厕所……
  20. 算法学习:归并排序, pta归并排序(递归法)

热门文章

  1. [U3D Demo] 手机FPS射击游戏
  2. fedora yum无法正常运行问题的解决
  3. 设计模式学习摘要-抽象工厂
  4. linux下使用John检测用户是否存在弱口令
  5. 使用Windows远程桌面工具来远程连接控制Ubuntu系统
  6. glassfish 初次使用 (介绍・目录结构・注意点・基本命令・控制台・eclipse插件安装)
  7. postgre SQL 中的 触发器 (实例应用,如何备份更新之前的差分数据)
  8. 2010年11月8日,早会资料(日本的文化节)。CSDN博客系统出现问题了,这篇我就不改了,留着,在写一个。
  9. java之家_java
  10. MyBatis 插入失败后爆出 500 ,如何捕获异常?