现在我是web初学者,最近在随心的研究关于h5的各种知识。昨天遇到一个奇怪的问题,问题是这样的,有个点击图片出现从左边切入元素的动画,在PC端没有问题,在安卓手机上也没问题,在苹果机上偏偏出了事儿(苹果机在苹果4和苹果6上测试的):点击图片毫无反应,无法出现动画。这个问题让我足足找了半天才找到原因,原来是CSS有问题,见下面的代码。
部分html代码:
<div class="col_1_of_4 span_1_of_4"> <a class="b-link-stripe b-animate-go thickbox"> <img src="images/p1.jpg" class="img-responsive" alt=""/> <div class="b-wrapper"> <h2 class="b-animate b-from-left b-delay03 "> <img src="images/p_logo.png" class="img-responsive-2" alt="" /> <span class="span-responsive-2">content</span> <button class="btn-responsive-2">content</button> <label> <i class="heart"> </i>21</label> </h2> </div> </a> </div>部分css代码:
.b-animate{ transition: all 0.5s; -moz-transition: all 0.5s; -ms-transition: all 0.5s; -o-transition: all 0.5s; -webkit-transition: all 0.5s; visibility: hidden; font-size:1.1em; font-weight:700; transition: transform 0.5s;
.b-from-left{ position: relative; transform: translate3d(-100%,-100%,0); background-size: 100% 100%; top: 0px; margin: 0; min-height:312px; }
.b-animate-go:hover .b-animate{ visibility:visible; }
.b-animate-go:hover .b-from-left{ transform: translate3d(0,0,0); }
注:b-animate与b-form-left是同一个元素的类。
注意后面两段css,出现了b-animate-go:hover,经过查询得知,hover选择器用于选择鼠标指针浮动在上面的元素,它不是用来做手机端的。原因出在这里。
经过自己的思考,想出了条解决的思路:给需要动画的元素绑定一个点击事件,通过点击来改变CSS,来显示点击后,图片切入元素;并且每当在点击下一个图片的时候,上一个图片切入的元素消失。
1、先把上面CSS中的两个带有hover的代码注销;
2、在需要动画的元素上添加点击事件并增加一个id;
<div class="col_1_of_4 span_1_of_4"> <a class="b-link-stripe b-animate-go thickbox" id="b-animate-go1" onclick="setAnimate(1)" > <img src="images/p1.jpg" class="img-responsive" alt=""/> <div class="b-wrapper"> <h2 class="b-animate b-from-left b-delay03 "> <img src="images/p_logo.png" class="img-responsive-2" alt="" /> <span class="span-responsive-2">content</span> <button class="btn-responsive-2">content</button> <label> <i class="heart"> </i>21</label> </h2> </div> </a> </div>
var k=0; function setAnimate(i){ document.getElementById("b-animate"+i).style.cssText="visibility:visible;transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0)"; if(k!=0){ if(k!=i){ document.getElementById("b-animate"+k).style.cssText="transform:translate3d(-100%,0,0);-webkit-transform:translate3d(-100%,0,0);visibility:hidden;"; } } k=i; }这个已经经过测试了,但是有一个问题,在苹果4上面点击图片的动画,会遇到延迟,首次点击延迟2秒,非首次延迟大概1.2秒。但是在苹果6上面没有这个问题,我想会不会是苹果4兼容性不好的原因。
大概思路是:
1、在刚才有hover的css代码中,去掉hover,并添加一个active类
.b-animate-go.active .b-from-left .b-animate{ visibility:visible; transform: translate3d(0,0,0); -webkit-transform: translate3d(0,0,0); }
function setClassName(i){ document.getElementById("b-animate-go"+i).classList.add('active'); }