jekyll_picture_tag 1.12.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 %}