CSS 스프라이트
대부분의 뷰어 사용자 인터페이스 요소는 비트맵 아트웍을 사용하여 스타일이 지정되며 둘 이상의 고유한 시각적 상태를 갖습니다. 좋은 예는 일반적으로 "up", "over" 및 "down"의 세 가지 이상 다른 상태를 갖는 단추입니다. 각 상태에는 고유한 비트맵 아트워크가 할당되어야 합니다.
스타일링에 대한 클래식 접근 방식을 사용하면 CSS에는 사용자 인터페이스 요소의 각 상태에 대해 서버의 개별 이미지 파일에 대한 별도의 참조가 있습니다. 다음은 스크롤 단추 스타일을 지정하는 샘플 CSS입니다.
.s7flyoutviewer .s7swatches .s7scrollleftbutton[state="up"]{
background-image:url(images/v2/ScrollLeftButton_up.png);
}
.s7flyoutviewer .s7swatches .s7scrollleftbutton[state="over"]{
background-image:url(images/v2/ScrollLeftButton_over.png);
}
.s7flyoutviewer .s7swatches .s7scrollleftbutton[state="down"]{
background-image:url(images/v2/ScrollLeftButton_down.png);
}
.s7flyoutviewer .s7swatches .s7scrollleftbutton[state="disabled"]{
background-image:url(images/v2/ScrollLeftButton_disabled.png);
}
이 접근 방식의 단점은 요소가 와 처음 상호 작용할 때 최종 사용자가 깜박이거나 지연된 사용자 인터페이스 응답을 경험한다는 것입니다. 이 작업은 새 요소 상태에 대한 이미지 아트워크가 아직 다운로드되지 않았기 때문에 발생합니다. 또한 이 방법은 서버에 대한 HTTP 호출 수가 증가하므로 성능에 약간 부정적인 영향을 줄 수 있습니다.
CSS 스프라이트는 모든 요소 상태에 대한 이미지 아트워크가 "스프라이트"라는 단일 PNG 파일로 결합되는 다른 방법입니다. 이러한 "스프라이트"는 지정된 요소에 대한 모든 시각적 상태를 차례로 배치합니다. 스프라이트를 사용하여 사용자 인터페이스 요소의 스타일을 지정할 때 CSS의 모든 다른 상태에 대해 동일한 스프라이트 이미지가 참조됩니다. 또한 background-position 속성은 각 상태에 대해 "스프라이트" 이미지의 어떤 부분을 사용할지 지정하는 데 사용됩니다. 적절한 방법으로 "스프라이트" 이미지를 구조화할 수 있습니다. 뷰어는 일반적으로 세로로 스택되어 있습니다. 다음은 위에서 동일한 스크롤 단추를 스타일링하는 "스프라이트" 기반 예입니다.
.s7flyoutviewer .s7scrollleftbutton[state] {
background-image: url(images/v2/ScrollLeftButton_light_sprite.png);
}
.s7flyoutviewer .s7swatches .s7scrollleftbutton[state="up"]{
background-position: -56px -504px;
}
.s7flyoutviewer .s7swatches .s7scrollleftbutton[state="over"]{
background-position: -0px -504px;
}
.s7flyoutviewer .s7swatches .s7scrollleftbutton[state="down"]{
background-position: -56px -448px;
}
.s7flyoutviewer .s7swatches .s7scrollleftbutton[state="disabled"]{
background-position: -0px -448px;
}