--- name: system/noise-texture title: Noise & Grain Texture Overlay description: Subtle noise/grain overlay for premium tactile feel. Eliminates flat digital look. tags: [system, noise, texture, grain, tactile, premium] source: stripe.com, linear.app, brad.co, amppz.com --- # Noise & Grain Texture Overlay ## Что это Тонкая текстура шума (noise), наложенная поверх фона. Создаёт ощущение тактильности и устраняет "плоский" цифровой вид. Используется на Stripe, Linear, Branded. ## Почему это важно Без текстуры тёмный сайт выглядит плоским. Noise добавляет: - Глубину - Тактильность - "Дорогой" вид - Маскировку градиентных артефактов ## Pattern 1: CSS Noise (рекомендуется) ```html
``` ```css .noise-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999; opacity: 0.03; mix-blend-mode: overlay; background-image: url('/noise.png'); background-size: 256px 256px; } ``` ### Генерация noise.png ```bash # Python — генерация noise текстуры python3 -c " import numpy as np from PIL import Image noise = np.random.randint(0, 255, (512, 512, 3), dtype=np.uint8) Image.fromarray(noise).save('/public/noise.png') " # Или через CLI convert -size 256x256 plasma:random /public/noise.png ``` ## Pattern 2: SVG Noise Filter ```html ``` ```css .noise-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999; opacity: 0.04; filter: url(#noise); mix-blend-mode: overlay; } ``` ## Pattern 3: CSS Radial Noise (без изображений) ```css .noise-css { position: fixed; inset: 0; pointer-events: none; z-index: 9999; opacity: 0.03; background: radial-gradient(circle, #fff 1px, transparent 1px), radial-gradient(circle, #fff 1px, transparent 1px); background-size: 20px 20px; background-position: 0 0, 10px 10px; mix-blend-mode: overlay; animation: noise-shift 0.5s steps(1) infinite; } @keyframes noise-shift { 0% { transform: translate(0, 0); } 25% { transform: translate(-5px, 5px); } 50% { transform: translate(5px, -5px); } 75% { transform: translate(-5px, -5px); } 100% { transform: translate(5px, 5px); } } ``` ## Pattern 4: Gradient Noise Mix ```css .gradient-noise { position: relative; } .gradient-noise::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(99, 102, 241, 0.1), transparent), url('/noise.png'); background-size: cover, 256px 256px; opacity: 0.8; pointer-events: none; } ``` ## Pattern 5: Noise on Cards/Sections ```htmlТекст карточки...