From 1bcc18122055e46c520a395229d7a19489145158 Mon Sep 17 00:00:00 2001 From: Maik de Kruif Date: Thu, 23 Sep 2021 23:04:48 +0200 Subject: [PATCH] Use masonry instead of hard rows --- themes/maik-blog/assets/js/list_columns.js | 23 ++++ themes/maik-blog/assets/scss/_masonry.scss | 11 ++ themes/maik-blog/assets/scss/_posts.scss | 38 ++----- themes/maik-blog/assets/scss/main.scss | 1 + .../layouts/partials/javascript.html | 3 +- themes/maik-blog/layouts/writeups/list.html | 104 +++++++++--------- 6 files changed, 101 insertions(+), 79 deletions(-) create mode 100644 themes/maik-blog/assets/js/list_columns.js create mode 100644 themes/maik-blog/assets/scss/_masonry.scss diff --git a/themes/maik-blog/assets/js/list_columns.js b/themes/maik-blog/assets/js/list_columns.js new file mode 100644 index 0000000..563a39e --- /dev/null +++ b/themes/maik-blog/assets/js/list_columns.js @@ -0,0 +1,23 @@ +function resizeItem(masonry, item){ + let rowHeight = parseInt(window.getComputedStyle(masonry).getPropertyValue('grid-auto-rows')); + let rowGap = parseInt(window.getComputedStyle(masonry).getPropertyValue('grid-row-gap')); + let rowSpan = Math.ceil((item.querySelector('.masonry-item-content').getBoundingClientRect().height+rowGap)/(rowHeight+rowGap)); + item.style.gridRowEnd = "span "+rowSpan; +} + +function resizeAll(){ + let masonry = document.getElementsByClassName("masonry")[0]; + masonry.style.gridAutoRows = "20px" + masonry.style.marginBottom = "80px" + let allItems = document.getElementsByClassName("masonry-item"); + + for (const item of allItems) { + resizeItem(masonry, item) + } +} + +window.addEventListener("load", () => { + resizeAll() + + window.addEventListener("resize", resizeAll); +}) diff --git a/themes/maik-blog/assets/scss/_masonry.scss b/themes/maik-blog/assets/scss/_masonry.scss new file mode 100644 index 0000000..5dbca85 --- /dev/null +++ b/themes/maik-blog/assets/scss/_masonry.scss @@ -0,0 +1,11 @@ +.masonry { + display: grid; + grid-gap: 20px 90px; + grid-template-columns: repeat(2, minmax(250px, 1fr)); + // grid-auto-rows: 20px; // Set by JavaScript + // margin-bottom: calc(4 * 20px); // Set by JavaScript + + @media #{$media-size-medium} { + grid-template-columns: 1fr; + } +} diff --git a/themes/maik-blog/assets/scss/_posts.scss b/themes/maik-blog/assets/scss/_posts.scss index 724f569..f850bb9 100644 --- a/themes/maik-blog/assets/scss/_posts.scss +++ b/themes/maik-blog/assets/scss/_posts.scss @@ -36,39 +36,21 @@ margin: 0; padding: 0; list-style: none; + } - &-columns { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - - @media #{$media-size-medium} { - justify-content: center; - } - - .post { - width: 430px; - min-width: 45%; - margin: 0px; - - @media #{$media-size-medium} { - width: 90%; - } - - &-cover { - width: 115%; - margin: 40px -30px; - - img { - max-height: 20rem; - margin: 0 auto; - } + .post { + &.masonry-item { + .post-cover { + width: 115%; + margin: 40px -30px; + + img { + max-height: 20rem; + margin: 0 auto; } } } - } - .post { &-title { font-size: 1.9rem; margin: 5px 0 5px 0; diff --git a/themes/maik-blog/assets/scss/main.scss b/themes/maik-blog/assets/scss/main.scss index 5f7b86c..fc28aa7 100644 --- a/themes/maik-blog/assets/scss/main.scss +++ b/themes/maik-blog/assets/scss/main.scss @@ -17,3 +17,4 @@ @import "footer"; @import "sharing-buttons"; @import "code"; +@import "masonry"; diff --git a/themes/maik-blog/layouts/partials/javascript.html b/themes/maik-blog/layouts/partials/javascript.html index 4ce472e..87d947a 100644 --- a/themes/maik-blog/layouts/partials/javascript.html +++ b/themes/maik-blog/layouts/partials/javascript.html @@ -2,7 +2,8 @@ {{- $menu := resources.Get "js/menu.js" }} {{- $theme := resources.Get "js/theme.js" }} {{- $nav := resources.Get "js/nav.js" }} -{{- $secureJS := slice $main $menu $theme $nav | resources.Concat "bundle.js" | resources.Minify | resources.Fingerprint "sha512" }} +{{- $list_columns := resources.Get "js/list_columns.js" }} +{{- $secureJS := slice $main $menu $theme $nav $list_columns | resources.Concat "bundle.js" | resources.Minify | resources.Fingerprint "sha512" }} {{- if .Site.GoogleAnalytics }} diff --git a/themes/maik-blog/layouts/writeups/list.html b/themes/maik-blog/layouts/writeups/list.html index 9d78bc0..c100948 100644 --- a/themes/maik-blog/layouts/writeups/list.html +++ b/themes/maik-blog/layouts/writeups/list.html @@ -12,67 +12,71 @@ {{ partial "pagination.html" . }} {{- end }} -
+
{{ range $paginator.Pages }} -
-

{{ .Title | markdownify }}

- {{- with .Params.Subtitle }} -

{{ . | markdownify }}

- {{- end }} -