在android2.3及如下系统版本的浏览器不支持overflow:scroll / auto,即在页面元素里面的内容若是超过了父元素或祖先元素的高度是没法滚动的,能够经过css3的transform来实现滚动,表明做:iscroll。css
Android2.3会出现点击聚焦的状况,出现黄色的边框,经过对相应的元素设置css –webkit-tap-highlight-color: rgba(0,0,0,0)解决,另一些高版本的系统也可能会出现有黄色边框的状况,这时候试着用outline:none来解决。html
在android2.3系统中,若是页面中有position为fixed的元素,input外层的元素定位为relative或者自身的定位为relative,就会产生一种奇怪的现象,在input中输入数字或者字母都很正常,当切换输入法为中文后,发现没法输入,当把position设置为absolute后一切正常,全部当遇到这种状况时就只能改变布局了。html5
不支持百分比,可用一个比较大的值 如: 9999px。jquery
@-webkit-keyframes wave1{0%{ opacity:0;}8.33%{ opacity:1;}99%{opacity:1;}100%{}}
100%要留一帧空出来。在100%以前写一个最后值 99%那里写。2.3系统的动画才会动。android
渐变这样写2.3才兼容:ios
background:-webkit-gradient(linear,00,0100%, color-stop(1%,rgba(111,191,7,0)), color-stop(74%,rgba(111,191,7,0)), color-stop(75%,rgba(111,191,7,0.9)), color-stop(100%,rgba(111,191,7,0.9)));
Linear是指渐变方式,0 0指从哪一个方向开始。0 0 到 0 100% 说明是从上到下渐变。 后面的color-stop 能够指定百分比和颜色值。css3
在android4.0系统中,存在部分子版本的系统有touch事件的bug,表现为touchstart是正常的,touchmove只有在touchstart触发的时候触发一次,touchend不会被触发,android2.3会触发startmove一次,当touch结束后会执行剩余的move和end。在zepto库中此问题也没有获得解决,在android4.2系统中也存在这样的问题,后来发现是浏览器将事件cancel调了,目的应该是防止在滚动页面的时候调用,因此在touchmove事件中添加e.preventDefault(),发现touchend被触发了,因此解决方案根据实际使用场景来进行处理。git
placeholder 文字字体会偏上。 可是placeholder只能设置他的color。如:github
input::-webkit-input-placeholder{ color:red;}
行高不能设置。这时候把line-height设成normal 就能上下居中了。web
手机Safari – iOS5及之后版本都支持. iOS4及如下版本不支持,会当作static处理.
Android
在移动端咱们会常常用到touch事件,touchstart事件很灵敏,全部若是要绑定相似于pc端的click事件,用touchstart会常常的误操做,例如滚动页面的时候被误点,全部市面上有不少手势库,封装出了tap等方面,而在移动端click事件也是能够触发的,click事件会在点击300ms左右出发(缘由是浏览器但愿判断是不是双击),原始的解释参见google这篇[Creating Fast Buttons for Mobile Web Applications](Creating Fast Buttons for Mobile Web Applications),我的通过实验,页面元素的点击能够考虑用click,和tap效果无明显差异,因此在没有手势库的状况下能够考虑用click来处理用户的点击行为。
webkit上的input,button,及select的默认样式能够经过 –webkit-appearance:none禁用,而后自定义。
一个placeholder自适应bug,页面中使用<input>
标签而且有属性placeholder,在页面横屏再转回竖屏时,会致使页面没法自适应,不管是android仍是ios都会中招。
解决方法是,在<input>
外层容器中加overflow:hidden
Android 2.3系统存在的问题:
浏览器对popstate事件的总体支持状况:
* 页面前进、后退时触发。
* Hashchange时触发
5. 如何跳转
* 若是history堆栈里有pushState过,那么就回跳到pushState所定的hash页面。如window.history.pushState(‘object’, document.title, “#explorer”);的#explorer页面
* 没有pushState过,就按照history的记录进行回退和前进。
Iscroll插件被不少webapp应用中来实现列表滚动,设置translate属性可使滚动更加顺滑,可是在iscroll4.0中开启了translate属性后会致使滚动没法手动中止,在问答社区中有人说iscroll5会解决这个问题,等iscroll5正式发布后能够尝试一下。Iscroll在ios上表现很出色,可是在一些android手机,尤为是低端机,性能不是很好,因此使用也要慎重。
推荐一个PPT可让你全面了解HTML5:http://slides.html5rocks.com/
HTML部分包括你们已经熟知的HTML4.01 Standard http://www.w3.org/TR/html401/还有就是即将成为Standard的 HTML 5 Candidate Recommendation http://www.w3.org/TR/html5/
HTML5 是在 HTML4的基础上增长了更多的语义化标签,好比:
<header>
<nav>
<section>
// 这有太多了,就不一一细说
而且在原有Tag上,扩展了更多的标记属性,好比:
<input type="text" required />
<input type="email" value="some@email.com" />
HTML5除此以外,还引入了不少新的标签和属性,好比:WebApp开发方向的progress、无障碍浏览ARIA 、作SEO优化Microdata等等。
CSS部分也是一样的,你们已经熟知的CSS2 Standard
W3C最新的是CSS Level3 标准,因为CSS3包含的内容很是多,文档都是分开的,暂时没办法给出全部的标准地址,先贴一部分经常使用的标准吧:
JS部分对于HTML5来讲主要体如今 Web API 方面,全部 API 都是 BOM对象,下面我也列出一些常见的标准地址:
经过上面的内容,大概已经了解HTML5是个什么东西了,下面就来讲说HTML5开发APP可使用的一些资源。其实HTML5开发与以往的Web并无本质的区别,主要差异体如今HTML5的一些新特性并无被老旧类库很好的支持,这样就须要一些更现代的类库来使用HTML5作开发。
轻量级库包括
Zepto.js 这个一个在移动端很好用的轻量级库,很是小巧,可是功能也很简单;
jQuery 2.0这里说的是2.0之后的版本,仅支持一些高级浏览器,使用不少HTML5的特性,虽然在移动端开发体积相对zepto较大了些,可是做为一个基础库来讲确实使人爱不释手;
jQuery Mobile 和jQuery是同样的编程思想,使用起来很是方便,包含浏览历史管理、视图导航渲染、UI组件等功能;
App Framework与jQuery Mobile很是类似的一个框架,实际我也没有使用过,看过了API,基本与jQuery Mobile相似;
Sencha Touch Sencha的产品,是彻底web组件化的思路,用来作企业应用开发很是的棒,可是,也有不少缺点,好比体积、复杂、性能等等;
Backbone MVC框架推荐Backbone,并非由于Backbone有多好,但对于移动端开发来讲,Backbone的体积是相对小巧的,而且功能也十分简单,很容易上手,AngularJS体积较大,相对要复杂一些;
Bootsrap 3 ,用来构建HTML/CSS的;
Pure CSS 与Bootstrap同样的东东;
工具库(说到工具,实在是太多了,我没办法一一列出来,视乎到这的时候才离题主的问题近了一些)
iScroll 模拟区域滚动,在移动端开发中使用
pointer.js 触摸手势工具,用来兼容Pointer Event Model与Touch Event Model;
Deeptissue.js触摸手势工具,扩展各类手势事件
QUO.js 同上
hammer.js 也是手势工具,但这是一个jQuery plugin;
spin.js 加载中动画小工具
css3patterns使用css3绘制背景
svgpatterns使用svg绘制背景
textillate.js各类文字动画效果
Effeckt.css各类CSS3的动画效果
JPlayer 音视频播放工具