Mercurial > qr-html
comparison index.html @ 14:1fbe0b098f0f
Adjust styling
- max 256px
- 8px padding
- plain line instead of hr (more precise margin)
| author | nanaya <me@nanaya.net> |
|---|---|
| date | Wed, 11 Sep 2024 21:27:58 +0900 |
| parents | a8e0607093f3 |
| children | d6a6c128cd5a |
comparison
equal
deleted
inserted
replaced
| 13:a56d5a527f6c | 14:1fbe0b098f0f |
|---|---|
| 17 font-size: 12px; | 17 font-size: 12px; |
| 18 } | 18 } |
| 19 | 19 |
| 20 body { | 20 body { |
| 21 margin: 0; | 21 margin: 0; |
| 22 padding: 10px; | 22 padding: 8px; |
| 23 height: 100%; | 23 height: 100%; |
| 24 } | 24 } |
| 25 | 25 |
| 26 .inputbox { | 26 .inputbox { |
| 27 width: 100%; | 27 width: 100%; |
| 28 margin-bottom: 10px; | 28 margin-bottom: 8px; |
| 29 resize: vertical; | 29 resize: vertical; |
| 30 font-family: Courier New, monospace; | 30 font-family: Courier New, monospace; |
| 31 /* prevent ios zoom */ | 31 /* prevent ios zoom */ |
| 32 font-size: 16px; | 32 font-size: 16px; |
| 33 } | 33 } |
| 35 .page { | 35 .page { |
| 36 width: 100%; | 36 width: 100%; |
| 37 min-height: 100%; | 37 min-height: 100%; |
| 38 max-width: 600px; | 38 max-width: 600px; |
| 39 margin: 0 auto; | 39 margin: 0 auto; |
| 40 display: flex; | 40 display: grid; |
| 41 flex-direction: column; | 41 grid-template-rows: 1fr auto; |
| 42 padding: 10px; | 42 gap: 8px; |
| 43 } | 43 } |
| 44 | 44 |
| 45 .page__main { | 45 .page__footer { |
| 46 flex: 1; | 46 border-top: 1px solid #333; |
| 47 padding-top: 8px; | |
| 47 } | 48 } |
| 48 | 49 |
| 49 .outputbox { | 50 .outputbox { |
| 50 will-change: opacity; | 51 max-width: 256px; |
| 51 } | |
| 52 | |
| 53 .outputbox.js-hidden { | |
| 54 opacity: 0; | |
| 55 } | 52 } |
| 56 | 53 |
| 57 .outputbox > canvas { | 54 .outputbox > canvas { |
| 58 display: none; | 55 display: none; |
| 59 } | 56 } |
| 60 | 57 |
| 61 .outputbox > img { | 58 .outputbox > img { |
| 62 max-width: 100%; | 59 max-width: 100%; |
| 63 max-height: calc(100vh - 250px); | |
| 64 } | 60 } |
| 65 | 61 |
| 66 .title { | 62 .title { |
| 67 font-size: 16px; | 63 font-size: 16px; |
| 68 } | 64 } |
| 80 <textarea class="inputbox js-qr-input" rows="4" autofocus></textarea> | 76 <textarea class="inputbox js-qr-input" rows="4" autofocus></textarea> |
| 81 | 77 |
| 82 <div class="outputbox js-qr-output"></div> | 78 <div class="outputbox js-qr-output"></div> |
| 83 </div> | 79 </div> |
| 84 | 80 |
| 85 <div> | 81 <div class="page__footer"> |
| 86 <hr> | |
| 87 | |
| 88 <a href="https://hg.sr.ht/~nanaya/qr-html">Source</a> | 82 <a href="https://hg.sr.ht/~nanaya/qr-html">Source</a> |
| 89 </div> | 83 </div> |
| 90 </div> | 84 </div> |
| 91 | 85 |
| 92 <script src="qrcode.min.js"></script> | 86 <script src="qrcode.min.js"></script> |
| 93 | 87 |
| 94 <script> | 88 <script> |
| 95 var inputDom = document.querySelector(".js-qr-input") | 89 var inputDom = document.querySelector(".js-qr-input") |
| 96 var outputDom = document.querySelector(".js-qr-output") | 90 var outputDom = document.querySelector(".js-qr-output") |
| 97 var qr = new QRCode(outputDom, { correctLevel: QRCode.CorrectLevel.L, width: 1024, height: 1024 }) | 91 var qr = new QRCode(outputDom, { correctLevel: QRCode.CorrectLevel.L, width: 256, height: 256 }) |
| 98 | 92 |
| 99 var runTimeout = null | 93 var runTimeout = null |
| 100 var debouncedRefreshCode = function() { | |
| 101 clearTimeout(runTimeout) | |
| 102 runTimeout = setTimeout(refreshCode, 100) | |
| 103 } | |
| 104 | 94 |
| 105 var refreshCode = function() { | 95 var refreshCode = function() { |
| 106 var text = inputDom.value | 96 var text = inputDom.value |
| 107 | 97 |
| 108 if (text !== "") { | 98 if (text === "") { |
| 99 outputDom.style.display = 'none'; | |
| 100 } else { | |
| 101 outputDom.style.display = 'block'; | |
| 109 qr.makeCode(text) | 102 qr.makeCode(text) |
| 110 outputDom.classList.remove('js-hidden') | |
| 111 } else { | |
| 112 outputDom.classList.add('js-hidden') | |
| 113 } | 103 } |
| 114 } | 104 } |
| 115 | 105 |
| 116 inputDom.addEventListener('input', debouncedRefreshCode) | 106 inputDom.addEventListener('input', refreshCode) |
| 117 refreshCode() | 107 refreshCode() |
| 118 </script> | 108 </script> |
| 119 </body> | 109 </body> |
