diff options
| author | 2024-01-21 18:11:41 +0800 | |
|---|---|---|
| committer | 2024-01-21 18:11:41 +0800 | |
| commit | 117ead56d30173987ae79fde09ec821fd2d05f4e (patch) | |
| tree | 429d49e5c57c4f3286e7d0498e14a88be84604f6 /pydis_site/static/css | |
| parent | Events: Fix title sizing and hidden-on-mobile group (diff) | |
Events: Use Masonry layout for gallery of events
Diffstat (limited to 'pydis_site/static/css')
| -rw-r--r-- | pydis_site/static/css/events/base.css | 65 | 
1 files changed, 65 insertions, 0 deletions
| diff --git a/pydis_site/static/css/events/base.css b/pydis_site/static/css/events/base.css index 3708bd57..b5cd69a3 100644 --- a/pydis_site/static/css/events/base.css +++ b/pydis_site/static/css/events/base.css @@ -23,3 +23,68 @@ pre {      border-radius: 10px;      max-width: 50%;  } + +/* CSS-only Masonry layout: + * https://tobiasahlin.com/blog/masonry-with-css/ + * + * Adapted for responsiveness: + * - Mobile   (<=700px)   No columns at all + * - Tablets  (700~900px) Two columns Masonry + * - Desktop+ (>=900px)   Three columns Masonry + */ +@media (min-width: 700px) { +    .event-gallery { +        display: flex; +        flex-flow: column wrap; +        align-content: space-between; +    } + +    @media (min-width: 900px) { +        /* 3 columns */ +        .event-gallery { +            /* Required. Must be only slightly taller than the tallest column */ +            height: 60rem; +        } + +        .event-gallery .box { +            width: calc(33% - 1rem); +            margin-bottom: 1rem; +        } + +        /* Reorder vertically */ +        .event-gallery .box:nth-child(3n+1) { order: 1; } +        .event-gallery .box:nth-child(3n+2) { order: 2; } +        .event-gallery .box:nth-child(3n)   { order: 3; } + +        /* 2 line breaks to force new columns, for each gap between the three columns. */ +        .event-gallery::before, .event-gallery::after { +            content: ""; +            flex-basis: 100%; +            width: 0; +            order: 2; +        } +    } + +    @media (max-width: 900px) { +        /* 2 columns */ +        .event-gallery { +            height: 80rem; +        } + +        .event-gallery .box { +            width: calc(50% - 1rem); +            margin-bottom: 1rem; +        } + +        .event-gallery .box:nth-child(2n+1) { order: 1; } +        .event-gallery .box:nth-child(2n)   { order: 2; } + +        /* 1 line break to force a new column, for the gap between the two columns. */ +        .event-gallery::before { +            content: ""; +            flex-basis: 100%; +            width: 0; +            order: 1; +        } +    } +} | 
