jekyll_picture_tag 1.12.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +4 -0
  3. data/.github/workflows/code-checks.yml +33 -0
  4. data/.gitignore +3 -0
  5. data/.rubocop.yml +31 -3
  6. data/.ruby-version +1 -1
  7. data/docs/.envrc +2 -0
  8. data/docs/devs/contributing/code.md +14 -4
  9. data/docs/devs/contributing/docs.md +24 -6
  10. data/docs/devs/contributing/setup.md +21 -1
  11. data/docs/devs/contributing/testing.md +19 -37
  12. data/docs/devs/releases.md +45 -4
  13. data/docs/index.md +43 -18
  14. data/docs/logo.png +0 -0
  15. data/docs/logo.svg +880 -0
  16. data/docs/users/configuration/disable.md +1 -1
  17. data/docs/users/configuration/ignore_missing.md +1 -1
  18. data/docs/users/configuration/kramdown_fix.md +1 -1
  19. data/docs/users/configuration/suppress_warnings.md +1 -1
  20. data/docs/users/configuration/urls.md +69 -0
  21. data/docs/users/deployment.md +49 -0
  22. data/docs/users/getting_started.md +55 -0
  23. data/docs/users/installation.md +18 -38
  24. data/docs/users/liquid_tag/argument_reference/crop.md +21 -36
  25. data/docs/users/liquid_tag/examples.md +12 -12
  26. data/docs/users/liquid_tag/index.md +1 -1
  27. data/docs/users/notes/{migration.md → migration_1.md} +1 -1
  28. data/docs/users/notes/migration_2.md +99 -0
  29. data/docs/users/presets/cropping.md +24 -25
  30. data/docs/users/presets/default.md +11 -2
  31. data/docs/users/presets/examples.md +77 -45
  32. data/docs/users/presets/fallback_image.md +1 -1
  33. data/docs/users/presets/html_attributes.md +1 -1
  34. data/docs/users/presets/image_formats.md +3 -3
  35. data/docs/users/presets/image_quality.md +96 -19
  36. data/docs/users/presets/index.md +19 -45
  37. data/docs/users/presets/link_source.md +1 -1
  38. data/docs/users/presets/media_queries.md +1 -1
  39. data/docs/users/presets/nomarkdown_override.md +1 -1
  40. data/docs/users/presets/pixel_ratio_srcsets.md +1 -1
  41. data/docs/users/presets/quality_width_graph.png +0 -0
  42. data/docs/users/presets/width_height_attributes.md +1 -1
  43. data/docs/users/presets/width_srcsets.md +61 -23
  44. data/docs/users/presets/writing_presets.md +65 -0
  45. data/docs/users/tutorial.md +97 -0
  46. data/jekyll_picture_tag.gemspec +38 -23
  47. data/lib/jekyll_picture_tag.rb +11 -10
  48. data/lib/jekyll_picture_tag/cache.rb +64 -3
  49. data/lib/jekyll_picture_tag/defaults/global.rb +18 -0
  50. data/lib/jekyll_picture_tag/defaults/presets.rb +57 -0
  51. data/lib/jekyll_picture_tag/images.rb +4 -0
  52. data/lib/jekyll_picture_tag/images/generated_image.rb +92 -0
  53. data/lib/jekyll_picture_tag/images/image_file.rb +104 -0
  54. data/lib/jekyll_picture_tag/{img_uri.rb → images/img_uri.rb} +3 -10
  55. data/lib/jekyll_picture_tag/{source_image.rb → images/source_image.rb} +44 -9
  56. data/lib/jekyll_picture_tag/instructions.rb +70 -6
  57. data/lib/jekyll_picture_tag/instructions/children/config.rb +128 -0
  58. data/lib/jekyll_picture_tag/instructions/children/context.rb +24 -0
  59. data/lib/jekyll_picture_tag/instructions/children/params.rb +90 -0
  60. data/lib/jekyll_picture_tag/instructions/children/parsers.rb +48 -0
  61. data/lib/jekyll_picture_tag/instructions/children/preset.rb +182 -0
  62. data/lib/jekyll_picture_tag/instructions/parents/conditional_instruction.rb +69 -0
  63. data/lib/jekyll_picture_tag/instructions/parents/env_instruction.rb +29 -0
  64. data/lib/jekyll_picture_tag/output_formats/basic.rb +5 -17
  65. data/lib/jekyll_picture_tag/parsers.rb +6 -0
  66. data/lib/jekyll_picture_tag/{instructions → parsers}/arg_splitter.rb +1 -1
  67. data/lib/jekyll_picture_tag/parsers/configuration.rb +28 -0
  68. data/lib/jekyll_picture_tag/{instructions → parsers}/html_attributes.rb +1 -1
  69. data/lib/jekyll_picture_tag/parsers/image_backend.rb +33 -0
  70. data/lib/jekyll_picture_tag/parsers/preset.rb +43 -0
  71. data/lib/jekyll_picture_tag/{instructions → parsers}/tag_parser.rb +15 -12
  72. data/lib/jekyll_picture_tag/router.rb +35 -93
  73. data/lib/jekyll_picture_tag/srcsets/basic.rb +4 -10
  74. data/lib/jekyll_picture_tag/utils.rb +24 -20
  75. data/lib/jekyll_picture_tag/version.rb +1 -1
  76. data/readme.md +46 -15
  77. metadata +168 -85
  78. data/.travis.yml +0 -8
  79. data/Dockerfile +0 -9
  80. data/docs/users/configuration/cdn.md +0 -35
  81. data/docs/users/configuration/relative_urls.md +0 -15
  82. data/docs/users/notes/input_checking.md +0 -6
  83. data/jekyll-picture-tag.gemspec +0 -52
  84. data/lib/jekyll-picture-tag.rb +0 -25
  85. data/lib/jekyll_picture_tag/cache/base.rb +0 -59
  86. data/lib/jekyll_picture_tag/cache/generated.rb +0 -20
  87. data/lib/jekyll_picture_tag/cache/source.rb +0 -19
  88. data/lib/jekyll_picture_tag/defaults/global.yml +0 -11
  89. data/lib/jekyll_picture_tag/defaults/presets.yml +0 -11
  90. data/lib/jekyll_picture_tag/generated_image.rb +0 -140
  91. data/lib/jekyll_picture_tag/instructions/configuration.rb +0 -121
  92. data/lib/jekyll_picture_tag/instructions/preset.rb +0 -107
  93. data/lib/jekyll_picture_tag/instructions/set.rb +0 -75
@@ -1,61 +1,60 @@
1
1
  ---
2
- sort: 5
2
+ sort: 7
3
3
  ---
4
4
 
5
5
  # Cropping
6
6
 
7
- **Check the warning in the
8
- [installation guide]({{ site.baseurl }}/users/installation)
9
- before using this feature.**
10
-
11
7
  ## Crop & Media Crop
12
8
 
13
9
  _Format:_
14
10
 
15
11
  ```yaml
16
- crop: (geometery)
12
+ crop: (aspect ratio)
17
13
  media_crop:
18
- (media_preset): (geometry)
19
- (media_preset): (geometry)
14
+ (media_preset): (aspect ratio)
15
+ (media_preset): (aspect ratio)
20
16
  (...)
21
17
  ```
22
18
 
23
19
  _Example:_
24
20
 
25
21
  ```yaml
26
- crop: 16:9
22
+ crop: '16:9'
27
23
  media_crop:
28
- tablet: 3:2
29
- mobile: 1:1
24
+ tablet: '3:2'
25
+ mobile: '1:1'
30
26
  ```
31
27
 
32
- Crop geometry, given either generally or for specific media presets. The
28
+ Crop aspect ratio, given either generally or for specific media presets. The
33
29
  hierarchy is: `tag argument` > `media_crop:` > `crop:`.
34
30
 
35
- This setting accepts the same arguments as the `crop geometry`
31
+ This setting accepts the same arguments as the `crop`
36
32
  [tag parameter]({{ site.baseurl }}/users/liquid_tag/argument_reference/crop).
37
33
 
38
- ## Gravity & Media Gravity
34
+ ## Keep & Media Keep
39
35
 
40
36
  ```yaml
41
- gravity: (gravity)
42
- media_gravity:
43
- (media_preset): (gravity)
44
- (media_preset): (gravity)
37
+ keep: (measure)
38
+ media_keep:
39
+ (media_preset): (measure)
40
+ (media_preset): (measure)
45
41
  (...)
46
42
  ```
47
43
 
48
44
  _Example:_
49
45
 
