千家信息网

移动端H5开发常用技巧有哪些

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章主要讲解了"移动端H5开发常用技巧有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"移动端H5开发常用技巧有哪些"吧!html 篇常用的me
千家信息网最后更新 2025年11月11日移动端H5开发常用技巧有哪些

这篇文章主要讲解了"移动端H5开发常用技巧有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"移动端H5开发常用技巧有哪些"吧!

html 篇

常用的meta属性设置

meta对于移动端的一些特殊属性,可根据需要自行设置

 //Android 禁止屏幕旋转              //全屏显示      //UC应用模式,使用了application这种应用模式后,页面讲默认全屏,禁止长按菜单,禁止收拾,标准排版,以及强制图片显示。      //QQ强制竖屏           //QQ强制全屏             //QQ应用模式

电话号码识别

在 iOS Safari (其他浏览器和 Android 均不会)上会对那些看起来像是电话号码的数字处理为电话链接,比如:

  • 7 位数字,形如:1234567

  • 带括号及加号的数字,形如:(+86)123456789

  • 双连接线的数字,形如:00-00-00111

  • 11 位数字,形如:13800138000

关闭识别

开启识别

123456

邮箱识别(Android)

安卓上会对符合邮箱格式的字符串进行识别,我们可以通过如下的 meta 来管别邮箱的自动识别:

同样地,我们也可以通过标签属性来开启长按邮箱地址弹出邮件发送的功能:

dooyoe@gmail.com

css 篇

0.5px细线

移动端 H5 项目越来越多,设计师对于 UI 的要求也越来越高,比如 1px 的边框。在高清屏下,移动端的 1px 会很粗。

那么为什么会产生这个问题呢?主要是跟一个东西有关,DPR(devicePixelRatio) 设备像素比,它是默认缩放为 100%的情况下,设备像素和 CSS 像素的比值。目前主流的屏幕 DPR=2(iPhone 8),或者 3(iPhone 8 Plus)。拿 2 倍屏来说,设备的物理像素要实现 1 像素,而 DPR=2,所以 css 像素只能是 0.5。

下面介绍最常用的方法

/* 底边框 */ .b-border {   position: relative; } .b-border:before {   content: '';   position: absolute;   left: 0;   bottom: 0;   width: 100%;   height: 1px;   background: #d9d9d9;   -webkit-transform: scaleY(0.5);   transform: scaleY(0.5);   -webkit-transform-origin: 0 0;   transform-origin: 0 0; } /* 上边框 */ .t-border {   position: relative; } .t-border:before {   content: '';   position: absolute;   left: 0;   top: 0;   width: 100%;   height: 1px;   background: #d9d9d9;   -webkit-transform: scaleY(0.5);   transform: scaleY(0.5);   -webkit-transform-origin: 0 0;   transform-origin: 0 0; } /* 右边框 */ .r-border {   position: relative; } .r-border:before {   content: '';   position: absolute;   right: 0;   bottom: 0;   width: 1px;   height: 100%;   background: #d9d9d9;   -webkit-transform: scaleX(0.5);   transform: scaleX(0.5);   -webkit-transform-origin: 0 0;   transform-origin: 0 0; } /* 左边框 */ .l-border {   position: relative; } .l-border:before {   content: '';   position: absolute;   left: 0;   bottom: 0;   width: 1px;   height: 100%;   background: #d9d9d9;   -webkit-transform: scaleX(0.5);   transform: scaleX(0.5);   -webkit-transform-origin: 0 0;   transform-origin: 0 0; }  /* 四条边 */ .setBorderAll {   position: relative;   &:after {     content: ' ';     position: absolute;     top: 0;     left: 0;     width: 200%;     height: 200%;     transform: scale(0.5);     transform-origin: left top;     box-sizing: border-box;     border: 1px solid #e5e5e5;     border-radius: 4px;   } }

屏蔽用户选择

禁止用户选择页面中的文字或者图片

div {   -webkit-touch-callout: none;   -webkit-user-select: none;   -khtml-user-select: none;   -moz-user-select: none;   -ms-user-select: none;   user-select: none; }

清除输入框内阴影

在 iOS 上,输入框默认有内部阴影,以这样关闭:

div {   -webkit-appearance: none; }

如何禁止保存或拷贝图像

代码如下

img {   -webkit-touch-callout: none; }

输入框默认字体颜色

设置 input 里面 placeholder 字体的颜色

input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {   color: #c7c7c7; } input:-moz-placeholder, textarea:-moz-placeholder {   color: #c7c7c7; } input:-ms-input-placeholder, textarea:-ms-input-placeholder {   color: #c7c7c7; }

用户设置字号放大或者缩小导致页面布局错误

设置字体禁止缩放

body {   -webkit-text-size-adjust: 100% !important;   text-size-adjust: 100% !important;   -moz-text-size-adjust: 100% !important; }

android系统中元素被点击时产生边框

部分android系统点击一个链接,会出现一个边框或者半透明灰色遮罩, 不同生产商定义出来额效果不一样。去除代码如下

a,button,input,textarea{   -webkit-tap-highlight-color: rgba(0,0,0,0)   -webkit-user-modify:read-write-plaintext-only;  }

iOS 滑动不流畅

ios 手机上下滑动页面会产生卡顿,手指离开页面,页面立即停止运动。整体表现就是滑动不流畅,没有滑动惯性。 iOS 5.0 以及之后的版本,滑动有定义有两个值 auto 和 touch,默认值为 auto。

解决方案

  • 在滚动容器上增加滚动 touch 方法

.wrapper {   -webkit-overflow-scrolling: touch; }
  • 设置 overflow 设置外部 overflow 为 hidden,设置内容元素 overflow 为 auto。内部元素超出 body 即产生滚动,超出的部分 body 隐藏。

body {   overflow-y: hidden; } .wrapper {   overflow-y: auto; }

js 篇

移动端click屏幕产生200-300 ms的延迟响应

移动设备上的web网页是有300ms延迟的,往往会造成按钮点击延迟甚至是点击失效。解决方案:

fastclick可以解决在手机上点击事件的300ms延迟

zepto的touch模块,tap事件也是为了解决在click的延迟问题

触摸事件的响应顺序

  1. ontouchstart

  2. ontouchmove

  3. ontouchend

  4. onclick

audio 和 video 在 ios 和 andriod 中自动播放

这个不是bug,由于自动播放网页中的音频或视频,会给用户带来一些困扰或者不必要的流量消耗,所以苹果系统和安卓系统通常都会禁止自动播放和使用 JS 的触发播放,必须由用户来触发才可以播放。加入自动触发播放的代码

$('html').one('touchstart', function() {   audio.play() })

iOS 上拉边界下拉出现空白

手指按住屏幕下拉,屏幕顶部会多出一块白色区域。手指按住屏幕上拉,底部多出一块白色区域。

在 iOS 中,手指按住屏幕上下拖动,会触发 touchmove 事件。这个事件触发的对象是整个 webview 容器,容器自然会被拖动,剩下的部分会成空白。

解决方案

document.body.addEventListener(   'touchmove',   function(e) {     if (e._isScroller) return     // 阻止默认事件     e.preventDefault()   },   {     passive: false   } )

ios 日期转换 NAN 的问题

将日期字符串的格式符号替换成'/'

'yyyy-MM-dd'.replace(/-/g, '/')

软键盘问题

IOS 键盘弹起挡住原来的视图

  • 可以通过监听移动端软键盘弹起 Element.scrollIntoViewIfNeeded(Boolean)方法用来将不在浏览器窗口的可见区域内的元素滚动到浏览器窗口的可见区域。 如果该元素已经在浏览器窗口的可见区域内,则不会发生滚动。

  • true,则元素将在其所在滚动区的可视区域中居中对齐。

  • false,则元素将与其所在滚动区的可视区域最近的边缘对齐。 根据可见区域最靠近元素的哪个边缘,元素的顶部将与可见区域的顶部边缘对准,或者元素的底部边缘将与可见区域的底部边缘对准。

window.addEventListener('resize', function() {   if (     document.activeElement.tagName === 'INPUT' ||     document.activeElement.tagName === 'TEXTAREA'   ) {     window.setTimeout(function() {       if ('scrollIntoView' in document.activeElement) {         document.activeElement.scrollIntoView(false)       } else {         document.activeElement.scrollIntoViewIfNeeded(false)       }     }, 0)   } })

onkeyUp 和 onKeydown 兼容性问题

IOS 中 input 键盘事件 keyup、keydown、等支持不是很好, 用 input 监听键盘 keyup 事件,在安卓手机浏览器中没有问题,但是在 ios 手机浏览器中用输入法输入之后,并未立刻相应 keyup 事件

IOS12 输入框难以点击获取焦点,弹不出软键盘

定位找到问题是 fastclick.js 对 IOS12 的兼容性,可在 fastclick.js 源码或者 main.js 做以下修改

FastClick.prototype.focus = function(targetElement) {   var length   if (     deviceIsIOS &&     targetElement.setSelectionRange &&     targetElement.type.indexOf('date') !== 0 &&     targetElement.type !== 'time' &&     targetElement.type !== 'month'   ) {     length = targetElement.value.length     targetElement.setSelectionRange(length, length)     targetElement.focus()   } else {     targetElement.focus()   } }

IOS 键盘收起时页面没用回落,底部会留白

通过监听键盘回落时间滚动到原来的位置

window.addEventListener('focusout', function() {   window.scrollTo(0, 0) })  //input输入框弹起软键盘的解决方案。 var bfscrolltop = document.body.scrollTop $('input')   .focus(function() {     document.body.scrollTop = document.body.scrollHeight     //console.log(document.body.scrollTop);   })   .blur(function() {     document.body.scrollTop = bfscrolltop     //console.log(document.body.scrollTop);   })

IOS 下 fixed 失效的原因

软键盘唤起后,页面的 fixed 元素将失效,变成了 absolute,所以当页面超过一屏且滚动时,失效的 fixed 元素就会跟随滚动了。不仅限于 type=text 的输入框,凡是软键盘(比如时间日期选择、select 选择等等)被唤起,都会遇到同样地问题。

解决方法: 不让页面滚动,而是让主体部分自己滚动,主体部分高度设为 100%,overflow:scroll

   
复制代码.warper { position: absolute; width: 100%; left: 0; right: 0; top: 0; bottom: 0; overflow-y: scroll; -webkit-overflow-scrolling: touch; /* 解决ios滑动不流畅问题 */ } .fix-bottom { position: fixed; bottom: 0; width: 100%; }

感谢各位的阅读,以上就是"移动端H5开发常用技巧有哪些"的内容了,经过本文的学习后,相信大家对移动端H5开发常用技巧有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

元素 键盘 移动 区域 问题 页面 事件 输入 屏幕 常用 像素 浏览器 浏览 数字 用户 边框 边缘 部分 延迟 技巧 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 消防物联平台服务器时间不一致 永恒之塔怀旧服选择服务器进不去 在网络安全问题上的错误 服务器急需管理员怎么报名 数据库加缓存 大学生网络安全的宪法知识 数据库五层安全机制是什么 计算机网络技术怎么做网页 数据库各字段存储顺序 常见的通信网络安全问题 进销存订单退货数据库设计 万通网络技术有限公司 网络安全智能系统 java 数据库 连接池 中国污水处理工程网项目数据库 乌镇互联网大会高科技 帝国神话为什么进不去服务器 数据库不知道密码能进去么 网络安全法日志留存多久 成功软件开发案例分析 饥荒怎么用专属服务器建新存档 税务对软件开发服务的政策 上海服务器机柜咨询 民航国内十大网络安全事件 centos mc服务器 数据库还原备份指令 网络安全法是否计入信用档案 数据库原理 自考 网络安全责任制实施方案自评表 珠海戴尔服务器
0