AdiHuang's notes

js-retinajs.md

retinajs使用摘要

官方文档:retinajs 注:需要准备的图片名称格式 image.png image@2x.png image@3x.png 现在有4种实现方式: 1. 自动交换“img”标签的"src"路径。 2. 在内联样式中自动交换背景图像的网址。 3. 手动指定一个高分辨率的图像不同位

官方文档:retinajs

注:需要准备的图片名称格式

image.png image@2x.png image@3x.png

现在有4种实现方式:

  1. 自动交换“img”标签的”src”路径。
  2. 在内联样式中自动交换背景图像的网址。
  3. 手动指定一个高分辨率的图像不同位置。
  4. 自动创建CSS背景图像媒体查询。
// 自动交换
<img src="/images/my_image.png" data-rjs="3" />
<div style="background: url(my_image.png);" data-rjs="3" />
// 手动指定路径
<img src="/images/my_image.png" data-rjs="/images/2x/my_image.png" />

把”data-rjs”的属性值设为3,就相当于你告知了retina.js您已创建了比传统像素密度大3倍的高分辨率图像(包括@2x和@3x的图片)。

SCSS, Sass, LESS, and Stylus

css预处理是在样式表中提供高分辨率的图片,每一种预处理机制,都有4个参数:

1.path - 你的标准分辨率图像的路径。 2.cap - 您准备的最高分辨率图片的等级。默认为2。 3.size - background-size的属性值。默认为auto auto。 4.extras - 任何其他背景属性的属性值。默认没有。

步骤:

1.添加 retina mixin到你的样式表中。 2.在你的样式表中,调用retina mixin,而不是使用 background-image

// SCSS
#logo {
  @include retina('my_image.png', 3, 100px 50px, center center no-repeat);
}

// Sass
#logo
+retina ('my_image.png', 3, 100px 50px, center center no-repeat); 

// Less
#logo {
  .retina('my_image.png', 3, 100px 50px, center center no-repeat);
}
 
// Stylus
#logo
  retina('my_image.png', 3, 100px 50px, center center no-repeat);

编译成:

#logo {
  background: url("my_image.png") center center no-repeat;
  background-size: 100px 50px;
}

@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) {
  #item {
    background: url("my_image@2x.png") center center no-repeat;
    background-size: 100px 50px;
  }
}

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  #item {
    background: url("my_image@2x.png") center center no-repeat;
    background-size: 100px 50px;
  }
}

@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 288dpi) {
  #item {
    background: url("my_image@3x.png") center center no-repeat;
    background-size: 100px 50px;
  }
}