我有静态图像 500x640 坐在由 20x20 块和 css 精灵组成的文件夹中,我正在设置背景位置来显示每一块,我需要这种显示以便以后能够对每一块进行操作。
CSS:
.piece
{
width: 20px;
height: 20px;
display: inline-block;
//display: inline;
//zoom:1;
}
.ob { background-image: url("/Images/ob.jpg");}
js:
<script id="flipTemplate" type="text/html">
<div class="piece ob" data-bind="style: { backgroundPosition: viewModel.getLeftValue($index) + ' ' + viewModel.getTopValue($index) }, attr: {cond: Cond, id: Id }, click: viewModel.setClick ">
</div>
</script>
<script type="text/javascript">
viewModel = {
flips: ko.observableArray([]),
setClick: function (data, e) {
e.preventDefault();
//doing click
},
getLeftValue: function (index) {
var position = 0;
var currentLine = div(index(), 25);
if (currentLine > 0)
return '-' + (index() - (currentLine * 25)) * 20 + 'px';
else
return '-' + index() * 20 + 'px';
},
getTopValue: function (index) {
return '-' + (div(index(), 25)) * 20 + 'px';
}
};
ko.applyBindings(viewModel);
</script>
function div(val, by){
return (val - val % by) / by;
}
所以我有一些性能问题。例如,在 Opera 和 FF 图像中加载非常快,大约 1 秒,在 IE 中大约 3 秒,但在 Chrome 中加载非常慢
在 Chrome 中显示所有部分大约需要 17 秒...
浏览器只执行一个请求来获取图像而不是从中切割小块,为什么在 Chrome 中可能需要这么长时间?
有什么办法可以提高性能吗?
刚刚做了 CTRL+Refresh 和这里奇怪的加载结果:
更新:我刚刚在这里放了一个样本:http: //bit.ly/TrcCdp
更新: 在我的示例中有 JSON 数组,它包含 800 个元素,所以我只是找出如果我减少它,例如 600-700 个元素,性能会越来越好,但无论如何我需要 800 个元素。
例如,当只有 600 个元素时,它会将 Chrome 中的负载减少到大约 6 秒....
所以可能是淘汰迭代模板的某个地方的问题?