From ac768babae2322e639c300c9276a703f8209f6e5 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Mon, 28 Oct 2024 18:49:33 -0700 Subject: [PATCH] CSS Stylize the calculator page. --- ch32v/lib/AudioLinkMono-Bold.ttf | Bin 0 -> 61228 bytes ch32v/lib/calculator.css | 315 +++++++++++++++++++++++++++++++ ch32v/lib/calculator.html | 57 +++--- 3 files changed, 346 insertions(+), 26 deletions(-) create mode 100644 ch32v/lib/AudioLinkMono-Bold.ttf create mode 100644 ch32v/lib/calculator.css diff --git a/ch32v/lib/AudioLinkMono-Bold.ttf b/ch32v/lib/AudioLinkMono-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1331d4e00346ce7077e7a0c9a4c99abd470097de GIT binary patch literal 61228 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

9O_D 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 literal 0 HcmV?d00001 diff --git a/ch32v/lib/calculator.css b/ch32v/lib/calculator.css new file mode 100644 index 0000000..2d63bf6 --- /dev/null +++ b/ch32v/lib/calculator.css @@ -0,0 +1,315 @@ +/* +Copyright (c) 2024 by Brett Schwickerath (https://codepen.io/schwiiiii/pen/wvVqLmX) +Modified +Copyright (c) 2024 by cnlohr + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +@font-face { + font-family: 'AudioLink'; + src: url('AudioLinkMono-Bold.ttf') format('truetype') +} + +@property --dark { + syntax: ""; + inherits: true; + initial-value: #111; +} + +@property --light { + syntax: ""; + inherits: true; + initial-value: white; +} + +:root { + color-scheme: dark; + --gl: radial-gradient(circle 1px at 0px 0px, var(--light) 1px, transparent 0); + --gd: radial-gradient(circle 1px at 0px 0px, var(--dark) 1px, transparent 0); + --bg-0: var(--dark); + --bg-1: var(--gl) 0px 0px / 4px 4px, var(--dark); + --bg-2: var(--gl) 0px 0px / 4px 4px, var(--gl) 2px 2px / 4px 4px, var(--dark); + --bg-3: var(--gl) 0px 0px / 2px 2px, var(--dark); + --bg-4: var(--gl) 0px 0px / 2px 2px, var(--gl) 1px 1px / 2px 2px, var(--dark); + --bg-5: var(--gd) 0px 0px / 2px 2px, var(--light); + --bg-6: var(--gd) 0px 0px / 4px 4px, var(--gd) 2px 2px / 4px 4px, var(--light); + --bg-7: var(--gd) 0px 0px / 4px 4px, var(--light); + --bg-8: var(--light); + + --l-shadow: + -1px -1px 0 var(--dark), + 0 -1px 0 var(--dark), + 1px -1px 0 var(--dark), + 1px 0 0 var(--dark), + 1px 1px 0 var(--dark), + 0 1px 0 var(--dark), + -1px 1px 0 var(--dark), + -1px 0 0 var(--dark); + + --d-shadow: + -1px -1px 0 var(--light), + 0 -1px 0 var(--light), + 1px -1px 0 var(--light), + 1px 0 0 var(--light), + 1px 1px 0 var(--light), + 0 1px 0 var(--light), + -1px 1px 0 var(--light), + -1px 0 0 var(--light); + + --drop-shadow: + drop-shadow(-1px -1px 0 var(--light)) + drop-shadow(0 -1px 0 var(--light)) + drop-shadow(1px -1px 0 var(--light)) + drop-shadow(1px 0 0 var(--light)) + drop-shadow(1px 1px 0 var(--light)) + drop-shadow(0 1px 0 var(--light)) + drop-shadow(-1px 1px 0 var(--light)) + drop-shadow(-1px 0 0 var(--light)); +} + +* { + box-sizing: border-box; + font-family: "AudioLink", monospace; + text-rendering: optimizeSpeed; + font-size: inherit; + color: light-dark(var(--dark), var(--light)); +} + +html { + /*font-size: 1vmin;*/ + /* animation: + adjust-light 17s linear infinite both, + adjust-dark 11s linear infinite both; */ +} + +body { + margin: 0; + min-height: 100vh; + display: flex; + flex-direction: column; + /* + justify-content: center; + align-items: center; + */ + gap: 4rem; + background: var(--dark); +} + +.shades { + display: inline-flex; + gap: 1rem; +} + +.shade { + height: calc(80rem / 9); + width: calc(80rem / 9); + border-radius: 50%; + border: 3px solid var(--light); + + &:nth-child(1) { background: var(--bg-0); } + &:nth-child(2) { background: var(--bg-1); } + &:nth-child(3) { background: var(--bg-2); } + &:nth-child(4) { background: var(--bg-3); } + &:nth-child(5) { background: var(--bg-4); } + &:nth-child(6) { background: var(--bg-5); } + &:nth-child(7) { background: var(--bg-6); } + &:nth-child(8) { background: var(--bg-7); } + &:nth-child(9) { background: var(--bg-8); } +} + +form { + font-size: 2rem; + background: var(--bg-4); + padding: 2rem; + border-radius: 2rem; + display: flex; + flex-direction: column; + gap: 1rem; + border: 3px var(--light) solid; +} + +label { + background: var(--bg-1); + display: flex; + flex-direction: column; + gap: .5rem; + padding: 1rem; + border-radius: 1rem; + text-shadow: var(--l-shadow); + border: 1px var(--light) solid; + color: var(--light); +} + + +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; +} + +/*.scrollwheel_tune{*/ +input[type=number] { + background: var(--bg-0); + outline: 0; + /*text-indent: 12px;*/ + padding-top: 1rem; + padding-bottom: 1rem; + padding-left: 1.1rem; + padding-right: 1.0rem; + text-shadow: var(--l-shadow); + border: 1px var(--light) solid; + animation: dark-to-light 200ms ease-out forwards; + transition: 200ms ease-out; + border-radius: 1.5rem; + &:hover { + animation: light-to-dark 200ms linear forwards; + color: var(--dark); + text-shadow: var(--d-shadow); + } +} + + +textarea,input:not([type='number']) { + background: var(--bg-0); + border: 0; + overflow:hidden; + outline: 0; + border-radius: .8rem; + padding: .5rem; + text-shadow: var(--l-shadow); + border: 1px var(--light) solid; + animation: dark-to-light 200ms ease-out forwards; + transition: 200ms ease-out; + + &:hover { + animation: light-to-dark 200ms linear forwards; + color: var(--dark); + text-shadow: var(--d-shadow); + } +} + +button, input[type=submit] { + background: var(--bg-0); + border: 0; + outline: 0; + border-radius: 2rem; + padding: .7rem; + font-weight: bold; + text-shadow: var(--l-shadow); + cursor: pointer; + border: 1px var(--light) solid; + color: var(--light); + animation: dark-to-light 200ms ease-out forwards; + transition: 200ms ease-out; + + &:hover { + animation: light-to-dark 200ms linear forwards; + color: var(--dark); + text-shadow: var(--d-shadow); + } +} + +.cube-wrapper { + --size: 8rem; + margin-top: 2rem; + perspective: 200px; + perspective-origin: 50% 0%; + filter: var(--drop-shadow); +} + +.cube { + height: var(--size); + width: var(--size); + position: relative; + transform-style: preserve-3d; + transform-origin: 50% 50% calc(var(--size) * .5); + animation: rotate 10s linear infinite; +} + +.face { + position: absolute; + height: var(--size); + width: var(--size); + transform-style: preserve-3d; + transform-origin: 50% 50% calc(var(--size) * .5); + + &:nth-child(1) { transform: rotateY(90deg); background: var(--bg-2); } + &:nth-child(2) { transform: rotateY(180deg); background: var(--bg-3) } + &:nth-child(3) { transform: rotateY(-90deg); background: var(--bg-4) } + &:nth-child(4) { transform: rotateX(90deg); background: var(--bg-5) } + &:nth-child(5) { transform: rotateX(-90deg); background: var(--bg-6) } + &:nth-child(6) { background: var(--bg-7) } +} + +@keyframes light-to-dark { + 0% { background: var(--bg-0); } + 12.5% { background: var(--bg-1); } + 25% { background: var(--bg-2); } + 37.5% { background: var(--bg-3); } + 50% { background: var(--bg-4); } + 62.5% { background: var(--bg-5); } + 75% { background: var(--bg-6); } + 87.5% { background: var(--bg-7); } + 100% { background: var(--bg-8); } +} + +@keyframes dark-to-light { + 0% { background: var(--bg-8); } + 12.5% { background: var(--bg-7); } + 25% { background: var(--bg-6); } + 37.5% { background: var(--bg-5); } + 50% { background: var(--bg-4); } + 62.5% { background: var(--bg-3); } + 75% { background: var(--bg-2); } + 87.5% { background: var(--bg-1); } + 100% { background: var(--bg-0); } +} + +@keyframes rotate { + from { transform: rotateY(0) rotateX(1turn) rotateZ(0) } + to { transform: rotateY(1turn) rotateX(0) rotateZ(1turn) } +} + +@keyframes adjust-dark { + 0% { --dark: hsl(0turn, 100%, 80%); } + 10% { --dark: hsl(.1turn, 100%, 80%); } + 20% { --dark: hsl(.2turn, 100%, 80%); } + 30% { --dark: hsl(.3turn, 100%, 80%); } + 40% { --dark: hsl(.4turn, 100%, 80%); } + 50% { --dark: hsl(.5turn, 100%, 80%); } + 60% { --dark: hsl(.6turn, 100%, 80%); } + 70% { --dark: hsl(.7turn, 100%, 80%); } + 80% { --dark: hsl(.8turn, 100%, 80%); } + 90% { --dark: hsl(.9turn, 100%, 80%); } + 100% { --dark: hsl(1turn, 100%, 80%); } +} + +@keyframes adjust-light { + 0% { --light: hsl(0turn, 100%, 20%); } + 10% { --light: hsl(.1turn, 100%, 20%); } + 20% { --light: hsl(.2turn, 100%, 20%); } + 30% { --light: hsl(.3turn, 100%, 20%); } + 40% { --light: hsl(.4turn, 100%, 20%); } + 50% { --light: hsl(.5turn, 100%, 20%); } + 60% { --light: hsl(.6turn, 100%, 20%); } + 70% { --light: hsl(.7turn, 100%, 20%); } + 80% { --light: hsl(.8turn, 100%, 20%); } + 90% { --light: hsl(.9turn, 100%, 20%); } + 100% { --light: hsl(1turn, 100%, 20%); } +} + diff --git a/ch32v/lib/calculator.html b/ch32v/lib/calculator.html index 0c7db2e..5664903 100644 --- a/ch32v/lib/calculator.html +++ b/ch32v/lib/calculator.html @@ -2,10 +2,8 @@ + -