mirror of
https://github.com/maikka39/Personal-Website.git
synced 2026-10-02 14:46:25 +00:00
Use masonry instead of hard rows
This commit is contained in:
@@ -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);
|
||||||
|
})
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,39 +36,21 @@
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
list-style: none;
|
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 {
|
.post {
|
||||||
|
&.masonry-item {
|
||||||
|
.post-cover {
|
||||||
|
width: 115%;
|
||||||
|
margin: 40px -30px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-height: 20rem;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&-title {
|
&-title {
|
||||||
font-size: 1.9rem;
|
font-size: 1.9rem;
|
||||||
margin: 5px 0 5px 0;
|
margin: 5px 0 5px 0;
|
||||||
|
|||||||
@@ -17,3 +17,4 @@
|
|||||||
@import "footer";
|
@import "footer";
|
||||||
@import "sharing-buttons";
|
@import "sharing-buttons";
|
||||||
@import "code";
|
@import "code";
|
||||||
|
@import "masonry";
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
{{- $menu := resources.Get "js/menu.js" }}
|
{{- $menu := resources.Get "js/menu.js" }}
|
||||||
{{- $theme := resources.Get "js/theme.js" }}
|
{{- $theme := resources.Get "js/theme.js" }}
|
||||||
{{- $nav := resources.Get "js/nav.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" }}
|
||||||
<script type="text/javascript" src="{{ $secureJS.RelPermalink }}" integrity="{{ $secureJS.Data.Integrity }}"></script>
|
<script type="text/javascript" src="{{ $secureJS.RelPermalink }}" integrity="{{ $secureJS.Data.Integrity }}"></script>
|
||||||
|
|
||||||
{{- if .Site.GoogleAnalytics }}
|
{{- if .Site.GoogleAnalytics }}
|
||||||
|
|||||||
@@ -12,67 +12,71 @@
|
|||||||
{{ partial "pagination.html" . }}
|
{{ partial "pagination.html" . }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
<div class="posts-list posts-list-columns">
|
<div class="posts-list masonry">
|
||||||
{{ range $paginator.Pages }}
|
{{ range $paginator.Pages }}
|
||||||
<div class="post">
|
<div class="post masonry-item">
|
||||||
<h2 class="post-title"><a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h2>
|
<div class="masonry-item-content">
|
||||||
{{- with .Params.Subtitle }}
|
<h2 class="post-title"><a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h2>
|
||||||
<p class="post-subtitle">{{ . | markdownify }}</p>
|
{{- with .Params.Subtitle }}
|
||||||
{{- end }}
|
<p class="post-subtitle">{{ . | markdownify }}</p>
|
||||||
<div class="post-meta">
|
{{- end }}
|
||||||
{{- if .Date }}
|
<div class="post-meta">
|
||||||
<span class="post-date">
|
{{- if .Date }}
|
||||||
{{ .Date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }}
|
<span class="post-date">
|
||||||
|
{{ .Date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }}
|
||||||
|
</span>
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Params.Author }}
|
||||||
|
<span class="post-author">{{ $.Site.Params.WrittenBy | default "Written by" }} {{ . }}</span>
|
||||||
|
{{- end }}
|
||||||
|
{{- if $.Site.Params.ShowReadingTimeInList }}
|
||||||
|
<span class="post-read-time">— {{ .ReadingTime }}
|
||||||
|
{{ $.Site.Params.MinuteReadingTime | default "min read" }}</span>
|
||||||
|
{{- end }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{- if .Params.tags }}
|
||||||
|
<span class="post-tags">
|
||||||
|
{{- range .Params.tags }}
|
||||||
|
#<a href="{{ (urlize (printf "tags/%s" . )) | absURL }}/">{{ . }}</a>
|
||||||
|
{{- end }}
|
||||||
</span>
|
</span>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- with .Params.Author }}
|
|
||||||
<span class="post-author">{{ $.Site.Params.WrittenBy | default "Written by" }} {{ . }}</span>
|
{{- if .Params.Cover }}
|
||||||
|
<figure class="post-cover">
|
||||||
|
{{- $img := imageConfig (printf "static/%s" .Params.Cover) }}
|
||||||
|
|
||||||
|
{{- if .Params.UseRelativeCover }}
|
||||||
|
<img src="{{ (printf "%s%s" .Permalink .Params.Cover ) }}"
|
||||||
|
alt="{{ .Title | plainify | default " " }}" width="{{ $img.Width }}"
|
||||||
|
height="{{ $img.Height }}" />
|
||||||
|
{{- else }}
|
||||||
|
<img src="{{ .Params.Cover | absURL }}" alt="{{ .Title | plainify | default " " }}"
|
||||||
|
width="{{ $img.Width }}" height="{{ $img.Height }}" />
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Params.CoverCaption }}
|
||||||
|
<figcaption class="center">{{ .Params.CoverCaption | markdownify }}</figcaption>
|
||||||
|
{{- end }}
|
||||||
|
</figure>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if $.Site.Params.ShowReadingTimeInList }}
|
|
||||||
<span class="post-read-time">— {{ .ReadingTime }}
|
<div class="post-content">
|
||||||
{{ $.Site.Params.MinuteReadingTime | default "min read" }}</span>
|
{{- with .Description }}
|
||||||
|
{{ . | markdownify }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if .Truncated }}
|
||||||
|
{{ .Summary | markdownify }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
</div>
|
||||||
|
{{- if not .Params.hideReadMore }}
|
||||||
|
<div><a class="read-more button"
|
||||||
|
href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore | default "Read more" }}
|
||||||
|
→</a></div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{- if .Params.tags }}
|
|
||||||
<span class="post-tags">
|
|
||||||
{{- range .Params.tags }}
|
|
||||||
#<a href="{{ (urlize (printf "tags/%s" . )) | absURL }}/">{{ . }}</a>
|
|
||||||
{{- end }}
|
|
||||||
</span>
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if .Params.Cover }}
|
|
||||||
<figure class="post-cover">
|
|
||||||
{{- $img := imageConfig (printf "static/%s" .Params.Cover) }}
|
|
||||||
|
|
||||||
{{- if .Params.UseRelativeCover }}
|
|
||||||
<img src="{{ (printf "%s%s" .Permalink .Params.Cover ) }}" alt="{{ .Title | plainify | default " " }}"
|
|
||||||
width="{{ $img.Width }}" height="{{ $img.Height }}" />
|
|
||||||
{{- else }}
|
|
||||||
<img src="{{ .Params.Cover | absURL }}" alt="{{ .Title | plainify | default " " }}"
|
|
||||||
width="{{ $img.Width }}" height="{{ $img.Height }}" />
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if .Params.CoverCaption }}
|
|
||||||
<figcaption class="center">{{ .Params.CoverCaption | markdownify }}</figcaption>
|
|
||||||
{{- end }}
|
|
||||||
</figure>
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
<div class="post-content">
|
|
||||||
{{- with .Description }}
|
|
||||||
{{ . | markdownify }}
|
|
||||||
{{- else }}
|
|
||||||
{{- if .Truncated }}
|
|
||||||
{{ .Summary | markdownify }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
</div>
|
|
||||||
{{- if not .Params.hideReadMore }}
|
|
||||||
<div><a class="read-more button" href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore | default "Read more" }}
|
|
||||||
→</a></div>
|
|
||||||
{{- end }}
|
|
||||||
</div>
|
</div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user