1.点透
Q:元素A上定位另外一个元素B,点击元素B,如果元素A有事件或链接,会触发元素A上的事件或链接,即点透
A:在元素B的touchend中增加ev.preventDefault();阻止默认事件即可,请注意:此时元素内容如果过长,其原生滑动也同时阻止

elmB.addEventListener('touchend', function (ev) {
ev.preventDefault();
}, false);

2.区分点击与滑动
Q:元素A添加touchstart或touchend事件后,如果在元素A上滑动也会触发点击事件
A:区分是否是点击事件,有2种方法

方法一:
在touchend时判断touchmove事件是否触发即可

function tap(elm, callback) {
elm.addEventListener('touchstart', start, false); function start(ev) {
var b = false; this.addEventListener('touchmove', move, false);
this.addEventListener('touchend', end, false); function move() {
b = true;
} function end(ev) {
var touch = ev.changedTouches[0];
var x = touch.pageX;
var y = touch.pageY; if (!b) {
if (callback) {
callback.call(this, ev, x, y);
ev.preventDefault();
}
} this.removeEventListener('touchmove', move, false);
this.removeEventListener('touchend', end, false);
}
}
}

方法二:
touchstart时记录坐标(x1、y1),touchend时判断当前坐标(x2、y2)是否等于x1、y1

function tap(elm, callback) {
elm.addEventListener('touchstart', start, false); function start(ev) {
var touch = ev.targetTouches[0];
var intX = touch.pageX;
var intY = touch.pageY; this.addEventListener('touchend', end, false); function end(ev) {
var touch = ev.changedTouches[0];
var curX = touch.pageX;
var curY = touch.pageY; if (curX == intX && curY == intY) {
if (callback) {
callback.call(this, ev, curX, curY);
ev.preventDefault();
}
} this.removeEventListener('touchend', end, false);
}
}
}

调用:

<div>点击此处</div>
window.onload = {
var elm = document.querySelector('div'); tap(elm, function (ev, x, y) {
alert('坐标:x=' + x + ', y=' + y);
});
};

3.点击元素时加触发效果
Q:长按一个元素时如何给元素加上效果
A:首先尝试在css中给元素定义:active伪类,如果没效果则在html中给元素加上ontouchstart=""触发:active,如果还是不行,则考虑用js

动态添加样式

4.用translateX或translateY时产生抖动
Q:在给一个元素A用translate时,其后面的元素B有时会产生文字抖动或背景、边框抖动
A:给元素的父级添加translateZ即可解决

5.弹性布局宽度的问题
Q:给一行元素添加弹性布局,flex都为1,每个元素中内容长度不一致,导致不等分
A:给内部元素固定宽度即可

6.在safari浏览器中不识别日期
Q:safari浏览器中

alert(new Date('2013-11-12'));

2013-11-12这种日期格式不识别

A:在safari浏览器中设置日期需要将格式转成2013/11/12即可

7.图标模糊
Q:按照320分辨率切的图标,在iphone中图标模糊
A:iphone等手机分辨率是640的,所以图片应该按照640分辨率切,然后用background-size:50%;缩放,或写固定宽度,如在640宽度下的一

个图标宽为64px高为48px,则用backgroun-size缩放后在320分辨率下的background-size:32px 24px

8.用px切的页面在小米等手机中网页被放大
Q:用px切的页面在小米等手机的浏览器中比别的手机页面大
A:px在浏览器中表现不一致,任何浏览器默认字体大小为16px,而10px是16px的62.5%,此时设置html字号为62.5%,再用css3提供的rem(

根字号大小,即html的字号大小)将px除10进行换算即可解决

例:

html { font-size:62.5%; }
.header { font-size:1.6rem; /* 16px */ }
.footer { height:5em; /* 50px */ }

9.按照设计图切出的页面很大
Q:设计图给的是640px宽的,放到手机里看很大,用viewport缩放0.52倍在别的手机都正常,但是在小米中用自带浏览器,字号设为中,缩

放不管用
A:首先应禁止缩放,会带来别的问题,如从数据库中读出的字体带着单位如12px,字会显得非常的小
即viewport应写为

<meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1; user-scalable=0;" />

其次用

width=device-width后,任何页面在手机里都会被解析成320宽度,所以640px的设计图中量出的单位应除2即可

10.1px的问题
Q:宽度小于1px的线有时显示不出来,等于1px的线有的细有的粗
A:网页中最小单位为1px,小于1px的线不显示出来也是正常的,应避免设置小于1px的单位。线时细时粗暂无太好的办法,一是用图片代替

,二是用很淡的颜色

11.用background-size后背景定位失效
Q:用background-size后,合并的背景图定位不准确
A:首先用了background-size后原来的单位也应该缩放,如果background-size:50%;那么量出的单位都应*0.5

HTML5开发注意事项及BUG解决的更多相关文章

  1. IDEA插件(Android Studio插件)开发示例代码及bug解决

    IDEA插件(Android Studio插件)开发示例代码及bug解决 代码在actionPerformed方法中,有个AnActionEvent e 插件开发就是要求我们复写上述的这个方法即可,在 ...

  2. HTML5外包注意事项-开发HTML5游戏的九大坑与解决方法剖析

    随着移动社区兴起,势必带动HTML5的革命.未来一两年内,HTML5移动游戏必将呈现大爆发趋势. 以下是整理的HTML5游戏研发.市场趋势以及渠道布局和技术解决方案的内容.希望大家能从本文中找到对HT ...

  3. android软件简约记账app开发day05-记账页面条目代码优化和bug解决

    android软件简约记账app开发day05-记账页面条目代码优化和bug解决 今天还是因为该bug又极大的耽误了项目进程,该开发文档都要没有时间来写了. 先说bug吧,在昨天已经实现了页面图标的展 ...

  4. html5文章 -- 使用 jQuery Mobile 与 HTML5 开发 Web App ——开发原则 | Kayo's Melody

    最近专注研究 jQuery Mobile —— 一款很方便就可以把 Web App 包装成适合 Android 与 iPhone 等触屏移动设备的 Javascript 库,结合 jQuery Mob ...

  5. MUI开发注意事项

    mui开发注意事项,有需要的朋友可以参考下. mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细的 ...

  6. Unity3D开发注意事项

    最近给组里定Unity开发注意事项,参考了@陆泽西在群里分享的[前端开发规范],结合自己工作中的经验,整理一下,下面不少条款都是我们要求在开发中必须遵守的. 资源: 图片统一为png格式,纹理属性:T ...

  7. 跨平台移动APP开发进阶(一)mui开发注意事项

    mui开发注意事项 Mui HTML5开发框架 mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细 ...

  8. Cobalt环境搭建及 Web开发注意事项

    一.在Linux系统上搭建Cobalt运行环境 Cobalt是一款开源轻量级HTML5/CSS/JS浏览器,旨在于用最少的CPU.GPU.RAM等资源消耗提供丰富的应用程序开发.为了使前端开发者验证自 ...

  9. web前端之html5开发中常用的开发工具

    正所谓“工欲善其事,必先利其器”,对Web开发人员来说,好工具的使用总会给人带来事半功倍的效果.正准备学习HTML5或者已经进行了一段时间的HTML5开发的童鞋,都有必要了解下,HTML5都有哪些开发 ...

随机推荐

  1. poj2387 Til the Cows Come Home 最短路径dijkstra算法

    Description Bessie is out in the field and wants to get back to the barn to get as much sleep as pos ...

  2. bitbucket和Mercurial安装和相关

    应为工作需要,需要使用bitbucket和Mercurial进行软件开发管理.下面简单介绍以下这些东西和他的安装. bitbucket是一个类似github的软件开发管理工具,和github不同,bi ...

  3. 使用Unity开发Android的几种调试方法

    前言 本文举例几种Android 调试的方法(PS:我是通过unity引擎来开发安卓游戏) Eclipse + adt 查看LOG 1.为Eclipse 装上adt 插件 2.打开Eclipse 的L ...

  4. java 21 - 9 复制图片的4种方式

    需求:复制图片 分析: 因为图片我们用记事本打开后无法读懂,所以用字节流 并且字节流复制有4种方式,所以我们尝试4种方式. 推荐第四种:缓冲字节流一次读取一个字节数组 首先写main方法: publi ...

  5. PNG文件

    png格式主要由六大块组成:文件头.IHDR块.PLTE块.tRNS块.IDAT块.文件尾文件头一般是 8950 4E47 0D0A 1A0A而本题提示中的IHDR块是png中用来描述图片的基本信息, ...

  6. isScroll代码

    html: <div class="wrap"> <div class="content"> //内容-必须为第一个子元素 </d ...

  7. 4201 TortoiseSVN常用配置

    在Windows下推荐使用乌龟(Tortoise)SVN客户端. TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录.文件保存在中央版本库 ...

  8. Java中的Random()函数

    今天在做Java练习的时候注意到了Java里面的一个随机函数——Random,刚开始只是知道这个函数具有随机取值的作用,于是上网搜索了资料一番,做了一下一些关于Random函数的总结:   Java中 ...

  9. [转]hive实例讲解实现in和not in子句

    FROM : http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2842855.html 目前hive不支持 in或not in 中包含查询子句的 ...

  10. Dungeon Game ——动态规划

    The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...