【Web前端】移动端H5开发遇到的一些坑

textarea

  • textarea的底部始终会和它的父元素有一个间距,通过设置vertical-align: middle即可消除
  • textarea的高度自适应解决方案,如果需要控制最大高度,那么在class里设置max-height即可

禁止长按出菜单

// 这个css只能对ios设备起作用 
*:not(input):not(textarea) {
  -webkit-user-select: none; /* disable selection/Copy of UIWebView */
  -webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */
} 
// 对android设备还需要在body或顶层元素绑定h5引入的contextmenu事件 
window.document.body.addEventListener('contextment', function(e) {
  e.preventDefault();
});

由于用了*选择子,所以a元素也是在内的,这点要注意,如果需要避开a元素的话,就要再加一个not

焦点

  • 由于失焦是os行为,并不是浏览器控制的,所以想要实现当前输入框拥有焦点,在点击了其他元素后不失焦是不行的,只能是自行处理点击事件让输入框再次获取焦点这样来实现这个效果
  • focus和blur这2种事件不支持冒泡(但支持捕获),支持冒泡的事件是focusin和focusout,事件发生顺序:focusin -> focus -> focusout -> blur
  • 可以设置tabindex属性让原生不可获取焦点的元素能获取焦点

虚拟键盘

  • 有时候需要在输入面板外部点击的时候收起虚拟键盘,通过焦点来解决比较麻烦(面板上不止输入框还有其他元素的时候),可以在面板上一层的容器里添加点击处理事件(vue的话就是@touchstart.capture),并在事件处理代码中判断,被点击的元素是面板上的元素还是面板外的元素,从而决定面板是否要隐藏

点击

  • 为了辨别单击和双击,touchend事件300ms后没有其他操作,才会产生click事件,click事件标志着一轮触摸事件的结束。所以点击触发浮层消失的这种场景,如果没留意,容易发生点击穿透的情况,即浮层使用touchend使自己消失,但浮层之下的点击位置刚好有元素绑定click事件,这样就会触发该元素的click事件,产生点击穿透。要么就是浮层使用click事件,要么就是浮层的touchend用preventDefault把click给忽略掉。

animation

  • animation-delay是只在动画的初次启动时才会延迟,如果是循环的动画,那么下次开始并不会有这个延迟
  • 想要控制动画的重新播放,可以通过把animation设置放到一个class里,然后需要重新播放动画的时候,先移除这个class,然后再添加这个class即可,但是这里要注意,如果只是单纯的把这两个步骤放在一起,可能会被浏览器优化掉,所以可以用下面的三个方法:
    1. 移除后强制浏览器重绘再添加
element remove class;
void element.offsetWidth; // 触发reflow
add class;
  1. 移除后和添加之间有时间间隔
element remove class;
setTimeOut(element add class, 100);
  1. 在setTimeout中执行,浏览器不会优化
setTimeout(() => {
        element remove calss;
        element add class;
}, 100);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容