TGViewer
mefody.dev mefody.dev @mefody_dev · 5.38K subscribers
Post #314 4.59K
CSS Puzzle Box 2.0

На ютубах есть относительно популярная категория видео, где автор пытается решить какой-то сложный физический паззл: открыть сейф, достать ключик из кубика без видимых щелей и так далее. Блэкл Мори объясняет, как можно сделать такой паззл на HTML и CSS.

В этот раз вся магия держится на особенностях работы details и summary, а также сочетании свойства resize с max-height, max-width и calc() для хитрых вычислений. Есть специальный Width Hack, который позволяет эти примитивы превращать в машину состояний, где каждое нажатие на «кнопку» вызывает новое состояние со своими кнопками.

Коротко тяжело пересказать, что там происходит, нужно смотреть в демки, вникать в код, пробовать сделать что-то похожее. Мне понадобилась пара часов, чтобы разобраться, но оно того стоило — кажется, на следующем CTF для конференции «Я люблю фронтенд» будут задания со схожими механиками.

А если не хотите разбираться, как паззл работает, то можно просто попытаться его решить.

https://suricrasia.online/blog/inline-css-puzzle-box/
  • 🔥 12
  • 👍 8
  • ❤‍🔥 3
  • ❤ 2
  • 👏 1
  • 🤯 1
More from @mefody_dev
  1. Sep 25, 2026Эффект одометра Люблю такие демки, когда на чистом CSS делают что-то необычное, для чего я…
  2. Sep 23, 2026Цена ошибок гидрации В React есть много ухищрений, чтобы серверный кусок страницы обновилс…
  3. Sep 16, 2026Какие анимации более производительные: CSS или JS? Лучше пару раз увидеть, чем много откуд…
  4. Sep 14, 2026Единица измерения lh Если коротко, то 1lh = 1 line height. И это не размер шрифта, который…
  5. Sep 11, 2026<mermaid-element> Ещё одна полезная библиотека. Брамус собрал кастомный элемент, которому…
  6. Sep 10, 2026MicroLighter Дейв Руперт собрал маленькую библиотечку, которая делает подсветку кода. «Ещё…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →