Styledex
← Index

Broadcast Glitch

故障广播

stylekitMITTexture · textureRetro · retroLight and dark · bothMedium · mediumBlue · blueMedium · mediumSerif · serifGeneral · generalLanding · landing

老电视信号的动态包装。CRT 黑底上,扫描线缓缓滚动、RGB 通道红青错位抖动、SMPTE 测试卡彩条横扫、画面偶尔像信号不良般跳帧位移。这是 90 年代电视台呼号与 VHS 故障艺术的复兴——不是合成波日落,是坏掉的信号本身在发光。

NNorthwind
Product · Pricing
Specimen
Make the work feel finished

One interface, dressed in this style. Compare type, color, radius, and density.

128
Active
4.8
Score
12ms
Edge

Attribution

"Broadcast Glitch" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/broadcast-glitch @ bfa7da909e86.

https://github.com/AnxForever/stylekit · api/styles/broadcast-glitch · bfa7da909e86 · © AnxForever

Do

  • 背景用 CRT 近黑 #0B0B0E,永远覆一层缓缓滚动的扫描线(repeating-linear-gradient + transform 滚动)
  • 只用三原信号色:故障红 #FF2E4C、CRT 青 #00E5D8、测试卡黄 #F5E000,取自电视/测试卡
  • 标题做 RGB 通道分离:红青双影 text-shadow + 轻微随机抖动,制造信号错位感
  • 故障动效用 steps() 硬切:跳帧位移、VHS 横向撕裂、信号条横扫,绝不平滑过渡
  • 硬边方角、实色平涂、粗边框、等宽/压缩粗体字,一切都硬
  • 用 SMPTE 测试卡彩条作为标志性装饰(白黄青绿品红红蓝七条)
  • 开场用 CRT 开机白闪 + 收缩(scaleY 0→1)
  • 所有故障/闪烁/抖动写 prefers-reduced-motion 关闭,停在清晰测试卡终态防眩晕

Don't

  • 禁止合成波/outrun 的紫粉橙日落渐变与地平线网格——那是另一个风格
  • 禁止圆角、柔光、柔和阴影——这是硬电子信号不是柔 UI
  • 禁止第四种颜色,禁止把三原信号色调浑或降饱和
  • 禁止满屏持续癫痫式抖动——故障是点睛,幅度小频率低
  • 禁止在正文层做通道分离(只在标题/装饰做),否则正文不可读
  • 禁止动画 top/left/width/height——扫描线/故障用 transform/clip-path
  • 禁止忽略 prefers-reduced-motion(抖动闪烁有眩晕风险)

Prompt

