diff --git a/wowchemy/assets/scss/wowchemy/_base.scss b/wowchemy/assets/scss/wowchemy/_base.scss index 09f418ce..98411f00 100644 --- a/wowchemy/assets/scss/wowchemy/_base.scss +++ b/wowchemy/assets/scss/wowchemy/_base.scss @@ -196,85 +196,6 @@ a:focus { color: $sta-dark-link-hover; } -img, -video { - height: auto; - max-width: 100%; - display: block; -} - -audio { - width: 100%; - margin-bottom: 20px; -} - -video { - width: 100%; - height: auto; - max-height: 400px; -} - -.img-responsive { - /* Extend Bootstrap declaration with centering. */ - margin: 0 auto; -} - -/* Hide overflowing of zoomed child img element */ -.img-hover-zoom { - overflow: hidden; -} - -/* Smooth transition for image zoom on hover */ -.img-hover-zoom img { - transition: transform 0.3s ease-in-out; -} - -/* Transform the image scale when container gets hovered */ -.img-hover-zoom:hover img { - transform: scale(1.1); -} - -// Center all figure images by default. -figure { - display: flex; - flex-flow: row wrap; - justify-content: center; -} - -figure img { - height: auto; - max-width: 100%; - flex-basis: 100%; - // Safari fix for responsive aspect ratio issue when `height: auto` set with flex parent. - // See https://stackoverflow.com/a/61196907 - align-self: flex-start; -} - -// Center all figure captions by default. -figcaption { - display: block; - margin-top: 0.75em; - margin-bottom: 1.65rem; - line-height: 1.4; - font-size: 0.76rem; - text-align: center; -} - -figcaption.numbered::before { - font-weight: 700; - text-transform: uppercase; - content: attr(data-pre) counter(captions) attr(data-post); -} - -figcaption.numbered { - counter-increment: captions; -} - -// Dynamically theme SVGs -svg { - fill: currentColor; -} - pre, code { font-family: $sta-font-mono, monospace; diff --git a/wowchemy/assets/scss/wowchemy/elements/_media.scss b/wowchemy/assets/scss/wowchemy/elements/_media.scss index feb7ad61..5eb485ae 100644 --- a/wowchemy/assets/scss/wowchemy/elements/_media.scss +++ b/wowchemy/assets/scss/wowchemy/elements/_media.scss @@ -1,3 +1,102 @@ +img, +video { + height: auto; + max-width: 100%; + display: block; +} + +audio { + width: 100%; + margin-bottom: 20px; +} + +video { + width: 100%; + height: auto; + max-height: 400px; +} + +.img-responsive { + /* Extend Bootstrap declaration with centering. */ + margin: 0 auto; +} + +/************************************************* + * Image zoom on hover for previews. + **************************************************/ + +/* Hide overflowing of zoomed child img element */ +.img-hover-zoom { + overflow: hidden; +} + +/* Smooth transition for image zoom on hover */ +.img-hover-zoom img { + transition: transform 0.3s ease-in-out; +} + +/* Transform the image scale when container gets hovered */ +.img-hover-zoom:hover img { + transform: scale(1.1); +} + +/************************************************* + * Figures + **************************************************/ + +figure { + display: flex; + flex-flow: row wrap; + justify-content: center; + + .figure-img-wrap { + flex-basis: 100%; + // Safari fix for responsive aspect ratio issue when `height: auto` set with flex parent. + // See https://stackoverflow.com/a/61196907 + align-self: flex-start; + } + + img { + height: auto; + max-width: 100%; + } + + // Center all figure captions by default. + figcaption { + flex-basis: 100%; // Appear on row beneath image. + margin-top: 0.75em; + margin-bottom: 1.65rem; + line-height: 1.4; + font-size: 0.76rem; + text-align: center; + } + + figcaption.numbered::before { + font-weight: 700; + text-transform: uppercase; + content: attr(data-pre) counter(captions) attr(data-post); + } + + figcaption.numbered { + counter-increment: captions; + } +} + +/************************************************* + * Dynamic theming. + **************************************************/ + +// Dynamically theme `img` +.dark .img-light, +body:not(.dark) .img-dark { + filter: invert(1); +} + +// Dynamically theme inline `svg` +svg { + fill: currentColor; +} + /************************************************* * Image zooming. **************************************************/ diff --git a/wowchemy/layouts/shortcodes/figure.html b/wowchemy/layouts/shortcodes/figure.html index 00b23cc0..d9bcc06c 100644 --- a/wowchemy/layouts/shortcodes/figure.html +++ b/wowchemy/layouts/shortcodes/figure.html @@ -8,6 +8,9 @@ {{ $zoom := eq (.Get "lightbox" | default "true") "true" }} {{ $id := anchorize (.Get "id" | default ($caption | plainify)) }} {{ $alt := .Get "alt" | default ($caption | plainify) }} +{{ $img_class := "" }} +{{ if eq (.Get "theme" | lower) "light" }}{{ $img_class = printf "%s img-light" $img_class }}{{end}} +{{ if eq (.Get "theme" | lower) "dark" }}{{ $img_class = printf "%s img-dark" $img_class }}{{end}} {{- $img := (.Page.Resources.ByType "image").GetMatch $destination -}} {{- if not $img -}} @@ -15,37 +18,42 @@ {{- end -}}
+
+ {{- if $img -}} + {{ $isSVG := eq $img.MediaType.SubType "svg" }} + {{ if $isSVG -}} + {{ $alt }} + {{- else }} + {{- $img_lg := $img.Fit "1200x1200" -}} + {{- $img_md := $img_lg.Fit "760x760" -}}{{/* Match `.docs-article-container` max-width */}} + {{- $img_sm := $img_md.Fit "400x400" -}} + {{- $width := (.Get "width") | default $img_md.Width -}} + {{- $height := (.Get "height") | default $img_md.Height -}} + {{ $alt }} + {{- end }} + {{- else -}} + {{ $alt }} + {{- end -}} +
- {{- if $img -}} - {{ $isSVG := eq $img.MediaType.SubType "svg" }} - {{ if $isSVG -}} - {{ $alt }} - {{- else }} - {{- $img_lg := $img.Fit "1200x1200" -}} - {{- $img_md := $img_lg.Fit "760x760" -}}{{/* Match `.docs-article-container` max-width */}} - {{- $img_sm := $img_md.Fit "400x400" -}} - {{- $width := (.Get "width") | default $img_md.Width -}} - {{- $height := (.Get "height") | default $img_md.Height -}} - {{ $alt }} - {{- end }} - {{- else -}} - {{ $alt }} - {{- end -}} - - {{ if $caption }} + {{- if $caption -}} {{/* Localize the figure numbering (if enabled). */}} {{- $figure := split (i18n "figure" | default "Figure %d:") "%d" -}}