HTML5开发注意事项及BUG解决
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解决的更多相关文章
- IDEA插件(Android Studio插件)开发示例代码及bug解决
IDEA插件(Android Studio插件)开发示例代码及bug解决 代码在actionPerformed方法中,有个AnActionEvent e 插件开发就是要求我们复写上述的这个方法即可,在 ...
- HTML5外包注意事项-开发HTML5游戏的九大坑与解决方法剖析
随着移动社区兴起,势必带动HTML5的革命.未来一两年内,HTML5移动游戏必将呈现大爆发趋势. 以下是整理的HTML5游戏研发.市场趋势以及渠道布局和技术解决方案的内容.希望大家能从本文中找到对HT ...
- android软件简约记账app开发day05-记账页面条目代码优化和bug解决
android软件简约记账app开发day05-记账页面条目代码优化和bug解决 今天还是因为该bug又极大的耽误了项目进程,该开发文档都要没有时间来写了. 先说bug吧,在昨天已经实现了页面图标的展 ...
- html5文章 -- 使用 jQuery Mobile 与 HTML5 开发 Web App ——开发原则 | Kayo's Melody
最近专注研究 jQuery Mobile —— 一款很方便就可以把 Web App 包装成适合 Android 与 iPhone 等触屏移动设备的 Javascript 库,结合 jQuery Mob ...
- MUI开发注意事项
mui开发注意事项,有需要的朋友可以参考下. mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细的 ...
- Unity3D开发注意事项
最近给组里定Unity开发注意事项,参考了@陆泽西在群里分享的[前端开发规范],结合自己工作中的经验,整理一下,下面不少条款都是我们要求在开发中必须遵守的. 资源: 图片统一为png格式,纹理属性:T ...
- 跨平台移动APP开发进阶(一)mui开发注意事项
mui开发注意事项 Mui HTML5开发框架 mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细 ...
- Cobalt环境搭建及 Web开发注意事项
一.在Linux系统上搭建Cobalt运行环境 Cobalt是一款开源轻量级HTML5/CSS/JS浏览器,旨在于用最少的CPU.GPU.RAM等资源消耗提供丰富的应用程序开发.为了使前端开发者验证自 ...
- web前端之html5开发中常用的开发工具
正所谓“工欲善其事,必先利其器”,对Web开发人员来说,好工具的使用总会给人带来事半功倍的效果.正准备学习HTML5或者已经进行了一段时间的HTML5开发的童鞋,都有必要了解下,HTML5都有哪些开发 ...
随机推荐
- make命令--基础
一.Make的概念 Make这个词,英语的意思是"制作".Make命令直接用了这个意思,就是要做出某个文件.比如,要做出文件a.txt,就可以执行下面的命令. $ make a.t ...
- fontAwesome代替网页icon小图标
引言 奥森图标(Font Awesome)提供丰富的矢量字体图标—通过CSS可以任意控制所有图标的大小 ,颜色,阴影. 网页小图标到处可见,如果一个网页都是干巴巴的文字和图片,而没有小图标,会显得非常 ...
- GitHub Top 100的Android开源库
摘要: 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据GitHub搜索Java语言选择「Best M... 本项目主要对目前 GitH ...
- java 21 - 15 新IO流 NIO
1:JDK4 新IO要了解的类 Buffer(缓冲),Channer(通道) 2:JDK7 要了解的新IO类 Path:与平台无关的路径. Paths:包含了返回Path的静态方法. public ...
- xshell5 启动显示 mfc110.dll msvcp110.dll 未找到问题 解决办法
1. 安装 Visual C++ Redistributable for Visual Studio 2012 x86版本 注意: 一定要安装x86版本.(xshell5是32位的程序) 微软的官方下 ...
- openstack中彻底删除计算节点的操作记录
在使用openstack的过程中,我们经常会添加好几台计算节点来部署虚拟机,在后续使用中由于某些原因,一些计算节点出现了问题,需要将这些出了问题的计算节点从openstack的控制节点中踢出去!但是很 ...
- GIT在Linux上的安装和使用简介
GIT最初是由Linus Benedict Torvalds为了更有效地管理Linux内核开发而创立的分布式版本控制软件,与常用的版本控制工具如CVS.Subversion不同,它不必服务器端软件支持 ...
- Socket Programming in C#--Server Side
Server Side If you have understood whatever I have described so far, you will easily understand the ...
- JS 之DOM对象(1)
介绍DOM1中底层的一些属性和方法. 节点操作 appendChild() parentNode.appendChild(newNode) 在parentNode节点的最后插入newNode ins ...
- Eclipse系列:如何断点调试web项目
一直不知道如何在Eclipse中断点调试跟踪问题,今天试了一把,大致的步骤如下: 1)事先在需要断点跟踪的代码行左侧空白处双击处设置断点: 2)在工程列表中选中要调试的工程,然后点击Debug on ...