50
46
  ```yaml
51
- gravity: north
47
+ keep: attention
52
48
  media_gravity:
53
- tablet: east
54
- mobile: southwest
49
+ tablet: entropy
50
+ mobile: center
55
51
  ```
56
52
 
57
- Crop gravity, given either generally or for specific media presets. The hierarchy is:
58
- `tag argument` > `media_gravity:` > `gravity:` > `center` (default).
53
+ Which part of the image to keep when cropping, given either generally or for specific media presets.
54
+ The hierarchy is: `tag argument` > `media_keep:` > `keep:` > `attention` (default).
59
55
 
60
- This setting accepts the same arguments as the `crop gravity`
61
- [tag parameter]({{ site.baseurl }}/users/liquid_tag/argument_reference/crop).
56
+ This setting accepts the same arguments as the `keep` [tag parameter]({{ site.baseurl
57
+ }}/users/liquid_tag/argument_reference/crop):
58
+ * `center` or `centre`
59
+ * `attention`
60
+ * `entropy`
@@ -1,5 +1,5 @@
1
1
  ---
2
- sort: 13
2
+ sort: 14
3
3
  ---
4
4
 
5
5
  # Default preset
@@ -17,7 +17,16 @@ presets:
17
17
  noscript: false
18
18
  link_source: false
19
19
  quality: 75
20
+ format_quality:
21
+ webp: 50
22
+ avif: 30
23
+ jp2: 30
24
+ strip_metadata: true
25
+ image_options:
26
+ avif:
27
+ compression: av1
28
+ speed: 8
20
29
  data_sizes: true
21
- gravity: center
30
+ keep: attention
22
31
  dimension_attributes: false
23
32
  ```
@@ -1,79 +1,111 @@
1
1
  ---
2
- sort: 12
2
+ sort: 2
3
3
  ---
4
- # Example _data/picture.yml
4
+ # Examples
5
5
 
6
- These are example settings- I mostly made them up off the top of my head. You
7
- probably don't want to just copy-paste them.
6
+ The following example media queries & presets (except for `default`) are built-in with a `jpt-`
7
+ prefix. For example, the `desktop` media query below can be used with `jpt-desktop`, and the `webp`
8
+ preset below can be used with `jpt-webp`.
8
9
 
9
10
  ```yaml
10
11
  # _data/picture.yml
11
12
 
13
+ # These are used in several places. You likely want to enter whatever CSS media queries your site
14
+ # uses here.
12
15
  media_queries:
13
- wide_desktop: 'min-width: 1801px'
14
- desktop: 'max-width: 1800px'
15
- wide_tablet: 'max-width: 1200px'
16
- tablet: 'max-width: 900px'
17
- mobile: 'max-width: 600px'
16
+ mobile: 'max-width: 480px'
17
+ tablet: 'max-width: 768'
18
+ laptop: 'max-width: 1024px'
19
+ desktop: 'max-width: 1200'
20
+ wide: 'min-width: 1201'
18
21
 
19
22
  presets:
23
+ # This entry is purely an example. It is not the default JPT preset, nor is it available as a
24
+ # built-in.
20
25
  default:
21
- markup: auto
22
- link_source: true # wrap images in a link to the original source image.
23
- dimension_attributes: true # Page reflow begone!
24
-
25
- formats: [webp, original] # Must be an array, and order matters.
26
+ formats: [webp, original] # Order matters!
27
+ widths: [200, 400, 800, 1200, 1600] # Image widths, in pixels.
26
28
 
27
- widths: [200, 400, 800, 1600] # Must be an array.
28
- media_widths: # Because a cell phone doesn't want 1600 pixels.
29
- mobile: [200, 400, 600]
30
- tablet: [400, 600, 800]
31
-
32
- sizes:
33
- mobile: 100vw
29
+ # The sizes attribute is both important, and impossible to offer good defaults for. You need to
30
+ # learn about it. Short version: Web browsers parse web pages line-by-line. When they run into
31
+ # an external asset they must download, they start that process immediately, without waiting to
32
+ # finish rendering the page. This means that at the point in time when the browser must decide
33
+ # which image to download, it has no clue how large that image will be on the page. The sizes
34
+ # attribute is how we tell it.
35
+ #
36
+ # If you do not provide this, the web browser will assume the image is 100vw (100% the width of
37
+ # the viewport.)
38
+ #
39
+ # This doesn't have to be pixel-perfect, just close enough for the browser to make a good
40
+ # choice. Keys are media queries defined above, values are how large the image will be when
41
+ # that media query is true. You can't use % (percentage width of the parent container) for the
42
+ # same reason we have to do this at all.
43
+ sizes:
44
+ mobile: calc(100vw - 16px)
34
45
  tablet: 80vw
