From 77f6393c7675e2db18438c9f7c4075552ba278b6 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Fri, 25 Mar 2022 16:28:57 +0100 Subject: [PATCH] word/memory: adjust grid count to fit size --- word/memory.js | 12 +++++++----- word/memory.plp | 19 ++++--------------- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/word/memory.js b/word/memory.js index 89fd853..ac1e829 100644 --- a/word/memory.js +++ b/word/memory.js @@ -60,11 +60,13 @@ class WordMemory extends WordQuiz { let cards; if (this.words) { - const formstyle = window.getComputedStyle(this.form) - const gridsize = [ - formstyle['grid-template-rows'], formstyle['grid-template-columns'] - ].map(val => val.match(/ /g).length + 1).reduce((x, y) => x * y) / 2; - cards = this.words.splice(0, gridsize || 6).map(row => row[2]); + const aspect = this.form.clientWidth / window.innerHeight; + //TODO image ratio + let count = 35; + let cols = Math.round(Math.sqrt(count) * aspect**.5); + count = cols * Math.ceil(count / cols); + this.form.style['grid-template-columns'] = `repeat(${cols}, 1fr)`; + cards = this.words.splice(0, count>>1).map(row => row[2]); cards.push(...cards.map(val => -val)); } else { diff --git a/word/memory.plp b/word/memory.plp index d15d619..65184d8 100644 --- a/word/memory.plp +++ b/word/memory.plp @@ -11,25 +11,17 @@ Html({ /* cards */ #quiz { display: grid; - grid: repeat(3, 1fr) / repeat(4, 1fr); + grid: auto / repeat(6, 1fr); grid-gap: 1ex; - min-height: calc(100vh - 11.5ex); -} -@media (orientation: portrait) { - #quiz { - grid: repeat(6, 1fr) / repeat(2, 1fr); - } } html { overflow: hidden; /* rotation overflow on celebration */ } figure { - display: inline-block; background: #224; border: 1px solid #888; perspective: 100em; - position: relative; } figure:not(.turn):hover { cursor: pointer; @@ -44,7 +36,9 @@ figure img { -webkit-backface-visibility: hidden; transform: rotateY(180deg); /* back */ transform-style: preserve-3d; - -float: left; /* ff workaround to prevent click selection */ + float: left; /* ff workaround to prevent click selection */ + height: 100%; + object-fit: contain; /* center */ } figure.mirror img { transform: rotateY(180deg) scaleX(-1); @@ -79,10 +73,5 @@ figure.good { EOT }); -if (my $gridsize = $get{grid}) { - printf "", - reverse split /\D+/, $gridsize; - say ''; -} say '

memory

'; say ""; -- 2.30.0