【发布时间】:2017-04-09 23:28:51
【问题描述】:
我遇到了图片在移动设备上加载速度不够快的问题。 我的项目有一个图像和一个按钮。单击按钮时,图像向下滑动,另一个图像从顶部滑动以替换它。这是代码
html
<div class="main">
<div id="myDiv1><img src="img1.jpg" width="100%"></div>
<div id="myDiv2"></div>
</div>
css
.moveFromTop {
animation: moveFromTop 2s ease both;
}
.moveToBottom {
animation: moveToBottom 2s ease both;
}
@keyframes moveFromTop {
from { transform: translateY(-100%); }
}
@keyframes moveToBottom {
from { }
to { transform: translateY(100%); }
}
js
var img2 = new Image();
img2.src = "img2.jpg";
$(img2).css("width","100%");
$(document).ready( function () {
$('#button').click(function(){
$('#myDiv1').addClass('moveToBottom');
$("#myDiv2").append(img2);
$('#myDiv2').addClass('moveFromTop');
});
});
它相当简单,可以在桌面上运行。但是在移动设备上,当您单击#button 时,第二张图片不会立即加载,因此您会得到一秒钟的黑色图片,这完全破坏了我想要的效果。这在 iPhone 和 iPad 上都会发生。我还没有机会在 android 上进行测试,但你会认为 700 美元以上的苹果手机可以处理一点过渡;)我想知道我的代码是否有问题导致这个问题.这是我的第一个项目。感谢您的宝贵时间。
----------------------------------- - - - - - - - - - - 编辑 - - - - - - - - - - - - - - - -------------------------------------------
自从我发布这个问题以来,我已经尝试了很多事情。我尝试将“附加”行移到“单击”函数之外,图像立即加载,指出这个问题与 append() 方法没有任何关系。我还尝试了一种不同的方法,通过显示“none”立即加载图像,然后执行 .css("display","block") 而不是追加。我们仍然得到破坏我在移动设备上的效果的黑色图像。 如果您想亲自查看问题,请访问“alicesoyer.com”。该网站已上线,但正在建设中。您需要单击屏幕上的任意位置来启动动画。你会看到我想要的效果。在桌面上它工作正常。在移动端它没有。我在 iPad air 和 iPhone6 上进行测试。谢谢。
【问题讨论】:
-
预加载第二张图片?
-
这不是我在 js 文件中的前两行所做的吗?
-
不,您正在分配源,但没有加载它。
-
@Paul:可能不会。但是如果你将它附加到页面上,在屏幕外,它应该会被预加载。
-
上面有很多错别字等。值得您花时间确保您的问题清楚且其中的代码正确。您为图像使用了两个不同的变量名称,将
$留在了ready调用的开头,将);留在了结尾...
标签: javascript jquery html css append