46
+
47
+ # Size is unconditional; provided either after all conditional sizes (above) or alone. If you
48
+ # only have a 'size' (no 'sizes'), and it's a constant (px, em, or rem), you should use a
49
+ # pixel-ratio srcset.
35
50
  size: 800px
36
51
 
37
- fallback_width: 800
38
- fallback_format: original
52
+ link_source: true # wrap images in a link to the original source image.
53
+ dimension_attributes: true # Page reflow begone!
39
54
 
55
+ # You can add any HTML attribute you like, to any HTML element which JPT creates:
40
56
  attributes:
57
+ # parent refers to the outermost tag; <picture> if it's present, otherwise the <img>.
41
58
  parent: 'data-downloadable="true"'
42
59
  picture: 'class="awesome" data-volume="11"'
43
60
  img: 'class="some-other-class"'
44
61
  a: 'class="image-link"'
45
62
 
46
- # This is an example of how you would create a 'multiplier' based srcset;
47
- # useful when an image will always be the same size on all screens (icons,
48
- # graphics, thumbnails, etc), but you'd like to supply higher resolution
49
- # images to devices with higher pixel ratios.
50
- icon:
51
- base_width: 20 # How wide the 1x image should be.
52
- pixel_ratios: [1, 1.5, 2]
53
- fallback_width: 20
63
+ # You can use this as jpt-webp. All following presets follow the same pattern.
64
+ webp:
65
+ formats: [webp, original]
66
+
67
+ # Avif is the new hotness coming down the pipe. Browser support is bad and they are slow to
68
+ # generate, but you get good file sizes even compared to webp of similar quality.
69
+ avif:
70
+ formats: [avif, webp, original]
71
+
72
+ # Your build times will suffer, but everyone is happy.
73
+ loaded:
74
+ formats: [avif, jp2, webp, original]
75
+ dimension_attributes: true
76
+
77
+ # This is an example of how you would create a 'multiplier' based srcset; useful when an image
78
+ # will always be the same size on all screens (icons, graphics, thumbnails, etc), but you'd like
79
+ # to supply higher resolution images to devices with higher pixel ratios.
80
+ thumbnail:
81
+ base_width: 250 # How wide the 1x image should be.
82
+ pixel_ratios: [1, 1.5, 2] # Which multipliers to target.
83
+ fallback_width: 250 # The default is 800, which is probably too big.
84
+ formats: [webp, original]
54
85
  attributes:
55
- img: 'class="icon"'
86
+ picture: 'class="thumbnail"'
56
87
 
57
- # Here's an example of how you'd configure jekyll-picture-tag to work with
58
- # something like lazyload: https://github.com/verlok/lazyload
88
+ # Another pixel-ratio example.
89
+ avatar:
90
+ # Say your layout demands a square:
91
+ crop: 1:1
92
+ base_width: 100
93
+ pixel_ratios: [1, 1.5, 2]
94
+ fallback_width: 100,
95
+
96
+ # Here's an example of how you'd configure JPT to work with something like lazyload:
97
+ # https://github.com/verlok/lazyload
98
+ # Remember to add a sizes attribute, unless it's close to 100vw all the time.
59
99
  lazy:
60
100
  markup: data_auto
61
101
  formats: [webp, original]
62
- widths: [200, 400, 600, 800]
63
102
  noscript: true # add a fallback image inside a <noscript> tag.
64
- attributes:
65
- img: class="lazy"
103
+ attributes:
104
+ parent: class="lazy"
66
105
 
67
- # This is an example of how you'd get generated image and a URL, and nothing
68
- # else.
106
+ # This is an example of how you'd get a single generated image, a URL, and nothing else.
69
107
  direct:
70
108
  markup: direct_url
71
109
  fallback_format: webp
72
110
  fallback_width: 600
73
-
74
- # Here's a naked srcset. Doesn't even give you the surrounding quotes.
75
- srcset:
76
- markup: naked_srcset
77
- formats: [webp] # must be an array, even if it only has one item
78
-
79
111
  ```
@@ -1,5 +1,5 @@
1
1
  ---
2
- sort: 9
2
+ sort: 11
3
3
  ---
4
4
 
5
5
  # Fallback Image
@@ -1,5 +1,5 @@
1
1
  ---
2
- sort: 8
2
+ sort: 10
3
3
  ---
4
4
 
5
5
  # Arbitrary HTML Attributes
@@ -1,12 +1,12 @@
1
1
  ---
2
- sort: 2
2
+ sort: 4
3
3
  ---
4
4
 
5
5
  # Image Formats
6
6
 
7
- _Format:_ `format: [format1, format2, (...)]`
7
+ _Format:_ `formats: [format1, format2, (...)]`
8
8
 
9
- _Example:_ `format: [webp, original]`
9
+ _Example:_ `formats: [webp, original]`
10
10
 
11
11
  _Default_: `original`
12
12
 
@@ -1,21 +1,12 @@
1
1
  ---
2
- sort: 6
2
+ sort: 8
3
3
  ---
4
4
 
5
- # Image Quality
5
+ # Image Quality & Options
6
6
 
7
- ## Quality
7
+ Image quality is set per-format, using `format_quality`.
8
8
 
9
- _Format:_ `quality: 0 <= integer <= 100`
10
-
11
- _Example:_ `quality: 80`
12
-
13
- _Default:_ `75`
14
-
15
- Specify an image compression level for all image formats (where it makes
16
- sense, anyway).
17
-
18
- ## Format Quality
9
+ ## Constant Quality
19
10
 
20
11
  _Format:_
21
12
 
@@ -34,10 +25,96 @@ sort: 6
34
25
  webp: 55
35
26
  ```
36
27
 
37
- _Default:_ quality setting
28
+ _Defaults:_
29
+
30
+ - webp - 50
31
+ - avif - 30
32
+ - jp2 - 30
33
+ - all others - 75
34
+
35
+ ## Variable Quality
36
+
37
+ ```yaml
38
+ format_quality:
39
+ (format):
40
+ (image width): (quality setting)
41
+ (image width): (quality setting)
42
+ ```
43
+
44
+ _Example:_
45
+
46
+ ```yaml
47
+ format_quality:
48
+ jpg:
49
+ 1000: 65
50
+ 300: 100
51
+ ```
52
+
53
+ Set a variable image quality, based on image width. Provide exactly 2 image widths and associated
54
+ quality settings. Quality will be calculated as follows:
55
+
56
+ * For images smaller than the lowest image width, the setting for the lowest width is used.
57
+ * For images larger than the highest image width, the setting for the highest width is used.
58
+ * For images in between the 2, the quality setting will be linearly interpolated to some value in
59
+ between.
60
+
61
+ ![](quality_width_graph.png)
62
+
63
+ Using this setting, you can get away with more compression on high pixel density screens without
64
+ sacrificing image quality for low-density screens. Taking the example settings above:
65
+
66
+ * A 1500px image will use a quality of 65.
67
+ * A 200px image will use a quality of 100.
68
+ * A 500px image will use a quality of 90.
69
+
70
+ ## Strip Metadata
71
+
72
+ _Format:_ `strip_metadata: (true|false)`
73
+
74
+ _Example:_ `strip_metadata: false`
75
+
76
+ _Default:_ `true`
77
+
78
+ Remove EXIF data, which can save a few tens of kilobytes per image. This is set for all formats.
79
+
80
+ ## Image Format Options
81
+
82
+ _Format:_
83
+
84
+ ```yaml
85
+ image_options:
86
+ format:
87
+ setting1: value
88
+ setting2: value
89
+ (...)
90
+ (...)
91
+ ```
92
+
93
+ _Example:_
94
+
95
+ ```yaml
96
+ image_options:
97
+ webp:
98
+ lossless: true
99
+ ```
100
+
101
+ _Default:_
102
+
103
+ ```yaml
104
+ image_options:
105
+ avif:
106
+ compression: av1
107
+ speed: 8
108
+ ```
109
+
110
+ Control the write options passed to libvips for each image output format. To see a list of options
111
+ available for a given image format, search for the method `vips_(format)save` in
112
+ [this](https://libvips.github.io/libvips/API/current/VipsForeignSave.html) API documentation. For
113
+ example, png options can be found by searching for `vips_pngsave()`, leading
114
+ [here](https://libvips.github.io/libvips/API/current/VipsForeignSave.html#vips-pngsave). See the
115
+ optional arguments. `avif`'s options are under `vips_heifsave()`,
116
+ [here](https://libvips.github.io/libvips/API/current/VipsForeignSave.html#vips-heifsave).
38
117
 
39
- Specify quality settings for various image formats, allowing you to take
40
- advantage of webp's better compression algorithm without trashing your jpg
41
- images (for example). If you don't give a setting for a particular format
42
- it'll fall back to the `quality` setting above, and if you don't set _that_
43
- it'll default to 75.
118
+ For all formats, note that
119
+ - `Q:` (quality) is handled by the settings above.
120
+ - `strip` is handled by the `strip_metadata` setting documented above.
@@ -2,7 +2,7 @@
2
2
  sort: 3
3
3
  ---
4
4
 
5
- # Writing Presets
5
+ # Presets
6
6
 
7
7
  Presets are named collections of settings that determine basically everything
8
8
  about JPT's output. Think of them like frameworks that you can plug images into;
@@ -14,26 +14,6 @@ the `_data/` directory as well.
14
14
  Any settings which are specific to particular markup formats are documented on
15
15
  their respective markup format page.
16
16
 
17
- ## Required Knowledge
18
-
19
- If you don't know the difference between resolution switching and art direction,
20
- stop now and learn responsive images. Ideally, write a few yourself until you
21
- understand them.
22
-
23
- Here are some good guides:
24
-
25
- * [MDN Responsive Images guide](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images)
26
- * [CSS Tricks Guide to Reponsive Images](https://css-tricks.com/a-guide-to-the-responsive-images-syntax-in-html/)
27
- * [Cloud 4 - Responsive Images 101](https://cloudfour.com/thinks/responsive-images-101-definitions/)
28
-
29
- ## Media Queries
30
-
31
- **Media queries are not presets**, but they are used when writing them. They are
32
- defined in `_data/picture.yml` alongside presets. More information
33
- [here](media_queries).
34
-
35
- ## Presets
36
-
37
17
  _General Format:_
38
18
 
39
19
  ```yaml
@@ -65,37 +45,31 @@ presets:
65
45
  noscript: true
66
46
  ```
67
47
 
68
- Each entry is a pre-defined collection of settings to build a given chunk of
69
- text (usually HTML) and its respective images. You can select one as the first
70
- argument given to the tag:
48
+ ## Media Queries
71
49
 
72
- {% raw %}
73
- `{% picture my-preset image.jpg %}`
74
- {% endraw %}
50
+ **Media queries are not presets**, but they are used when writing them. They are
51
+ defined in `_data/picture.yml` alongside presets. They look like this:
75
52
 
76
- The `default` preset will be used if none is specified. A preset name can't
77
- contain a `.` (period). You can create as many as you like.
53
+ ```yaml
54
+ # _data/picture.yml
78
55
 
79
- ```note
80
- `media_queries` and `presets` used to be called `media_presets` and
81
- `markup_presets`. These names were causing some confusion, so they were
82
- changed. The old names will continue working for the forseeable future, at least
83
- until the next major version update.
56
+ media_queries:
57
+ (name): '(media query)'
58
+ (name): '(media query)'
59
+ (name): '(media query)'
84
60
  ```
85
61
 
86
- ## Markup Format
87
-
88
- The high level, overall markup format is controlled with the `markup:` setting,
89
- documented [here](markup_formats).
62
+ Example:
90
63
 
91
- ## Choosing a Srcset format
92
-
93
- For images that are different sizes on different screens (most images), use a
94
- [width-based srcset](width_srcsets) (which is the default).
64
+ ```yaml
65
+ media_queries:
66
+ full_width: 'min-width: 901px'
67
+ tablet: 'min-width: 601px'
68
+ mobile: 'max-width: 600px'
69
+ ```
95
70
 
96
- Use a [pixel-ratio srcset](pixel_ratio_srcsets) when the image will always be
97
- the same size, regardless of screen width (thumbnails and icons).
71
+ More information [here](media_queries).
98
72
 
99
- ## Settings reference
73
+ ## Reference
100
74
 
101
75
  {% include list.liquid %}