view index.html @ 5:461c6e7dea56

Better mobile handling
author nanaya <me@myconan.net>
date Sun, 15 Jan 2017 19:31:54 +0900
parents cc0a5142a56f
children 896b7f28d3ad
line wrap: on
line source

<!doctype html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>QR Code Generator</title>

    <style type="text/css">
        * {
            position: relative;
            box-sizing: border-box;
        }

        html {
            height: 100%;
            margin: 0;
            padding: 0;
            font-family: sans-serif;
            font-size: 12px;
        }

        body {
            margin: 0;
            padding: 10px;
            height: 100%;
        }

        .inputbox {
            width: 100%;
            margin-bottom: 10px;
            resize: vertical;
            font-family: monospace;
            /* prevent ios zoom */
            font-size: 16px;
        }

        .page {
            width: 100%;
            height: 100%;
            max-width: 600px;
            margin: 0 auto;
            display: flex;
            flex-direction: column;
            padding: 10px;
        }

        .page__main {
            flex: 1;
        }

        .outputbox {
            will-change: opacity;
        }

        .outputbox.js-hidden {
            opacity: 0;
        }

        .title {
            font-size: 16px;
        }
    </style>
</head>
<body>
    <div class="page">
        <div class="page__main">
            <h1>QR Code Generator</h1>

            <p>
                Type something and get its QR code (almost) immediately.
            </p>

            <textarea class="inputbox js-qr-input" rows="4" autofocus></textarea>

            <div class="outputbox js-qr-output"></div>
        </div>

        <div>
            <hr>

            <a href="https://bitbucket.org/nanaya1/qr-html">Source</a>
        </div>
    </div>

    <script src="qrcode.min.js"></script>

    <script>
        var inputDom = document.getElementsByClassName("js-qr-input")[0]
        var outputDom = document.getElementsByClassName("js-qr-output")[0]
        var qr = new QRCode(outputDom)

        var runTimeout = null
        var debouncedRefreshCode = function() {
            clearTimeout(runTimeout)
            runTimeout = setTimeout(refreshCode, 100)
        }

        var refreshCode = function() {
            var text = inputDom.value

            if (text !== "") {
                qr.makeCode(text)
                outputDom.classList.remove('js-hidden')
            } else {
                outputDom.classList.add('js-hidden')
            }
        }

        inputDom.addEventListener('input', debouncedRefreshCode)
        refreshCode()
    </script>
</body>