From 30c70b597be7b81e2243b0b3aab95c3c368329ed Mon Sep 17 00:00:00 2001 From: EndMove Date: Sun, 23 Oct 2022 22:14:15 +0200 Subject: [PATCH] fixing mobile compatibility --- README.md | 4 +- assets/style/helpers.scss | 4 +- assets/style/main.css | 258 +++++++++++++++++++------------------- assets/style/main.scss | 4 +- 4 files changed, 137 insertions(+), 133 deletions(-) diff --git a/README.md b/README.md index 48f84a9..d6c433a 100644 --- a/README.md +++ b/README.md @@ -10,4 +10,6 @@ The production version is available at [https://2048.g.endmove.eu](https://2048. ## To contribut -Run `npm install` in the repository directory. To build SCSS run `npm run build`. ** WARN **: don't edit ``.css`` file but only ``.scss``. \ No newline at end of file +~~Run `npm install` in the repository directory. To build SCSS run `npm run build`. ** WARN **: don't edit ``.css`` file but only ``.scss``.~~ + +> Warning: The SCSS is old and needs to be rebuilt from scratch, please do not build it with npm run build, it destroys the mobile compatibility. \ No newline at end of file diff --git a/assets/style/helpers.scss b/assets/style/helpers.scss index 58e65b3..ae358ae 100644 --- a/assets/style/helpers.scss +++ b/assets/style/helpers.scss @@ -52,7 +52,7 @@ transform: $args; } -//Keyframe animations +// Keyframe animations //it's normal if var is undefined ;-) @mixin keyframes($animation-name) { @-webkit-keyframes $animation-name { @@ -80,4 +80,4 @@ display: block; clear: both; } -} +} \ No newline at end of file diff --git a/assets/style/main.css b/assets/style/main.css index db67a0a..0109624 100644 --- a/assets/style/main.css +++ b/assets/style/main.css @@ -3,7 +3,7 @@ html, body { margin: 0; padding: 0; background: #faf8ef; - color: #776E65; + color: #776e65; font-family: "Clear Sans", "Helvetica Neue", Arial, sans-serif; font-size: 18px; } @@ -22,30 +22,30 @@ h1.title { display: block; float: left; } -@-webkit-keyframes $animation-name { +@-webkit-keyframes move-up { 0% { top: 25px; opacity: 1; } + 100% { top: -50px; opacity: 0; } } - -@-moz-keyframes $animation-name { +@-moz-keyframes move-up { 0% { top: 25px; opacity: 1; } + 100% { top: -50px; opacity: 0; } } - -@keyframes $animation-name { +@keyframes move-up { 0% { top: 25px; opacity: 1; } + 100% { top: -50px; opacity: 0; } } - .scores-container { float: right; text-align: right; } @@ -101,7 +101,7 @@ p { line-height: 1.65; } a { - color: #776E65; + color: #776e65; font-weight: bold; text-decoration: underline; cursor: pointer; } @@ -119,24 +119,24 @@ hr { width: 500px; margin: 0 auto; } -@-webkit-keyframes $animation-name { +@-webkit-keyframes fade-in { 0% { opacity: 0; } + 100% { opacity: 1; } } - -@-moz-keyframes $animation-name { +@-moz-keyframes fade-in { 0% { opacity: 0; } + 100% { opacity: 1; } } - -@keyframes $animation-name { +@keyframes fade-in { 0% { opacity: 0; } + 100% { opacity: 1; } } - .game-container { margin-top: 40px; position: relative; @@ -232,97 +232,81 @@ hr { width: 107px; height: 107px; line-height: 107px; } - .tile.tile-position-1-1 { -webkit-transform: translate(0px, 0px); -moz-transform: translate(0px, 0px); -ms-transform: translate(0px, 0px); transform: translate(0px, 0px); } - .tile.tile-position-1-2 { -webkit-transform: translate(0px, 121px); -moz-transform: translate(0px, 121px); -ms-transform: translate(0px, 121px); transform: translate(0px, 121px); } - .tile.tile-position-1-3 { -webkit-transform: translate(0px, 242px); -moz-transform: translate(0px, 242px); -ms-transform: translate(0px, 242px); transform: translate(0px, 242px); } - .tile.tile-position-1-4 { -webkit-transform: translate(0px, 363px); -moz-transform: translate(0px, 363px); -ms-transform: translate(0px, 363px); transform: translate(0px, 363px); } - .tile.tile-position-2-1 { -webkit-transform: translate(121px, 0px); -moz-transform: translate(121px, 0px); -ms-transform: translate(121px, 0px); transform: translate(121px, 0px); } - .tile.tile-position-2-2 { -webkit-transform: translate(121px, 121px); -moz-transform: translate(121px, 121px); -ms-transform: translate(121px, 121px); transform: translate(121px, 121px); } - .tile.tile-position-2-3 { -webkit-transform: translate(121px, 242px); -moz-transform: translate(121px, 242px); -ms-transform: translate(121px, 242px); transform: translate(121px, 242px); } - .tile.tile-position-2-4 { -webkit-transform: translate(121px, 363px); -moz-transform: translate(121px, 363px); -ms-transform: translate(121px, 363px); transform: translate(121px, 363px); } - .tile.tile-position-3-1 { -webkit-transform: translate(242px, 0px); -moz-transform: translate(242px, 0px); -ms-transform: translate(242px, 0px); transform: translate(242px, 0px); } - .tile.tile-position-3-2 { -webkit-transform: translate(242px, 121px); -moz-transform: translate(242px, 121px); -ms-transform: translate(242px, 121px); transform: translate(242px, 121px); } - .tile.tile-position-3-3 { -webkit-transform: translate(242px, 242px); -moz-transform: translate(242px, 242px); -ms-transform: translate(242px, 242px); transform: translate(242px, 242px); } - .tile.tile-position-3-4 { -webkit-transform: translate(242px, 363px); -moz-transform: translate(242px, 363px); -ms-transform: translate(242px, 363px); transform: translate(242px, 363px); } - .tile.tile-position-4-1 { -webkit-transform: translate(363px, 0px); -moz-transform: translate(363px, 0px); -ms-transform: translate(363px, 0px); transform: translate(363px, 0px); } - .tile.tile-position-4-2 { -webkit-transform: translate(363px, 121px); -moz-transform: translate(363px, 121px); -ms-transform: translate(363px, 121px); transform: translate(363px, 121px); } - .tile.tile-position-4-3 { -webkit-transform: translate(363px, 242px); -moz-transform: translate(363px, 242px); -ms-transform: translate(363px, 242px); transform: translate(363px, 242px); } - .tile.tile-position-4-4 { -webkit-transform: translate(363px, 363px); -moz-transform: translate(363px, 363px); @@ -348,40 +332,40 @@ hr { background: #eee4da; box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0), inset 0 0 0 1px rgba(255, 255, 255, 0); } .tile.tile-4 .tile-inner { - background: #eee1c9; + background: #ede0c8; box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0), inset 0 0 0 1px rgba(255, 255, 255, 0); } .tile.tile-8 .tile-inner { color: #f9f6f2; - background: #f3b27a; } + background: #f2b179; } .tile.tile-16 .tile-inner { color: #f9f6f2; - background: #f69664; } + background: #f59563; } .tile.tile-32 .tile-inner { color: #f9f6f2; - background: #f77c5f; } + background: #f67c5f; } .tile.tile-64 .tile-inner { color: #f9f6f2; - background: #f75f3b; } + background: #f65e3b; } .tile.tile-128 .tile-inner { color: #f9f6f2; - background: #edd073; - box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.238095), inset 0 0 0 1px rgba(255, 255, 255, 0.142857); + background: #edcf72; + box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.2381), inset 0 0 0 1px rgba(255, 255, 255, 0.14286); font-size: 45px; } @media screen and (max-width: 520px) { .tile.tile-128 .tile-inner { font-size: 25px; } } .tile.tile-256 .tile-inner { color: #f9f6f2; - background: #edcc62; - box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.31746), inset 0 0 0 1px rgba(255, 255, 255, 0.190476); + background: #edcc61; + box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.31746), inset 0 0 0 1px rgba(255, 255, 255, 0.19048); font-size: 45px; } @media screen and (max-width: 520px) { .tile.tile-256 .tile-inner { font-size: 25px; } } .tile.tile-512 .tile-inner { color: #f9f6f2; - background: #edc950; - box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.396825), inset 0 0 0 1px rgba(255, 255, 255, 0.238095); + background: #edc850; + box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.39683), inset 0 0 0 1px rgba(255, 255, 255, 0.2381); font-size: 45px; } @media screen and (max-width: 520px) { .tile.tile-512 .tile-inner { @@ -389,7 +373,7 @@ hr { .tile.tile-1024 .tile-inner { color: #f9f6f2; background: #edc53f; - box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.47619), inset 0 0 0 1px rgba(255, 255, 255, 0.285714); + box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.47619), inset 0 0 0 1px rgba(255, 255, 255, 0.28571); font-size: 35px; } @media screen and (max-width: 520px) { .tile.tile-1024 .tile-inner { @@ -397,61 +381,61 @@ hr { .tile.tile-2048 .tile-inner { color: #f9f6f2; background: #edc22e; - box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.555556), inset 0 0 0 1px rgba(255, 255, 255, 0.333333); + box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.55556), inset 0 0 0 1px rgba(255, 255, 255, 0.33333); font-size: 35px; } @media screen and (max-width: 520px) { .tile.tile-2048 .tile-inner { font-size: 15px; } } .tile.tile-super .tile-inner { color: #f9f6f2; - background: #3c3a33; + background: #3c3a32; font-size: 30px; } @media screen and (max-width: 520px) { .tile.tile-super .tile-inner { font-size: 10px; } } -@-webkit-keyframes $animation-name { +@-webkit-keyframes appear { 0% { opacity: 0; -webkit-transform: scale(0); -moz-transform: scale(0); -ms-transform: scale(0); transform: scale(0); } + 100% { opacity: 1; -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } } - -@-moz-keyframes $animation-name { +@-moz-keyframes appear { 0% { opacity: 0; -webkit-transform: scale(0); -moz-transform: scale(0); -ms-transform: scale(0); transform: scale(0); } + 100% { opacity: 1; -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } } - -@keyframes $animation-name { +@keyframes appear { 0% { opacity: 0; -webkit-transform: scale(0); -moz-transform: scale(0); -ms-transform: scale(0); transform: scale(0); } + 100% { opacity: 1; -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } } - .tile-new .tile-inner { -webkit-animation: appear 200ms ease 100ms; -moz-animation: appear 200ms ease 100ms; @@ -460,57 +444,60 @@ hr { -moz-animation-fill-mode: backwards; animation-fill-mode: backwards; } -@-webkit-keyframes $animation-name { +@-webkit-keyframes pop { 0% { -webkit-transform: scale(0); -moz-transform: scale(0); -ms-transform: scale(0); transform: scale(0); } + 50% { -webkit-transform: scale(1.2); -moz-transform: scale(1.2); -ms-transform: scale(1.2); transform: scale(1.2); } + 100% { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } } - -@-moz-keyframes $animation-name { +@-moz-keyframes pop { 0% { -webkit-transform: scale(0); -moz-transform: scale(0); -ms-transform: scale(0); transform: scale(0); } + 50% { -webkit-transform: scale(1.2); -moz-transform: scale(1.2); -ms-transform: scale(1.2); transform: scale(1.2); } + 100% { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } } - -@keyframes $animation-name { +@keyframes pop { 0% { -webkit-transform: scale(0); -moz-transform: scale(0); -ms-transform: scale(0); transform: scale(0); } + 50% { -webkit-transform: scale(1.2); -moz-transform: scale(1.2); -ms-transform: scale(1.2); transform: scale(1.2); } + 100% { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } } - .tile-merged .tile-inner { z-index: 20; -webkit-animation: pop 200ms ease 100ms; @@ -549,36 +536,44 @@ hr { @media screen and (max-width: 520px) { html, body { font-size: 15px; } + body { margin: 20px 0; padding: 0 20px; } + h1.title { font-size: 27px; margin-top: 15px; } + .container { width: 280px; margin: 0 auto; } + .score-container, .best-container { margin-top: 0; padding: 15px 10px; min-width: 40px; } + .heading { margin-bottom: 10px; } + .game-intro { width: 55%; display: block; box-sizing: border-box; line-height: 1.65; } + .restart-button { width: 42%; padding: 0; display: block; box-sizing: border-box; margin-top: 2px; } + .game-container { - margin-top: 40px; + margin-top: 17px; position: relative; - padding: 15px; + padding: 10px; cursor: default; -webkit-touch-callout: none; -ms-touch-callout: none; @@ -589,8 +584,8 @@ hr { touch-action: none; background: #bbada0; border-radius: 6px; - width: 500px; - height: 500px; + width: 280px; + height: 280px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } @@ -638,119 +633,126 @@ hr { display: inline-block; } .game-container .game-message.game-won, .game-container .game-message.game-over { display: block; } + .grid-container { position: absolute; z-index: 1; } + .grid-row { - margin-bottom: 15px; } + margin-bottom: 10px; } .grid-row:last-child { margin-bottom: 0; } .grid-row:after { content: ""; display: block; clear: both; } + .grid-cell { - width: 106.25px; - height: 106.25px; - margin-right: 15px; + width: 57.5px; + height: 57.5px; + margin-right: 10px; float: left; border-radius: 3px; background: rgba(238, 228, 218, 0.35); } .grid-cell:last-child { margin-right: 0; } + .tile-container { position: absolute; z-index: 2; } + .tile, .tile .tile-inner { - width: 107px; - height: 107px; - line-height: 107px; } + width: 58px; + height: 58px; + line-height: 58px; } .tile.tile-position-1-1 { -webkit-transform: translate(0px, 0px); -moz-transform: translate(0px, 0px); -ms-transform: translate(0px, 0px); transform: translate(0px, 0px); } .tile.tile-position-1-2 { - -webkit-transform: translate(0px, 121px); - -moz-transform: translate(0px, 121px); - -ms-transform: translate(0px, 121px); - transform: translate(0px, 121px); } + -webkit-transform: translate(0px, 67px); + -moz-transform: translate(0px, 67px); + -ms-transform: translate(0px, 67px); + transform: translate(0px, 67px); } .tile.tile-position-1-3 { - -webkit-transform: translate(0px, 242px); - -moz-transform: translate(0px, 242px); - -ms-transform: translate(0px, 242px); - transform: translate(0px, 242px); } + -webkit-transform: translate(0px, 135px); + -moz-transform: translate(0px, 135px); + -ms-transform: translate(0px, 135px); + transform: translate(0px, 135px); } .tile.tile-position-1-4 { - -webkit-transform: translate(0px, 363px); - -moz-transform: translate(0px, 363px); - -ms-transform: translate(0px, 363px); - transform: translate(0px, 363px); } + -webkit-transform: translate(0px, 202px); + -moz-transform: translate(0px, 202px); + -ms-transform: translate(0px, 202px); + transform: translate(0px, 202px); } .tile.tile-position-2-1 { - -webkit-transform: translate(121px, 0px); - -moz-transform: translate(121px, 0px); - -ms-transform: translate(121px, 0px); - transform: translate(121px, 0px); } + -webkit-transform: translate(67px, 0px); + -moz-transform: translate(67px, 0px); + -ms-transform: translate(67px, 0px); + transform: translate(67px, 0px); } .tile.tile-position-2-2 { - -webkit-transform: translate(121px, 121px); - -moz-transform: translate(121px, 121px); - -ms-transform: translate(121px, 121px); - transform: translate(121px, 121px); } + -webkit-transform: translate(67px, 67px); + -moz-transform: translate(67px, 67px); + -ms-transform: translate(67px, 67px); + transform: translate(67px, 67px); } .tile.tile-position-2-3 { - -webkit-transform: translate(121px, 242px); - -moz-transform: translate(121px, 242px); - -ms-transform: translate(121px, 242px); - transform: translate(121px, 242px); } + -webkit-transform: translate(67px, 135px); + -moz-transform: translate(67px, 135px); + -ms-transform: translate(67px, 135px); + transform: translate(67px, 135px); } .tile.tile-position-2-4 { - -webkit-transform: translate(121px, 363px); - -moz-transform: translate(121px, 363px); - -ms-transform: translate(121px, 363px); - transform: translate(121px, 363px); } + -webkit-transform: translate(67px, 202px); + -moz-transform: translate(67px, 202px); + -ms-transform: translate(67px, 202px); + transform: translate(67px, 202px); } .tile.tile-position-3-1 { - -webkit-transform: translate(242px, 0px); - -moz-transform: translate(242px, 0px); - -ms-transform: translate(242px, 0px); - transform: translate(242px, 0px); } + -webkit-transform: translate(135px, 0px); + -moz-transform: translate(135px, 0px); + -ms-transform: translate(135px, 0px); + transform: translate(135px, 0px); } .tile.tile-position-3-2 { - -webkit-transform: translate(242px, 121px); - -moz-transform: translate(242px, 121px); - -ms-transform: translate(242px, 121px); - transform: translate(242px, 121px); } + -webkit-transform: translate(135px, 67px); + -moz-transform: translate(135px, 67px); + -ms-transform: translate(135px, 67px); + transform: translate(135px, 67px); } .tile.tile-position-3-3 { - -webkit-transform: translate(242px, 242px); - -moz-transform: translate(242px, 242px); - -ms-transform: translate(242px, 242px); - transform: translate(242px, 242px); } + -webkit-transform: translate(135px, 135px); + -moz-transform: translate(135px, 135px); + -ms-transform: translate(135px, 135px); + transform: translate(135px, 135px); } .tile.tile-position-3-4 { - -webkit-transform: translate(242px, 363px); - -moz-transform: translate(242px, 363px); - -ms-transform: translate(242px, 363px); - transform: translate(242px, 363px); } + -webkit-transform: translate(135px, 202px); + -moz-transform: translate(135px, 202px); + -ms-transform: translate(135px, 202px); + transform: translate(135px, 202px); } .tile.tile-position-4-1 { - -webkit-transform: translate(363px, 0px); - -moz-transform: translate(363px, 0px); - -ms-transform: translate(363px, 0px); - transform: translate(363px, 0px); } + -webkit-transform: translate(202px, 0px); + -moz-transform: translate(202px, 0px); + -ms-transform: translate(202px, 0px); + transform: translate(202px, 0px); } .tile.tile-position-4-2 { - -webkit-transform: translate(363px, 121px); - -moz-transform: translate(363px, 121px); - -ms-transform: translate(363px, 121px); - transform: translate(363px, 121px); } + -webkit-transform: translate(202px, 67px); + -moz-transform: translate(202px, 67px); + -ms-transform: translate(202px, 67px); + transform: translate(202px, 67px); } .tile.tile-position-4-3 { - -webkit-transform: translate(363px, 242px); - -moz-transform: translate(363px, 242px); - -ms-transform: translate(363px, 242px); - transform: translate(363px, 242px); } + -webkit-transform: translate(202px, 135px); + -moz-transform: translate(202px, 135px); + -ms-transform: translate(202px, 135px); + transform: translate(202px, 135px); } .tile.tile-position-4-4 { - -webkit-transform: translate(363px, 363px); - -moz-transform: translate(363px, 363px); - -ms-transform: translate(363px, 363px); - transform: translate(363px, 363px); } + -webkit-transform: translate(202px, 202px); + -moz-transform: translate(202px, 202px); + -ms-transform: translate(202px, 202px); + transform: translate(202px, 202px); } + .tile .tile-inner { font-size: 35px; } + .game-message p { font-size: 30px !important; height: 30px !important; line-height: 30px !important; margin-top: 90px !important; } .game-message .lower { - margin-top: 30px !important; } } + margin-top: 30px !important; } } \ No newline at end of file diff --git a/assets/style/main.scss b/assets/style/main.scss index 96b8513..8102244 100644 --- a/assets/style/main.scss +++ b/assets/style/main.scss @@ -32,7 +32,7 @@ html, body { } body { - margin: 40px 0; + margin: 80px 0; } .heading { @@ -546,4 +546,4 @@ hr { margin-top: 30px !important; } } -} +} \ No newline at end of file