Как стать автором
Обновить

HTML и CSS — языки программирования

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров6.6K

Доказано.

Пример реализации на чистом HTML и CSS конечного автомата, а именно, мини-калькулятора, складывающего два числа, заданных в двоичном формате.

Песочница

HTML
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>CSS-is-PL</title>
  <link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
  <h2>Add two numbers in binary format</h2>
  <div>
    x:
    <input class="v1-1" type="checkbox">
    <input class="v1-2" type="checkbox">
  </div>
  <div>
    y:
    <input class="v2-1" type="checkbox">
    <input class="v2-2" type="checkbox">
  </div>
  <div class="result">
    x + y =
  </div>
</body>

</html>

CSS
body {
  margin: 1em;
  --v1-1: 0;
  --v1-2: 0;
  --v2-1: 0;
  --v2-2: 0;
}

input {
  margin-left: 2em;
}

.v1-1::after,
.v1-2::after,
.v2-1::after,
.v2-2::after {
  margin-left: 1.5em;
  content: "0";
}

body:has(.v1-1:checked) {
  --v1-1: 3;

  .v1-1::after {
    content: "1";
  }
}

body:has(.v1-2:checked) {
  --v1-2: 1;

  .v1-2::after {
    content: "1";
  }
}

body:has(.v2-1:checked) {
  --v2-1: 3;

  .v2-1::after {
    content: "1";
  }
}

body:has(.v2-2:checked) {
  --v2-2: 1;

  .v2-2::after {
    content: "1";
  }
}

.result {
  margin-top: 1em;
}

.result::after {
  --v1: calc(var(--v1-1) + var(--v1-2));
  --v2: calc(var(--v2-1) + var(--v2-2));
  --result: calc(var(--v1) + var(--v2));
  counter-reset: result var(--result);
  content: counter(result);
}


Наш Telegram-канал о Vue.js и фронтенд-разработке в целом: @vuefaq

Вебсайт: Vue‑FAQ.org.

Теги:
Хабы:
-11
Комментарии12

Публикации

Истории

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область