정적 이미지 500x640은 CSS 스프라이트가있는 20x20 조각에 의해 catted되어 있으며, 각 조각을 표시하기 위해 배경 위치를 설정하고 있으며 나중에 각 조각을 조작 할 수있는 종류의 디스플레이가 필요합니다.CSS Sprites 성능
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;
}
그래서 몇 가지 성능 문제가 발생하고있다. IE에서 매우 빠르게 약 1 초를로드 오페라와 FF 이미지의 예를 들어 약 3 초 만, 크롬에서 매우 느린로드
가 크롬의 모든 조각을 표시하기 위해 약 17 초 걸립니다 ...
브라우저에서 이미지를 가져오고 작은 조각을 자르는 것 하나만하면 Chrome에서 왜 오래 걸릴까요?
성능을 향상시킬 수있는 방법이 있습니까?
는 CTRL + 새로 고침을했고, 여기에 이상한로드 결과 : 가 UPDATE
UPDATE : 난 그냥 여기에 샘플을 배치 내 샘플에서 가 JSON 배열에는 800 개의 요소가 포함되어 있습니다. 따라서 요소를 적게 만들면 알아볼 수 있습니다. 예를 들어 600-700 개의 요소가 성능이 좋아지고 있지만 어쨌든 800 개의 요소가 필요합니다.
예 :이 약 6 초에 크롬의 부하를 감소에만 600 요소 ....있을 때
그래서 아마 어딘가에서 템플릿을 반복 녹아웃 지점에서 문제가 될 수있다?
죄송합니다. 사진이 조금 작습니다. 스프라이트가 얼마나 큽니까? – canon
재현 가능합니까? – SLaks
@canon 이미지를 마우스 오른쪽 버튼으로 클릭하고 열면 실제 크기로 열립니다 (http://i.stack.imgur.com/WGdAr.jpg). 내 스프라이트는 83.78kb입니다. – Kuncevic