Saltar para o conteúdo
nunoines.pt — início

~/programacao/do-nothing-machine

Do Nothing Machine

A versão em software de uma «Do Nothing Machine».

Lúdico HTML · CSS · JavaScript
Ilustração: um interruptor ligado, a verde, e uma seta para o mesmo interruptor, já desligado.

Esta é a minha versão digital de uma «Do Nothing Machine» — em software.

A ideia

Criar o equivalente a uma «Do Nothing Machine» em software.

A teoria

A «Do Nothing Machine» cumpre fielmente o que o nome promete: é uma máquina cujo único propósito é não ter propósito nenhum. Realiza uma ação totalmente desprovida de utilidade prática.

A prática

Se o mundo já está cheio de «Do Nothing Machines» em hardware, porque não levar o conceito para o software? Segue-se um exemplo — experimente ligá-lo.

O exemplo

Do Nothing Machine!

status: OFF

O interruptor é ligado por quem o usa e volta a desligar-se sozinho, depois de uma pausa aleatória entre 100 e 1100 milissegundos.

<!DOCTYPE html>
<html>
<head>
    <title>Do Nothing Machine!</title>
    <style>
        /* Centra o conteúdo e define a margem superior */
        .exemplo1 { text-align: center; margin-top: 50px; }
        /* Configura o layout do interruptor */
        .interruptor { width: 60px; height: 34px; display: inline-flex; position: relative; }
        /* Esconde a checkbox nativa */
        .interruptor input { display: none; }
        /* Define o estilo do interruptor */
        .slider { position: absolute; width: 100%; height: 100%; background: #ccc; border-radius: 34px; cursor: pointer; }
        /* Estilo da bolinha do interruptor, com transição suave */
        .slider:before { content: ""; position: absolute; height: 26px; width: 26px; left: 4px; bottom: 4px; background: white; border-radius: 50%; transition: .4s; }
        /* Altera o estado visual do interruptor quando ativado */
        input:checked + .slider { background: #2196F3; }
        /* Anima a posição da bolinha ao ativar */
        input:checked + .slider:before { transform: translateX(26px); }
    </style>
</head>
<body>
    <div class="exemplo1">
        <h1>Do Nothing Machine!</h1>
        <!-- Interruptor com temporizador para voltar a desligar -->
        <label class="interruptor">
            <input type="checkbox" onclick="setTimeout(() => this.checked = 0, Math.random() * 1e3 + 100)">
            <span class="slider"></span>
        </label>
    </div>
</body>
</html>

Ficha técnica

linguagens
HTML · CSS · JavaScript
dependências
nenhuma
utilidade
nenhuma, por definição

IAapoiocapa gerada com IA