หากคุณวางแผนที่จะใช้ภาพเดียวกันสำหรับหน้าจอเรตินาและไม่ใช่เรตินานี่คือวิธีแก้ปัญหา สมมติว่าคุณมีรูปภาพ200x200
และมีไอคอนสองไอคอนในแถวบนสุดและสองไอคอนในแถวล่างสุด มันคือสี่จตุภาค
.sprite-of-icons {
background: url("../images/icons-in-four-quad-of-200by200.png") no-repeat;
background-size: 100px 100px /* Scale it down to 50% rather using 200x200 */
}
.sp-logo-1 { background-position: 0 0; }
/* Reduce positioning of the icons down to 50% rather using -50px */
.sp-logo-2 { background-position: -25px 0 }
.sp-logo-3 { background-position: 0 -25px }
.sp-logo-3 { background-position: -25px -25px }
การปรับขนาดและการวางตำแหน่งของไอคอนสไปรท์ให้สูงกว่าค่าจริง 50% คุณจะได้ผลลัพธ์ที่คาดหวัง
วิธีการแก้ปัญหา SCSS mixin อีกที่มีประโยชน์โดยไรอัน Benhase
/****************************
HIGH PPI DISPLAY BACKGROUNDS
*****************************/
@mixin background-2x($path, $ext: "png", $w: auto, $h: auto, $pos: left top, $repeat: no-repeat) {
$at1x_path: "#{$path}.#{$ext}";
$at2x_path: "#{$path}@2x.#{$ext}";
background-image: url("#{$at1x_path}");
background-size: $w $h;
background-position: $pos;
background-repeat: $repeat;
@media all and (-webkit-min-device-pixel-ratio : 1.5),
all and (-o-min-device-pixel-ratio: 3/2),
all and (min--moz-device-pixel-ratio: 1.5),
all and (min-device-pixel-ratio: 1.5) {
background-image: url("#{$at2x_path}");
}
}
div.background {
@include background-2x( 'path/to/image', 'jpg', 100px, 100px, center center, repeat-x );
}
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ mixin ข้างต้นอ่านได้ที่นี่