<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>H5 &#8211; 萧邦的博客</title>
	<atom:link href="https://www.zlhlab.top/tag/h5/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.zlhlab.top</link>
	<description>If not me who, If not now when</description>
	<lastBuildDate>Thu, 22 Feb 2018 13:07:41 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.6</generator>
	<item>
		<title>加速动力火车  驶向新年大奖</title>
		<link>https://www.zlhlab.top/animate-cc%e4%b8%8ecreatejs-stagegl%e8%bf%9b%e8%a1%8ch5%e5%b0%8f%e6%b8%b8%e6%88%8f%e5%bc%80%e5%8f%91/</link>
		
		<dc:creator><![CDATA[萧邦]]></dc:creator>
		<pubDate>Thu, 18 Jan 2018 09:02:53 +0000</pubDate>
				<category><![CDATA[H5]]></category>
		<category><![CDATA[stagegl]]></category>
		<guid isPermaLink="false">https://www.zlhlab.top/?p=509</guid>

					<description><![CDATA[2018我们再度前行，iPhone X等你拿~]]></description>
										<content:encoded><![CDATA[<h4>项目背景：</h4>
<p>这个项目是个丰田金融做的第三期互动H5活动。H5采用小狗+火车为第一人称视角的小游戏。由于偏向伪3d，进行技术可行性分析，有以下两种方案实现方案：</p>
<p>方案一： 可以采用<code>three.js</code>库文件，进行给场景动态增加元素、维护游戏场景；<br />
方案二： 使用Animate CC的<code>createjs</code>库制作H5，后面增加点击，根据点击数动态修改帧率进行场景切换。</p>
<p>确认的设计稿整体偏卡通风格，项目设计和制作时间很紧张，所以采用了第二套方案。</p>
<h4>项目技术点</h4>
<p>项目关键点在于性能优化，主要优化方向：</p>
<blockquote><p>
  1、压缩项目资源文件，初次资源文件达到 10M+ &#8211;&gt; 进行CC导出jpg、png分离，以及tingPng进行图片压缩，整体资源文件 1.3M；<br />
  2、修改默认导出的stage，进行支持stagegl GPU渲染。
</p></blockquote>
<p>其他主要功能包括如下：</p>
<blockquote><p>
  1、微信授权；<br />
  2、雪花动效、场景微动效等；<br />
  3、font-spider实现字体压缩；<br />
  4、点击数、里程数、时钟、游戏音效等游戏控制管理；<br />
  4、游戏排行榜功能；<br />
  5、留资抽奖功能。
</p></blockquote>
<h4>项目设计</h4>
<p><img decoding="async" src="https://www.zlhlab.top/wp-content/uploads/2018/01/%E4%B8%B0%E7%94%B0%E9%87%91%E8%9E%8D3%E6%9C%9F%E7%81%AB%E8%BD%A6.jpg" alt=""></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>为双十一疯狂打CALL</title>
		<link>https://www.zlhlab.top/%e4%b8%ba%e5%8f%8c%e5%8d%81%e4%b8%80%e7%96%af%e7%8b%82%e6%89%93call/</link>
		
		<dc:creator><![CDATA[萧邦]]></dc:creator>
		<pubDate>Wed, 17 Jan 2018 15:39:08 +0000</pubDate>
				<category><![CDATA[H5]]></category>
		<category><![CDATA[canvas]]></category>
		<guid isPermaLink="false">https://www.zlhlab.top/?p=512</guid>

					<description><![CDATA[这是一款名叫“为双十疯狂打CALL”的H5小游戏。产生背景：网易的互动H5小游戏刷爆朋友圈，刚好项目处于空档期。]]></description>
										<content:encoded><![CDATA[<h4>项目背景：</h4>
<p>这是一款名叫“为双十疯狂打CALL”的H5小游戏。产生背景：网易的互动H5小游戏刷爆朋友圈，刚好项目处于空档期。于是策划和设计找了一些游戏关卡，我这边进行技术实现。</p>
<h4>项目技术：</h4>
<p>整体项目采用canvas绘图展示+手指触摸检测+碰撞检测+输入控件，以及控制场景切换。</p>
<p>需要注意：<strong>canvas高倍像素屏幕图片展示</strong>和<strong>机型适配</strong>。</p>
<h4>项目设计：</h4>
<p><img decoding="async" src="https://www.zlhlab.top/wp-content/uploads/2018/01/call-1.jpg" alt=""></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>丰田金融微电影宣传互动H5</title>
		<link>https://www.zlhlab.top/%e4%b8%b0%e7%94%b0%e9%87%91%e8%9e%8d%e5%be%ae%e7%94%b5%e5%bd%b1%e5%ae%a3%e4%bc%a0%e4%ba%92%e5%8a%a8h5/</link>
		
		<dc:creator><![CDATA[萧邦]]></dc:creator>
		<pubDate>Mon, 27 Nov 2017 10:27:01 +0000</pubDate>
				<category><![CDATA[H5]]></category>
		<guid isPermaLink="false">https://www.zlhlab.top/?p=483</guid>

					<description><![CDATA[丰田金融微电影宣传互动H5]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://www.zlhlab.top/wp-content/uploads/2017/11/%E4%B8%B0%E7%94%B0%E9%87%91%E8%9E%8D.jpg" alt=""></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>微信广告规范与设计&#8211;自定义H5</title>
		<link>https://www.zlhlab.top/%e5%be%ae%e4%bf%a1%e5%b9%bf%e5%91%8a%e8%a7%84%e8%8c%83%e4%b8%8e%e8%ae%be%e8%ae%a1-%e8%87%aa%e5%ae%9a%e4%b9%89h5/</link>
		
		<dc:creator><![CDATA[萧邦]]></dc:creator>
		<pubDate>Mon, 16 Oct 2017 07:18:11 +0000</pubDate>
				<category><![CDATA[推荐]]></category>
		<category><![CDATA[H5]]></category>
		<category><![CDATA[广告规范]]></category>
		<category><![CDATA[微信朋友圈]]></category>
		<guid isPermaLink="false">https://www.zlhlab.top/?p=366</guid>

					<description><![CDATA[微信广告规范与设计，自定义H5详情页设计规范]]></description>
										<content:encoded><![CDATA[<p><span style="font-family: helvetica, arial, sans-serif;">查看详情页也可支持自定义H5页面，用来展示更多内容。</span></p>
<h3 id="-"><span style="font-family: helvetica, arial, sans-serif;">交互规范</span></h3>
<ul>
<li><span style="font-family: helvetica, arial, sans-serif;">分屏切换，支持横向和竖向，滑动指引需清晰</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">若详情页加载较慢，需设计loading页，给予用户友好的提示</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">如有视频，需在底部加上“建议在Wi-Fi环境下播放”提示</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">建议一个页面不超过两种以上交互操作</span></li>
</ul>
<h3 id="-"><span style="font-family: helvetica, arial, sans-serif;">设计规范</span></h3>
<ul>
<li><span style="font-family: helvetica, arial, sans-serif;">页面尺寸建议：640像素×1100像素</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">最小按钮宽度：160像素</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">最小按钮高度：60像素</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">页面最小字号：不小于24像素</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">二维码最小尺寸：200像素×200像素 ，边距至少为10像素</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">背景音乐规范：必须支持音乐可循环及可关闭，并采用渐强的方式出现</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">音乐播放/关闭按钮，参考下图规范，并放置于页面右上角位置</span></li>
</ul>
<p><span style="font-family: helvetica, arial, sans-serif;"><img decoding="async" src="https://wximg.qq.com/wxp/home-site/markdown-media/GF_H_01.png" alt="音乐按钮规范图片" /></span></p>
<h3><span style="font-family: helvetica, arial, sans-serif;"> </span></h3>
<h3 id="h5-"><span style="font-family: helvetica, arial, sans-serif;">H5页面内嵌入全屏视频规范</span></h3>
<ul>
<li><span style="font-family: helvetica, arial, sans-serif;">建议：使用流媒体播放，并添加可跳过播放按钮</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">时长：≤ 45 秒</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">视频编码：H.264/AVC</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">FPS：推荐 24fps</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">码率：≤ 800 kbit/s</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">音频格式：AAC</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">音频码率：≤ 96 kbit/sec</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">音频采样率：推荐 44.1 kHz</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">文件大小限制：≤ 5MB ( 实际大小与时长及码率对应，如20秒视频，大小为 20秒×（800码率÷8）÷1024=1.95MB )</span></li>
</ul>
<h3 id="-h5-"><span style="font-family: helvetica, arial, sans-serif;">自定义H5设计规范</span></h3>
<p><span style="font-family: helvetica, arial, sans-serif;">自定义H5页面请严格遵守《<a title="微信广告制作规范" href="https://ad.weixin.qq.com/learn/nav/43">微信广告制作规范</a>》中关于“<a title="广告详情页制作基础规范" href="https://ad.weixin.qq.com/learn/n123">广告详情页制作基础规范</a>”等规范。</span></p>
<p><span style="font-family: helvetica, arial, sans-serif;">更多设计、广告规范，请移步 <a href="https://ad.weixin.qq.com/learn/n8">微信广告</a></span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>H5项目常见问题汇总及解决方案</title>
		<link>https://www.zlhlab.top/h5%e9%a1%b9%e7%9b%ae%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98%e6%b1%87%e6%80%bb%e5%8f%8a%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88/</link>
		
		<dc:creator><![CDATA[萧邦]]></dc:creator>
		<pubDate>Thu, 24 Aug 2017 02:26:19 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[H5]]></category>
		<guid isPermaLink="false">https://www.zlhlab.top/?p=268</guid>

					<description><![CDATA[H5项目常见问题及注意事项 Meta基础知识： H5页面窗口自动调整到设备宽度，并禁止用户缩放页面 //一、H<div class="more-link">
				 <a href="https://www.zlhlab.top/h5%e9%a1%b9%e7%9b%ae%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98%e6%b1%87%e6%80%bb%e5%8f%8a%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88/" class="link-btn theme-btn"><span>Read More </span> <i class="fa fa-caret-right"></i></a>
			</div>]]></description>
										<content:encoded><![CDATA[<h4>H5项目常见问题及注意事项</h4>
<h5>Meta基础知识：</h5>
<ul>
<li>H5页面窗口自动调整到设备宽度，并禁止用户缩放页面</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">//一、HTML页面结构
&lt;meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /&gt;
// width    设置viewport宽度，为一个正整数，或字符串‘device-width’
// height   设置viewport高度，一般设置了宽度，会自动解析出高度，可以不用设置
// initial-scale    默认缩放比例，为一个数字，可以带小数
// minimum-scale    允许用户最小缩放比例，为一个数字，可以带小数
// maximum-scale    允许用户最大缩放比例，为一个数字，可以带小数
// user-scalable    是否允许手动缩放

//二、JS动态判断
var phoneWidth =  parseInt(window.screen.width);
var phoneScale = phoneWidth/640;
var ua = navigator.userAgent;
if (/Android (\d+\.\d+)/.test(ua)){
    var version = parseFloat(RegExp.$1);
    if(version&gt;2.3){
        document.write('&lt;meta name="viewport" content="width=640, minimum-scale = '+phoneScale+', maximum-scale = '+phoneScale+', target-densitydpi=device-dpi"&gt;');
    }else{
        document.write('&lt;meta name="viewport" content="width=640, target-densitydpi=device-dpi"&gt;');
    }
} else {
    document.write('&lt;meta name="viewport" content="width=640, user-scalable=no, target-densitydpi=device-dpi"&gt;');
}
</code></pre>
<ul>
<li>空白页基本meta标签</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">&lt;!-- 设置缩放 --&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimal-ui" /&gt;
&lt;!-- 可隐藏地址栏，仅针对IOS的Safari（注：IOS7.0版本以后，safari上已看不到效果） --&gt;
&lt;meta name="apple-mobile-web-app-capable" content="yes" /&gt;
&lt;!-- 仅针对IOS的Safari顶端状态条的样式（可选default/black/black-translucent ） --&gt;
&lt;meta name="apple-mobile-web-app-status-bar-style" content="black" /&gt;
&lt;!-- IOS中禁用将数字识别为电话号码/忽略Android平台中对邮箱地址的识别 --&gt;
&lt;meta name="format-detection"content="telephone=no, email=no" /&gt;
</code></pre>
<ul>
<li>其他meta标签</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">&lt;!-- 启用360浏览器的极速模式(webkit) --&gt;
&lt;meta name="renderer" content="webkit"&gt;
&lt;!-- 避免IE使用兼容模式 --&gt;
&lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;
&lt;!-- 针对手持设备优化，主要是针对一些老的不识别viewport的浏览器，比如黑莓 --&gt;
&lt;meta name="HandheldFriendly" content="true"&gt;
&lt;!-- 微软的老式浏览器 --&gt;
&lt;meta name="MobileOptimized" content="320"&gt;
&lt;!-- uc强制竖屏 --&gt;
&lt;meta name="screen-orientation" content="portrait"&gt;
&lt;!-- QQ强制竖屏 --&gt;
&lt;meta name="x5-orientation" content="portrait"&gt;
&lt;!-- UC强制全屏 --&gt;
&lt;meta name="full-screen" content="yes"&gt;
&lt;!-- QQ强制全屏 --&gt;
&lt;meta name="x5-fullscreen" content="true"&gt;
&lt;!-- UC应用模式 --&gt;
&lt;meta name="browsermode" content="application"&gt;
&lt;!-- QQ应用模式 --&gt;
&lt;meta name="x5-page-mode" content="app"&gt;
&lt;!-- windows phone 点击无高光 --&gt;
&lt;meta name="msapplication-tap-highlight" content="no"&gt;
</code></pre>
<h5>常见问题：</h5>
<ul>
<li>移动端如何定义字体font-family</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">@ --------------------------------------中文字体的英文名称
@ 宋体      SimSun
@ 黑体      SimHei
@ 微信雅黑   Microsoft Yahei
@ 微软正黑体 Microsoft JhengHei
@ 新宋体    NSimSun
@ 新细明体  MingLiU
@ 细明体    MingLiU
@ 标楷体    DFKai-SB
@ 仿宋     FangSong
@ 楷体     KaiTi
@ 仿宋_GB2312  FangSong_GB2312
@ 楷体_GB2312  KaiTi_GB2312  
@
@ 说明：中文字体多数使用宋体、雅黑，英文用Helvetica

body { font-family: Microsoft Yahei,SimSun,Helvetica; } 
</code></pre>
<ul>
<li>打电话发短信写邮件怎么实现</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">// 一、打电话
&lt;a href="tel:0755-10086"&gt;打电话给:0755-10086&lt;/a&gt;

//  二、发短信，winphone系统无效
&lt;a href="sms:10086"&gt;发短信给: 10086&lt;/a&gt;

// 三、写邮件
//注：在添加这些功能时，第一个功能以"?"开头，后面的以"&amp;"开头
//1.普通邮件
&lt;a href="mailto:863139978@qq.com"&gt;点击我发邮件&lt;/a&gt;
//2.收件地址后添加?cc=开头，可添加抄送地址（Android存在兼容问题）
&lt;a href="mailto:863139978@qq.com?cc=zhangqian0406@yeah.net"&gt;点击我发邮件&lt;/a&gt;
//3.跟着抄送地址后，写上&amp;bcc=,可添加密件抄送地址（Android存在兼容问题）
&lt;a href="mailto:863139978@qq.com?cc=zhangqian0406@yeah.net&amp;bcc=384900096@qq.com"&gt;点击我发邮件&lt;/a&gt;
//4.包含多个收件人、抄送、密件抄送人，用分号(;)隔开多个邮件人的地址
&lt;a href="mailto:863139978@qq.com;384900096@qq.com"&gt;点击我发邮件&lt;/a&gt;
//5.包含主题，用?subject=
&lt;a href="mailto:863139978@qq.com?subject=邮件主题"&gt;点击我发邮件&lt;/a&gt;
//6.包含内容，用?body=;如内容包含文本，使用%0A给文本换行 
&lt;a href="mailto:863139978@qq.com?body=邮件主题内容%0A腾讯诚信%0A期待您的到来"&gt;点击我发邮件&lt;/a&gt;
//7.内容包含链接，含http(s)://等的文本自动转化为链接
&lt;a href="mailto:863139978@qq.com?body=http://www.baidu.com"&gt;点击我发邮件&lt;/a&gt;
//8.内容包含图片（PC不支持）
&lt;a href="mailto:863139978@qq.com?body=&lt;img src='images/1.jpg' /&gt;"&gt;点击我发邮件&lt;/a&gt;
//9.完整示例
&lt;a href="mailto:863139978@qq.com;384900096@qq.com?cc=zhangqian0406@yeah.net&amp;bcc=993233461@qq.com&amp;subject=[邮件主题]&amp;body=腾讯诚邀您参与%0A%0Ahttp://www.baidu.com%0A%0A&lt;img src='images/1.jpg' /&gt;"&gt;点击我发邮件&lt;/a&gt;

</code></pre>
<ul>
<li>移动端touch事件（区分webkit和winphone）</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">/* 当用户手指放在移动设备在屏幕上滑动会触发的touch事件 */
// 以下支持webkit
touchstart——当手指触碰屏幕时候发生。不管当前有多少只手指
touchmove——当手指在屏幕上滑动时连续触发。通常我们再滑屏页面，会调用event的preventDefault()可以阻止默认情况的发生：阻止页面滚动
touchend——当手指离开屏幕时触发
touchcancel——系统停止跟踪触摸时候会触发。例如在触摸过程中突然页面alert()一个提示框，此时会触发该事件，这个事件比较少用

//TouchEvent说明：
touches：屏幕上所有手指的信息
targetTouches：手指在目标区域的手指信息
changedTouches：最近一次触发该事件的手指信息
touchend时，touches与targetTouches信息会被删除，changedTouches保存的最后一次的信息，最好用于计算手指信息

//参数信息(changedTouches[0])
clientX、clientY在显示区的坐标
target：当前元素

//事件响应顺序
ontouchstart  &gt; ontouchmove  &gt; ontouchend &gt; onclick

// 以下支持winphone 8
MSPointerDown——当手指触碰屏幕时候发生。不管当前有多少只手指
MSPointerMove——当手指在屏幕上滑动时连续触发。通常我们再滑屏页面，会调用css的html{-ms-touch-action: none;}可以阻止默认情况的发生：阻止页面滚动
MSPointerUp——当手指离开屏幕时触发
</code></pre>
<ul>
<li>移动端click屏幕产生200-300ms的延时响应</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">说明：移动设备上的web网页是有300ms延迟的，玩玩会造成按钮点击延迟甚至是点击失效。

以下是历史原因，来源一个公司内一个同事的分享：
2007年苹果发布首款iphone上IOS系统搭载的safari为了将适用于PC端上大屏幕的网页能比较好的展示在手机端上，使用了双击缩放(double tap to zoom)的方案，比如你在手机上用浏览器打开一个PC上的网页，你可能在看到页面内容虽然可以撑满整个屏幕，但是字体、图片都很小看不清，此时可以快速双击屏幕上的某一部分，你就能看清该部分放大后的内容，再次双击后能回到原始状态。

双击缩放是指用手指在屏幕上快速点击两次，iOS 自带的 Safari 浏览器会将网页缩放至原始比例。

原因就出在浏览器需要如何判断快速点击上，当用户在屏幕上单击某一个元素时候，例如跳转链接&lt;a href="#"&gt;&lt;/a&gt;，此处浏览器会先捕获该次单击，但浏览器不能决定用户是单纯要点击链接还是要双击该部分区域进行缩放操作，所以，捕获第一次单击后，浏览器会先Hold一段时间t，如果在t时间区间里用户未进行下一次点击，则浏览器会做单击跳转链接的处理，如果t时间里用户进行了第二次单击操作，则浏览器会禁止跳转，转而进行对该部分区域页面的缩放操作。那么这个时间区间t有多少呢？在IOS safari下，大概为300毫秒。这就是延迟的由来。造成的后果用户纯粹单击页面，页面需要过一段时间才响应，给用户慢体验感觉，对于web开发者来说是，页面js捕获click事件的回调函数处理，需要300ms后才生效，也就间接导致影响其他业务逻辑的处理。

//解决方案：
fastclick可以解决在手机上点击事件的300ms延迟
zepto的touch模块，tap事件也是为了解决在click的延迟问题

</code></pre>
<ul>
<li>Rentina显示屏原理及设计方案</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">说明：retina屏是一种具备超高像素密度的液晶屏，同样大小的屏幕上显示的像素点由1个变为多个，如在同样带下的屏幕上，苹果设备的retina显示屏中，像素点1个变为4个。
在高清显示屏中的位图被放大，图片会变得模糊，因此移动端的视觉稿通常会设计为传统PC的2倍。
那么，前端的应对方案是：设计稿切出来的图片长宽保证为偶数，并使用backgroud-size把图片缩小为原来的1/2

//例如图片宽高为：200px*200px，那么写法如下
.css{width:100px;height:100px;background-size:100px 100px;}
//其它元素的取值为原来的1/2，例如视觉稿40px的字体，使用样式的写法为20px
.css{font-size:20px}

//image-set设计Rentina背景图
image-set,webkit私有属性，也是CSS4的属性，为解决Rentina屏幕下的图像而生。
.css {
    background: url(images/bg.jpg) no-repeat center;
    background: -webkit-image-set(
    url(images/bg.jpg) 1x,     //支持image-set普通屏
    url(images/bg-2x.jpg) 2x); //支持image-set的Rentinan
}
</code></pre>
<ul>
<li>点击元素产生背景或边框怎么去掉</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">/ios用户点击一个链接，会出现一个半透明灰色遮罩, 如果想要禁用，可设置-webkit-tap-highlight-color的alpha值为0去除灰色半透明遮罩；
//android用户点击一个链接，会出现一个边框或者半透明灰色遮罩, 不同生产商定义出来额效果不一样，可设置-webkit-tap-highlight-color的alpha值为0去除部分机器自带的效果；
//winphone系统,点击标签产生的灰色半透明背景，能通过设置&lt;meta name="msapplication-tap-highlight" content="no"&gt;去掉；
//特殊说明：有些机型去除不了，如小米2。对于按钮类还有个办法，不使用a或者input标签，直接用div标签
a,button,input,textarea { 
    -webkit-tap-highlight-color: rgba(0,0,0,0); 
    -webkit-user-modify:read-write-plaintext-only; //-webkit-user-modify有个副作用，就是输入法不再能够输入多个字符
}   
// 也可以 
* { -webkit-tap-highlight-color: rgba(0,0,0,0); }
//winphone下
&lt;meta name="msapplication-tap-highlight" content="no"&gt;
</code></pre>
<ul>
<li>美化表单元素</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">//一、使用appearance改变webkit浏览器的默认外观
input,select { -webkit-appearance:none; appearance: none; }

//二、winphone下，使用伪元素改变表单元素默认外观
//1.禁用select默认箭头，::-ms-expand修改表单控件下拉箭头，设置隐藏并使用背景图片来修饰
select::-ms-expand { display:none; }

//2.禁用radio和checkbox默认样式，::-ms-check修改表单复选框或单选框默认图标，设置隐藏并使用背景图片来修饰
input[type=radio]::-ms-check,
input[type=checkbox]::-ms-check { display:none; }

//3.禁用pc端表单输入框默认清除按钮，::-ms-clear修改清除按钮，设置隐藏并使用背景图片来修饰
input[type=text]::-ms-clear,
input[type=tel]::-ms-clear,
input[type=number]::-ms-clear { display:none; }

</code></pre>
<ul>
<li>移动端字体单位font-size选择px还是rem</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-javascript">// 如需适配多种移动设备，建议使用rem。以下为参考值：
html { font-size: 62.5%; }   //10*16 = 62.5%
//设置12px字体   这里注意在rem前要加上对应的px值，解决不支持rem的浏览器的兼容问题，做到优雅降级
body { font-size:12px; font-size:1.2rem; }     
</code></pre>
<ul>
<li>超实用的CSS样式</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-css">//去掉webkit的滚动条——display: none;
//其他参数
::-webkit-scrollba //滚动条整体部分
::-webkit-scrollbar-thumb   //滚动条内的小方块
::-webkit-scrollbar-track   //滚动条轨道
::-webkit-scrollbar-button  //滚动条轨道两端按钮
::-webkit-scrollbar-track-piece  //滚动条中间部分，内置轨道
::-webkit-scrollbar-corner       //边角，两个滚动条交汇处
::-webkit-resizer            //两个滚动条的交汇处上用于通过拖动调整元素大小的小控件

// 禁止长按链接与图片弹出菜单
a,img { -webkit-touch-callout: none }    

// 禁止ios和android用户选中文字
html,body {-webkit-user-select:none; user-select: none; }

// 改变输入框placeholder的颜色值
::-webkit-input-placeholder { /* WebKit browsers */
color: #999; }
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #999; }
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #999; }
:-ms-input-placeholder { /* Internet Explorer 10+ */
color: #999; }
input:focus::-webkit-input-placeholder{ color:#999; }

// android上去掉语音输入按钮
input::-webkit-input-speech-button {display: none}

// 阻止windows Phone的默认触摸事件
/*说明：winphone下默认触摸事件事件使用e.preventDefault是无效的，可通过样式来禁用，如：*/
html { -ms-touch-action:none; } //禁止winphone默认触摸事件
</code></pre>
<ul>
<li>取消input在ios下，输入的时候英文首字母的默认大写</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">&lt;input autocapitalize="off" autocorrect="off" /&gt;
</code></pre>
<ul>
<li>手机拍照和上传图片</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">//IOS有拍照、录像、选取本地图片功能，部分Android只有选择本地图片功能。Winphone不支持
&lt;input type="file" accept="images/*" /&gt;
&lt;input type="file" accept="video/*" /&gt;
</code></pre>
<ul>
<li>屏幕旋转的事件和样式</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">//JS处理
function orientInit(){
    var orientChk = document.documentElement.clientWidth &gt; document.documentElement.clientHeight?'landscape':'portrait';
    if(orientChk =='lapdscape'){
        //这里是横屏下需要执行的事件
    }else{
        //这里是竖屏下需要执行的事件
    }
}

orientInit();
window.addEventListener('onorientationchange' in window?'orientationchange':'resize', function(){
    setTimeout(orientInit, 100);
},false)    

//CSS处理
//竖屏时样式
@media all and (orientation:portrait){   }
//横屏时样式
@media all and (orientation:landscape){   }
</code></pre>
<ul>
<li>audio元素和video元素在ios和andriod中无法自动播放</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">//音频，写法一
&lt;audio src="music/bg.mp3" autoplay loop controls&gt;你的浏览器还不支持哦&lt;/audio&gt;

//音频，写法二
&lt;audio controls="controls"&gt; 
    &lt;source src="music/bg.ogg" type="audio/ogg"&gt;&lt;/source&gt;
    &lt;source src="music/bg.mp3" type="audio/mpeg"&gt;&lt;/source&gt;
    优先播放音乐bg.ogg，不支持在播放bg.mp3
&lt;/audio&gt;

//JS绑定自动播放（操作window时，播放音乐）
$(window).one('touchstart', function(){
    music.play();
})

//微信下兼容处理
document.addEventListener("WeixinJSBridgeReady", function () {
    music.play();
}, false);

//小结
//1.audio元素的autoplay属性在IOS及Android上无法使用，在PC端正常
//2.audio元素没有设置controls时，在IOS及Android会占据空间大小，而在PC端Chrome是不会占据任何空间
</code></pre>
<ul>
<li>重力感应事件</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html"><br>// 运用HTML5的deviceMotion，调用重力感应事件
if(window.DeviceMotionEvent){
    document.addEventListener('devicemotion', deviceMotionHandler, false)
}   

var speed = 30;
var x = y = z = lastX = lastY = lastZ = 0;
function deviceMotionHandler(eventData){
    var acceleration = event.accelerationIncludingGravity;
    x = acceleration.x;
    y = acceleration.y; 
    z = acceleration.z;
    if(Math.abs(x-lastX)&gt;speed || Math.abs(y-lastY)&gt;speed || Math.abs(z-lastZ)&gt;speed ){
        //这里是摇动后要执行的方法 
        yaoAfter();
    }
    lastX = x;
    lastY = y;
    lastZ = z;
}

function yaoAfter(){
    //do something
}

//说明：说见案例摇一摇效果中yao.js
</code></pre>
<ul>
<li>微信浏览器用户调整字体大小后页面矬了，怎么阻止用户调整</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">//以下代码可使Android机页面不再受用户字体缩放强制改变大小，但是会有1S左右延时，期间可以考虑loading来处理
if (typeof(WeixinJSBridge) == "undefined") {
    document.addEventListener("WeixinJSBridgeReady", function (e) {
        setTimeout(function(){
            WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize':0}, function(res){
                alert(JSON.stringify(res));
            })
        }, 0)
    });
}else{  
    setTimeout(function(){
        WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize':0}, function(res){
            alert(JSON.stringify(res));
        })
    }, 0)   
}

//IOS下可使用 -webkit-text-size-adjust禁止用户调整字体大小
body { -webkit-text-size-adjust:100%!important; }

//最好的解决方案：最好使用rem或百分比布局
</code></pre>
<ul>
<li>定位的坑</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">//fixed定位
//1.ios下fixed元素容易定位出错，软键盘弹出时，影响fixed元素定位
//2.android下fixed表现要比iOS更好，软键盘弹出时，不会影响fixed元素定位
//3.ios4下不支持position:fixed
//解决方案：使用[Iscroll](http://cubiq.org/iscroll-5)，如：
&lt;div id="wrapper"&gt;
        &lt;ul&gt;
               &lt;li&gt;&lt;/li&gt;
               .....
        &lt;/ul&gt;
&lt;/div&gt;
&lt;script src="iscroll.js"&gt;&lt;/script&gt;
&lt;script&gt;
    var myscroll;
    function loaded(){
        myscroll=new iScroll("wrapper");
    }
    window.addEventListener("DOMContentLoaded",loaded,false);
&lt;/script&gt;


//position定位
//Android下弹出软键盘弹出时，影响absolute元素定位
//解决方案:
var ua = navigator.userAgent.indexOf('Android');
if(ua&gt;-1){
    $('.ipt').on('focus', function(){
        $('.css').css({'visibility':'hidden'})
    }).on('blur', function(){
        $('.css').css({'visibility':'visible'})
    })
}
</code></pre>
<ul>
<li>播放视频不全屏</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">&lt;!--
1.ios7+支持自动播放
2.支持Airplay的设备（如：音箱、Apple TV)播放
x-webkit-airplay="true" 
3.播放视频不全屏
webkit-playsinline="true" 
--&gt;
&lt;video x-webkit-airplay="true" webkit-playsinline="true" preload="auto" autoplay src="http://"&gt;&lt;/video&gt;

</code></pre>
<ul>
<li>JS判断设备</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">function deviceType(){
    var ua = navigator.userAgent;
    var agent = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];    
    for(var i=0; i&lt;len,len = agent.length; i++){
        if(ua.indexOf(agent[i])&gt;0){         
            break;
        }
    }
}
deviceType();
window.addEventListener('resize', function(){
    deviceType();
})
</code></pre>
<ul>
<li>JS判断微信浏览器</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">function isWeixin(){
    var ua = navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i)=='micromessenger'){
        return true;
    }else{
        return false;
    }
}
</code></pre>
<ul>
<li>android 2.3 bug</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">//1.@-webkit-keyframes 需要以0%开始100%结束，0%的百分号不能去掉
//2.after和before伪类无法使用动画animation
//3.border-radius不支持%单位，如要兼容，可以给radius设置一下较大的值
//4.translate百分比的写法和scale在一起会导致失效，例如：
-webkit-transform: translate(-50%,-50%) scale(-0.5, 1)
</code></pre>
<ul>
<li>android 4.x bug</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">//1.三星 Galaxy S4中自带浏览器不支持border-radius缩写
//2.同时设置border-radius和背景色的时候，背景色会溢出到圆角以外部分
//3.部分手机(如三星)，a链接支持鼠标:visited事件，也就是说链接访问后文字变为紫色
//4.android无法同时播放多音频audio
</code></pre>
<ul>
<li>消除transition闪屏</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-html">.css {
    -webkit-transform-style: preserve-3d;
    -webkit-backface-visibility: hidden;
    -webkit-perspective: 1000;
}
</code></pre>
<ul>
<li>开启硬件加速</li>
</ul>
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-css">//目前，像Chrome/Filefox/Safari/IE9+以及最新版本Opera都支持硬件加速，当检测到某个DOM元素应用了某些CSS规则时就会自动开启，从而解决页面闪白，保证动画流畅。
.css {
    -webkit-transform: translate3d(0,0,0);
    -moz-transform: translate3d(0,0,0);
    -ms-transform: translate3d(0,0,0);
    transform: translate3d(0,0,0);
}
</code></pre>
<ul>
<li>渲染优化</li>
</ul>
<blockquote><p>
  1.禁止使用iframe（阻塞父文档onload事件）<br />
  2.禁止使用gif图片实现loading效果（降低CPU消耗，提升渲染性能）<br />
  3.使用CSS3代码代替JS动画；<br />
  4.开启GPU加速；<br />
  5.使用base64位编码图片(不小图而言，大图不建议使用)<br />
       对于一些小图标，可以使用base64位编码，以减少网络请求。但不建议大图使用，比较耗费CPU。小图标优势在于：<br />
  &#8211; 1.减少HTTP请求；<br />
  &#8211; 2.避免文件跨域；<br />
  &#8211; 3.修改及时生效；
