--- name: webmovie description: HTML 로 만드는 무비 — 동영상 대신 진짜 HTML 장면을 영상처럼 재생한다. 장면(section)이 차례로 넘어가며 제목·숫자·차트·그림·단추가 CSS(먼저)·순수 JS 로 움직이고, 재생·일시 정지·장면 단추·전환·카메라 돌리·흔들림·끝나면 멈춤. 기본이 강한 연출 — 멀리서 날아와 넘쳤다 돌아오고, 찌그러지며 착지하고, 불꽃이 튄다. 글이 많으면 중요한 글자·링크 단추를 하나씩 번갈아 강조(스포트라이트), 자동 재생 켜기/끄기. 글자는 끝까지 텍스트라 검색엔진이 읽고 17개 언어 번역·수정이 쉽다. 그림 무비 — 큰 정지 그림을 배경판과 인물·로봇·표지판 조각(이미지 모델로 생성)으로 쪼개 걷기·손 흔들기·펼치기·날기로 움직인다. 그대로 넣는 webmovie.css/js(빌드 없음), 연출 data-webmovie="mask" 등 40여 개. JS 없음·움직임 줄이기 = 원래 HTML, 한중일·아랍어(RTL) 안전, 멈춘 장면 ?webmovie-t= 와 검사 scripts/check.mjs. HTML movies instead of video — SEO- and translation-friendly kinetic typography, infographics, picture scenes and UI motion. Use it whenever the user wants a promo, intro or explainer clip, a video-like hero, a still illustration turned into a moving scene, an animated story, kinetic typography, or to animate text, numbers, charts, an infographic, a picture, buttons or a section, or says the motion is too weak or boring — "이 그림을 움직이게", "동영상 대신", "영상처럼", "무비", "애니메이션", "더 강하게", "/webmovie". license: MIT compatibility: The kit is plain CSS and JavaScript for evergreen browsers (individual transform properties, custom properties in keyframes; Intl.Segmenter and animation-timeline are used when present) — no framework, no build. scripts/check.mjs needs Node 22+ and Google Chrome or Chromium. --- # webmovie — movies made of HTML A video of words is a picture of words: search engines cannot read it, translators cannot translate it, nobody can fix a typo without re-rendering, and the numbers in it are not data. webmovie makes the movie out of the page itself: - **Scenes** are `
`s of real HTML — a heading, a sentence, a number, a chart, a button. - The **player** (`data-webmovie-player`) plays them one after another like a clip: transitions, a slow camera push, ambient light, play/pause, scene buttons, a stop at the end. - The **shots** inside a scene — a headline landing, letters flipping in, numbers counting, bars growing, a line drawing — are **CSS first**, with a little **plain JavaScript only where CSS cannot** (splitting text into letters, counting, timing). - A **picture movie** (`data-webmovie-picture`) turns a still illustration into a moving scene: a background plate plus cut-out layers — a person walks in, signs unfold, a robot waves, clouds drift — on one clock, then it stands still as the original picture. - A **spotlight** (`data-webmovie-spotlight`) keeps a text-heavy block alive after it has entered: its key texts — or any elements: link buttons, cards, icons — take turns, one at a time gets a short cue (pop · tada · jelly · hop · glow · ripple letters), partners move with it, two rounds, then still. - **Autoplay or not**: movies and pictures play by themselves when they come into view; `data-webmovie-autoplay="off"` makes them stand as the plain page until the reader presses play/replay. - **Power by default.** A webmovie is **bold**: things fly in from far, overshoot and snap back, squash on landing, throw sparks, the camera dollies and shakes. Shy fades are the failure, not the safe choice (user, 2026-10-25: "애니메이션이 너무 소극적"). `data-webmovie-power="calm|bold|wild"` scales every distance at once — bold is the default. Without JS or with reduced motion the movie is simply the page, scene after scene — a storyboard that search engines, translators and screen readers read. The same shots also work without a player, on any page section (on view, hover or click). **Talk in the user's language.** These files are English; the page keeps its own languages. ## The rules (why each one exists) 1. **Semantic HTML first.** Pick the element for the meaning — `h1`–`h4`, `p`, `mark`, `data`, `time`, `ol`/`ul`/`dl`, `table` + `caption`, `figure` + `figcaption`, `blockquote`, `a`/`button`, `section` per scene — then animate it. Every element animates the same way, so never choose a `div` because it is "easier to animate". Element map and SEO checklist: [references/html.md](references/html.md). 2. **The final frame is the plain HTML.** Without JS, with `prefers-reduced-motion`, in print and after the animation, the DOM is exactly the markup the server sent. This one rule gives SEO (crawlers read the HTML), translation (the words are in the language file), copy-paste, screen readers and "nothing is lost if the script fails". So: write the finished page first, then add motion as an *entrance to* that state — never build content in JS. 3. **Text stays text.** No words in `