summaryrefslogtreecommitdiff
path: root/layouts/_default
diff options
context:
space:
mode:
authorSangeeth Sudheer <git@sangeeth.dev>2024-11-06 04:20:17 +0530
committerSangeeth Sudheer <git@sangeeth.dev>2024-11-17 17:21:02 +0530
commit97936e3070c707fd2db6aa1c3db092aa159563f2 (patch)
tree80978b106d16221e1cc7da3a1f857c808c634d53 /layouts/_default
parentf025f972e0b1ffb8df288be632bb3c34a58b66e8 (diff)
Add width and height attrs for local images
Image render hook now computes width/height of local images and adds them as attributes. This patch also adds relevant CSS changes to prevent stretchy images. The main reason for this change is to avoid content shifts when images load. Without providing width/height, browser doesn't have info to know the aspect ratio to reserve some space until the image loads. With this change, browser knows the intrinsic size and aspect-ratio to reserve space and avoid content shifts in the page. I believe this also fixes an issue I face in Safari where sometimes, an image below the fold wouldn't load and thus have zero height because it has loading="lazy". To avoid images getting stretched and images overflow/filling the entire screen when their intrinsic size is larger than the container size, I've added some CSS. A configurable `max-height` is present which is used for `figure img` elements. This especially helps when you have tall images like mobile screenshots.
Diffstat (limited to 'layouts/_default')
-rw-r--r--layouts/_default/_markup/render-image.html7
1 files changed, 4 insertions, 3 deletions
diff --git a/layouts/_default/_markup/render-image.html b/layouts/_default/_markup/render-image.html
index 0930316..679fd76 100644
--- a/layouts/_default/_markup/render-image.html
+++ b/layouts/_default/_markup/render-image.html
@@ -5,9 +5,9 @@ https://github.com/gohugoio/hugo/blob/89bd02/tpl/tplimpl/embedded/templates/_def
*/}}
{{- $u := urls.Parse .Destination -}}
{{- $url := $u.String -}}
+{{- $imgResource := .Page.Scratch.Get "typoNilVariable" -}}
{{- if not $u.IsAbs -}}
{{- $path := strings.TrimPrefix "./" $u.Path -}}
- {{- $imgResource := .Page.Scratch.Get "typoNilVariable" -}}
{{/* Check if this is a page bundle or standalone page */}}
{{- if .PageInner.Resources -}}
{{- $imgResource = .PageInner.Resources.Get $path -}}
@@ -42,11 +42,12 @@ and build the img class string as "img-tag1 img-tag2 ..."
{{ $classes = printf "%s img-%s" $classes $tag}}
{{ end }}
+
{{/* Use the computed classes on the rendered figure */}}
<figure class="{{ $classes }}">
<div>
- <img loading="lazy" alt="{{ .Text }}" src="{{ $url }}">
+ <img loading="lazy" alt="{{ .Text }}" src="{{ $url }}" {{ with $imgResource }}width="{{ .Width }}px" height="{{ .Height }}px"{{ end }}>
</div>
{{ with .Title }}
@@ -54,4 +55,4 @@ and build the img class string as "img-tag1 img-tag2 ..."
<figcaption> {{ . | markdownify}} </figcaption>
</div>
{{ end }}
-</figure> \ No newline at end of file
+</figure>