</p></blockquote>
<p> </p>
<h5>常用的移动端框架</h5>
<p>zepto.js<br />
&#8211; <a href="http://zeptojs.com/" title="官网" target="_blank">官网</a><br />
&#8211; <a href="http://www.css88.com/doc/zeptojs_api/" title="中文网" target="_blank">中文网</a><br />
&#8211; <a href="https://github.com/madrobby/zepto/blob/master/src/detect.js" title="浏览器检测" target="_blank">浏览器检测</a><br />
&#8211; <a href="https://github.com/madrobby/zepto/blob/master/src/touch.js" title="tap事件" target="_blank">tap事件</a></p>
<p><strong>项目主页：</strong><a href="http://www.open-open.com/lib/view/home/1449325854077" title="http://www.open-open.com/lib/view/home/1449325854077" target="_blank">http://www.open-open.com/lib/view/home/1449325854077</a></p>
<p>进行过样式优化，转载自 <a href="http://www.open-open.com/lib/view/open1449325854077.html" title="http://www.open-open.com/lib/view/open1449325854077.html" target="_blank">http://www.open-open.com/lib/view/open1449325854077.html</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>广汽丰田汉兰达&#8211;大汉是怎么炼成的</title>
		<link>https://www.zlhlab.top/swiper%e5%b5%8c%e5%a5%97%e5%ae%89%e5%8d%93%e6%9c%ba%e5%9e%8b%e5%8d%a1%e9%a1%bf%e9%97%ae%e9%a2%98%e6%80%bb%e7%bb%93/</link>
		
		<dc:creator><![CDATA[萧邦]]></dc:creator>
		<pubDate>Wed, 28 Jun 2017 06:35:20 +0000</pubDate>
				<category><![CDATA[H5]]></category>
		<category><![CDATA[swiper]]></category>
		<category><![CDATA[重力感应]]></category>
		<guid isPermaLink="false">https://www.zlhlab.top/?p=92</guid>

					<description><![CDATA[H5以“大汉是怎么炼成的”为主题，盘点汉兰达车型亮点。传播产品动力及综合性、省油、安全性等特点。通过简单的互动形式，深度传播产品卖点]]></description>
										<content:encoded><![CDATA[<p class="p1"><span class="s1" style="font-family: helvetica, arial, sans-serif;">H5以“大汉是怎么炼成的”为主题，盘点汉兰达车型亮点。传播产品动力及综合性、省油、安全性等特点。通过简单的互动形式，深度传播产品卖点。</span></p>
<p><span class="s1" style="font-family: helvetica, arial, sans-serif;">在广汽汉兰达项目中，使用swiper进行分页和关键点分页展示和swiper.animate.js进行动画切换。</span></p>
<h2 class="p1"><span class="s1" style="font-family: helvetica, arial, sans-serif;"><strong>项目技术元素</strong>：</span></h2>
<p class="p1"><span class="s1" style="font-family: helvetica, arial, sans-serif;">video标签、重力感应、摇一摇切屏、canvas绘制背景、swiper 3d切换，以及包含大量循环的CSS3动画(如车灯、轮胎、循环路背景)。</span></p>
<h2><span style="font-family: helvetica, arial, sans-serif;"><strong>开发难点：</strong></span></h2>
<ol>
<li><span style="font-family: helvetica, arial, sans-serif;">swiper多重嵌套；</span></li>
<li><span style="font-family: helvetica, arial, sans-serif;">视频和大量CSS3动画，出现安卓机型卡顿问题。</span></li>
</ol>
<p> </p>
<h2 class="p1"><span class="s1" style="color: #000000; font-family: helvetica, arial, sans-serif;"><strong>项目解决思路和方法如下</strong>：</span></h2>
<ol>
<li class="p1"><span class="s1" style="font-family: helvetica, arial, sans-serif;">之前阅读知道大量css3动画会导致界面渲染出现卡顿。路采用css3动画进行路的循环，由于山的背景图比较大，开始采用div进行背景循环，然后重力感应进行背景旋转，效果不太理想。于是山的背景图采用canvas方式渲染，然后旋转canvas来适应重力感应。</span></li>
<li class="p1"><span class="s1" style="font-family: helvetica, arial, sans-serif;">元素非循环动画采用ani动画，循环动画使用css3，在swiper切换的时候进行显示影藏。</span></li>
<li class="p1"><span class="s1" style="font-family: helvetica, arial, sans-serif;">进行一个个page检查，发现video标签，不在当前选择页面，还是会进行数据加载，导致界面卡顿。于是针对video标签，仅在当前选择状态，才设置其可见。</span></li>
<li class="p1"><span class="s1" style="font-family: helvetica, arial, sans-serif;">由于子项swiper主要进行卖点介绍，包含大量的图片。在项目构建时，将子项swiper直接嵌入，发现会导致长时间延时。于是将子项swiper嵌套在div当中，在切换到当前页时，动态加载子项swiper包含的内容，当切换出当前页，移除子项swiper包含的元素。</span></li>
<li class="p1"><span class="s1" style="font-family: helvetica, arial, sans-serif;">通过代码优化和细节调整，终于使得项目在安卓机型下流畅的运行。</span></li>
<li class="p1"><span class="s1" style="font-family: helvetica, arial, sans-serif;">搞定。终于可以好好休息下了~</span></li>
</ol>
<h2><span style="font-family: helvetica, arial, sans-serif;"><strong>项目UI设计与地址:</strong></span></h2>
<p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-359" src="https://www.zlhlab.top/wp-content/uploads/2017/06/%E6%B1%89%E5%85%B0%E8%BE%BE-1.jpg" alt="" width="1228" height="3331"></p>
<p> </p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