Create a broadcast glitch landing page with:
1. Stage: #0B0B0E CRT black, #EDEDED phosphor text, three signals #FF2E4C / #00E5D8 / #F5E000 only — NO synthwave sunset gradient
2. A full-screen pointer-events-none scanline overlay (repeating-linear-gradient 2px) crawling with transform translateY steps(3)
3. Hero title in monospace uppercase with RGB channel split (text-shadow 3px 0 #00E5D8, -3px 0 #FF2E4C), wrapped in a bg-jitter element that jumps once every ~4s (steps)
4. A SMPTE color-bars strip (white/yellow/cyan/green/magenta/red/blue) in a corner
5. A "REC" dot flickering with steps(2); a power-on scaleY collapse on load
6. Hard square corners, flat fills, thick borders throughout
7. All motion transform/opacity/clip-path only; everything steps() hard-cut; prefers-reduced-motion disables jitter/flicker and settles on a clean test-card

---
"Broadcast Glitch" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/broadcast-glitch @ bfa7da909e86.
powered by Styledex — https://styledex.dev

Tokens

DTCG

{
  "$schema": "https://www.designtokens.org/schemas/2025.10/format.json",
  "$description": "Broadcast Glitch. \"Broadcast Glitch\" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/broadcast-glitch @ bfa7da909e86.",
  "$extensions": {
    "dev.styledex": {
      "id": "stylekit-broadcast-glitch",
      "license": "MIT",
      "attribution": "\"Broadcast Glitch\" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/broadcast-glitch @ bfa7da909e86.",
      "banner": "powered by Styledex — https://styledex.dev"
    }
  },
  "color": {
    "background": {
      "$type": "color",
      "$value": "#0b0b0e"
    },
    "foreground": {
      "$type": "color",
      "$value": "#ededed"
    },
    "card": {
      "$type": "color",
      "$value": "#0b0b0e"
    },
    "card-foreground": {
      "$type": "color",
      "$value": "#ededed"
    },
    "primary": {
      "$type": "color",
      "$value": "#0b0b0e"
    },
    "primary-foreground": {
      "$type": "color",
      "$value": "#fafaf9"
    },
    "secondary": {
      "$type": "color",
      "$value": "#ededed"
    },
    "secondary-foreground": {
      "$type": "color",
      "$value": "#ededed"
    },
    "accent": {
      "$type": "color",
      "$value": "#ff2e4c"
    },
    "accent-foreground": {
      "$type": "color",
      "$value": "#fafaf9"
    },
    "muted": {
      "$type": "color",
      "$value": "#1a1a1c"
    },
    "muted-foreground": {
      "$type": "color",
      "$value": "#9a9a9a"
    },
    "border": {
      "$type": "color",
      "$value": "#2d2d30"
    },
    "destructive": {
      "$type": "color",
      "$value": "#dc2626"
    },
    "ring": {
      "$type": "color",
      "$value": "#0b0b0e"
    }
  },
  "font": {
    "sans": {
      "$type": "fontFamily",
      "$value": [
        "ui-sans-serif",
        "system-ui",
        "sans-serif"
      ]
    },
    "serif": {
      "$type": "fontFamily",
      "$value": [
        "ui-serif",
        "Georgia",
        "serif"
      ]
    },
    "mono": {
      "$type": "fontFamily",
      "$value": [
        "ui-monospace",
        "SFMono-Regular",
        "Menlo",
        "monospace"
      ]
    }
  },
  "radius": {
    "base": {
      "$type": "dimension",
      "$value": "0px"
    }
  },
  "spacing": {
    "base": {
      "$type": "dimension",
      "$value": "1rem"
    }
  },
  "shadow": {
    "base": {
      "$type": "shadow",
      "$value": "0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04)"
    }
  }
}

CSS

/* powered by Styledex — https://styledex.dev */
/* "Broadcast Glitch" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/broadcast-glitch @ bfa7da909e86. */
:root {
  --background: #0b0b0e;
  --foreground: #ededed;
  --card: #0b0b0e;
  --card-foreground: #ededed;
  --primary: #0b0b0e;
  --primary-foreground: #fafaf9;
  --secondary: #ededed;
  --secondary-foreground: #ededed;
  --accent: #ff2e4c;
  --accent-foreground: #fafaf9;
  --muted: #1a1a1c;
  --muted-foreground: #9a9a9a;
  --border: #2d2d30;
  --destructive: #dc2626;
  --ring: #0b0b0e;
  --radius: 0px;
  --font-sans: ui-sans-serif, system-ui, sans-serif;
  --font-serif: ui-serif, Georgia, serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  --spacing: 1rem;
  --shadow: 0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04);
}

Tailwind

/* powered by Styledex — https://styledex.dev */
/* "Broadcast Glitch" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/broadcast-glitch @ bfa7da909e86. */
/** Tailwind theme extend for Broadcast Glitch (stylekit-broadcast-glitch) */
module.exports = {
  "theme": {
    "extend": {
      "colors": {
        "background": "#0b0b0e",
        "foreground": "#ededed",
        "card": "#0b0b0e",
        "primary": "#0b0b0e",
        "primary-foreground": "#fafaf9",
        "secondary": "#ededed",
        "accent": "#ff2e4c",
        "muted": "#1a1a1c",
        "border": "#2d2d30",
        "destructive": "#dc2626",
        "ring": "#0b0b0e"
      },
      "borderRadius": {
        "lg": "0px"
      },
      "fontFamily": {
        "sans": [
          "ui-sans-serif",
          "system-ui",
          "sans-serif"
        ],
        "serif": [
          "ui-serif",
          "Georgia",
          "serif"
        ],
        "mono": [
          "ui-monospace",
          "SFMono-Regular",
          "Menlo",
          "monospace"
        ]
      },
      "boxShadow": {
        "styledex": "0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04)"
      }
    }
  }
};

shadcn

/* powered by Styledex — https://styledex.dev */
/* "Broadcast Glitch" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/broadcast-glitch @ bfa7da909e86. */
@layer base {
:root {
  --background: #0b0b0e;
  --foreground: #ededed;
  --card: #0b0b0e;
  --card-foreground: #ededed;
  --primary: #0b0b0e;
  --primary-foreground: #fafaf9;
  --secondary: #ededed;
  --secondary-foreground: #ededed;
  --accent: #ff2e4c;
  --accent-foreground: #fafaf9;
  --muted: #1a1a1c;
  --muted-foreground: #9a9a9a;
  --border: #2d2d30;
  --destructive: #dc2626;
  --ring: #0b0b0e;
  --radius: 0px;
  --font-sans: ui-sans-serif, system-ui, sans-serif;
  --font-serif: ui-serif, Georgia, serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  --spacing: 1rem;
  --shadow: 0 1px 2px rgba(0,0,0,0.06), 0 8px 24px rgba(0,0,0,0.04);
}
}