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 插件开发就是要求我们复写上述的这个方法即可,在 ...
- android软件简约记账app开发day05-记账页面条目代码优化和bug解决
android软件简约记账app开发day05-记账页面条目代码优化和bug解决 今天还是因为该bug又极大的耽误了项目进程,该开发文档都要没有时间来写了. 先说bug吧,在昨天已经实现了页面图标的展 ...
- web前端之html5开发中常用的开发工具
正所谓“工欲善其事,必先利其器”,对Web开发人员来说,好工具的使用总会给人带来事半功倍的效果.正准备学习HTML5或者已经进行了一段时间的HTML5开发的童鞋,都有必要了解下,HTML5都有哪些开发 ...
- HTML5 respond.js 解决IE6~8的响应式布局问题
HTML5 respond.js 解决IE6~8的响应式布局问题 响 应式布局,理想状态是,对PC/移动各种终端进行响应.媒体查询的支持程度是IE9+以及其他现代的浏览器,但是IE8在市场当中仍然 ...
- html5文章 -- 使用 jQuery Mobile 与 HTML5 开发 Web App ——开发原则 | Kayo's Melody
最近专注研究 jQuery Mobile —— 一款很方便就可以把 Web App 包装成适合 Android 与 iPhone 等触屏移动设备的 Javascript 库,结合 jQuery Mob ...
- 2017年最重要的HTML5开发手册,传播正能量
今天给大家推荐这个HTML5开发手册,希望能帮助正在学习web前端的人,鄙人也是刚学习前端没多久,借助于一点资讯平台能够结识更多前端大牛,这是我的HTML5进阶学习一点资讯群:250777811,里面 ...
- 2018年最重要的HTML5开发手册,传播正能量
今天给大家推荐这个HTML5开发手册,希望能帮助正在学习web前端的人,鄙人也是刚学习前端没多久,借助于一点资讯平台能够结识更多前端大牛,这是我的web前端/HTML5/javscript技术学习群: ...
- 使用Html5开发Android和iOS应用:HBuilder、Html5Plus、MUI
活动主题:五一巨献,问答有礼,105QB送给IT互联网界的劳动人民活动时间:4月30日晚上10点~5月2日晚上10点网址: http://ask.jiutianniao.com 2014年的时候,就 ...
- 新手入门HTML5开发,你必须先搞懂这6个问题
凭借着跨平台,实时更新,无需安装,易于分发等众多优点,HTML5受到越来越多企业的青睐.而凭借着入门相对简单的优势,很多人编程初学者都选择学习HTML5.但对于初学者来说,学习HTML5之前,会有很多 ...
随机推荐
- Unity 预处理命令
我们经常在代码里面写Debug.Log()调试代码,游戏后门代码.这些代码在发布时无意义的,我们就需要慢慢的删除掉它们(很痛苦),有什么办法让它们在编译的时候并不加入编译代码中呢? 预处理命令..比 ...
- One Way Roads(搜索)
One Way Roads Time Limit:500MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit S ...
- ssh整合启动tomcat报java.lang.ClassNotFoundException: org.apache.commons.lang.xwork.StringUtils
今天搭建了一个ssh项目环境,整合后,访问项目首页,登录不进去,控制台报错,后来调试代码后,在获取数据库数据后,返回到action时,又进入了action导致死循环,其实这里是两个问题,控制台报错如下 ...
- Oracle SQL函数之转换函数
chartorowid(c1) [功能]转换varchar2类型为rowid值 [参数]c1,字符串,长度为18的字符串,字符串必须符合rowid格式 [返回]返回rowid值 [示例] SQL> ...
- 清理SQL数据库日志
Use DBSelect NAME,size From sys.database_files ALTER DATABASE DB SET RECOVERY SIMPLE WITH NO_WAIT AL ...
- Spring整合Hibernate 一 - 注入SessionFactory
Spring3 整合 Hibernate4 - 注入SessionFactory 版本: spring-framework-3.2.4.RELEASE hibernate-release-4.2.5. ...
- iOS 事件处理机制与图像渲染过程
Peter在开发公众号功能时触发了一个bug,导致群发错误.对此我们深表歉意,并果断开除了Peter.以下交回给正文时间: iOS 事件处理机制与图像渲染过程 iOS RunLoop都干了什么 iOS ...
- c#中的数据类型简介(委托)
c#中的数据类型简介(委托) 什么是委托? 委托是一种类型,它封装了一类方法,这些方法具有相同的方法签名(signature).定义听起来有点拗口,首先可以确定委托是一种数据类型,那么什么是方法签名, ...
- bootstrap之 Badge 角标
添加 .am-badge class 到 <div> 或者 <span> 元素. 默认样式 <span class="am-badge"> ...
- Emgu学习笔记(一)安装及运行Sample
1.简单说明 Emgu是Dot Net平台对OpenCV的封装,本质上没有增加新功能,是通过Dot Net的平台调用技术直接调用OpenCV C++语言写的库,使用我们可以方便用.net平台通过Ope ...