From 26c96f43417c358c8ac81b23d2a8b1ab824874c9 Mon Sep 17 00:00:00 2001 From: Yash Karandikar Date: Sun, 20 Mar 2022 19:16:28 -0500 Subject: [PATCH] Now cards can be flipped --- remembers/src/main.rs | 19 ++++++++++--- remembers/style.css | 64 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 4 deletions(-) diff --git a/remembers/src/main.rs b/remembers/src/main.rs index 1e07411..6931970 100644 --- a/remembers/src/main.rs +++ b/remembers/src/main.rs @@ -28,18 +28,29 @@ wasm_import_with_ns!(console, log(s: &str)); fn main() { sycamore::render(|ctx| { console_error_panic_hook::set_once(); + + let v: &Signal> = ctx.create_signal((0..12u8).collect()); let on_click = |event: Event| { - let elem = event.target().unwrap().dyn_ref::().unwrap().clone(); + let elem = event.current_target().unwrap().dyn_ref::().unwrap().clone(); elem.class_list().toggle("flip").unwrap(); }; view! {ctx, div(class="wrapper") { h1(class="text-align-center") { "RemembeRS" } - div(id="game") { - div(class="card", on:click=on_click) { - "Hello, world!" + section(id="game") { + Keyed { + iterable: v, + view: move |ctx, i| view! {ctx, + div(class="card", on:click=on_click) { + h2(class="back-face") { + (i) + } + div(class="front-face") + } + }, + key: |x| *x } } } diff --git a/remembers/style.css b/remembers/style.css index 0aeb973..7f5198e 100644 --- a/remembers/style.css +++ b/remembers/style.css @@ -9,3 +9,67 @@ text-align: center; } +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +body { + height: 100vh; + display: flex; +} + +#game { + width: 640px; + height: 640px; + margin: auto; + display: flex; + flex-wrap: wrap; + perspective: 1000px; +} + +.card { + width: calc(25% - 10px); /* minus 10px for the margin */ + height: calc(33.333% - 10px); + margin: 5px; + position: relative; + /* border: 1px #606c76 solid; */ + border: 1px black solid; + border-radius: 5px; + box-shadow: 1px 1px 1px rgba(0, 0, 0, .3); + transform: scale(1); + transform-style: preserve-3d; + transition: transform .5s; +} + +.card:active { + transform: scale(0.97); + transition: transform .2s; +} + +.card.flip { + transform: rotateY(180deg); +} + +.back-face, .front-face { + width: 100%; + height: 100%; + padding: 20px; + position: absolute; + border-radius: 5px; + backface-visibility: hidden; + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; +} + +.front-face { + background-color: #9b4dca; +} + +.back-face { + transform: rotateY(180deg); + display: flex; + align-items: center; + justify-content: center; +}