VibeCoderzVibeCoderz
Telegram
All Prompts
Futuristic Hero with DNA Canvas Background preview
herosectionlandinganimatedbackgroundcanvasinteractivefullscreen

Futuristic Hero with DNA Canvas Background

Fullscreen hero-секція для лендінгу з анімованим фоном ДНК. Інтерактивний CTA, вертикальні навігаційні панелі. Ідеально для sci-fi/біотех.

Prompt

add this style for hero <html lang="en" vid="0"><head vid="1">
    <meta charset="UTF-8" vid="2">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" vid="3">
    <title vid="4">HELIX LABS</title>
    <style vid="5">
        :root {
            
            --c-hot-red: #FF2E4C;
            --c-soft-mint: #CBEAD1;
            --c-grey-bg: #E6E6E6;
            --c-text: #1a1a1a;
            --c-line: #1a1a1a;
            
            --f-main: 'Helvetica Neue', Helvetica, Arial, sans-serif;
            
            
            --spacing-unit: 2rem;
        }

        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }

        body {
            font-family: var(--f-main);
            background-color: var(--c-grey-bg);
            color: var(--c-text);
            overflow: hidden; 
            height: 100vh;
            width: 100vw;
            font-weight: 400;
            -webkit-font-smoothing: antialiased;
        }

        
        .grain-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            pointer-events: none;
            z-index: 50;
            opacity: 0.08;
            background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
        }

        
        #dna-canvas {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 1;
            
            filter: blur(2px) contrast(1.1);
        }

        
        .ui-layer {
            position: relative;
            z-index: 10;
            height: 100%;
            width: 100%;
            display: grid;
            grid-template-columns: 80px 1fr 80px;
            grid-template-rows: 80px 1fr 80px;
            padding: var(--spacing-unit);
        }

        
        .nav-vertical-left, .nav-vertical-right {
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            align-items: center;
            font-size: 0.85rem;
            letter-spacing: 0.05em;
            text-transform: uppercase;
        }

        .nav-vertical-left {
            grid-column: 1;
            grid-row: 1 / -1;
            border-right: 1px solid rgba(0,0,0,0.1);
            padding-right: 20px;
        }

        .nav-vertical-right {
            grid-column: 3;
            grid-row: 1 / -1;
            border-left: 1px solid rgba(0,0,0,0.1);
            padding-left: 20px;
        }

        .vertical-text {
            writing-mode: vertical-rl;
            transform: rotate(180deg);
            white-space: nowrap;
        }

        .meta-data {
            font-family: 'Courier New', Courier, monospace; 
            font-size: 0.7rem;
            opacity: 0.7;
        }

        
        .content-center {
            grid-column: 2;
            grid-row: 2;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            text-align: center;
            position: relative;
        }

        
        h1 {
            font-size: 5rem;
            line-height: 0.9;
            text-transform: uppercase;
            letter-spacing: -0.04em;
            color: var(--c-text);
            margin-bottom: 2rem;
            max-width: 800px;
            font-weight: 400; 
        }
        
        h1 span {
            display: block;
        }

        h1 .highlight {
            
            position: relative;
            display: inline-block;
        }
        
        h1 .highlight::after {
            content: '';
            position: absolute;
            top: 50%;
            left: -10px;
            right: -10px;
            height: 2px;
            background: var(--c-text);
            transform: scaleX(0);
            transform-origin: left;
            transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
        }

        .mission-statement {
            font-size: 1.1rem;
            line-height: 1.4;
            max-width: 440px;
            margin-bottom: 4rem;
            text-transform: uppercase;
            letter-spacing: 0.02em;
        }

        
        .btn-enter {
            background: transparent;
            border: 1px solid var(--c-text);
            color: var(--c-text);
            padding: 18px 42px;
            font-size: 1rem;
            text-transform: uppercase;
            letter-spacing: 0.1em;
            cursor: pointer;
            transition: all 0.3s ease;
            position: relative;
            overflow: hidden;
            font-family: var(--f-main);
        }

        .btn-enter:hover {
            background: var(--c-text);
            color: var(--c-grey-bg);
        }

        .btn-enter::before {
            
            content: '';
            position: absolute;
            top: 50%;
            left: -20px;
            width: 10px;
            height: 1px;
            background: var(--c-text);
            transition: transform 0.3s ease;
        }

        .btn-enter:hover::before {
            transform: translateX(10px);
        }

        
        .top-bar {
            grid-column: 2;
            grid-row: 1;
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 0 40px;
            border-bottom: 1px solid rgba(0,0,0,0.05);
        }

        .bottom-bar {
            grid-column: 2;
            grid-row: 3;
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 0 40px;
            font-size: 0.8rem;
            text-transform: uppercase;
        }

        .logo {
            font-weight: 700;
            font-size: 1.2rem;
            letter-spacing: -0.05em;
        }

        
        @keyframes float {
            0% { transform: translateY(0px); }
            50% { transform: translateY(-10px); }
            100% { transform: translateY(0px); }
        }

        .floating {
            animation: float 6s ease-in-out infinite;
        }

    </style>
</head>
<body vid="6">

    
    <div class="grain-overlay" vid="7"></div>

    
    <canvas id="dna-canvas" vid="8"></canvas>

    
    <div class="ui-layer" vid="9">
        
        
        <div class="nav-vertical-left" vid="10">
            <span class="meta-data" vid="11">EST. 2024</span>
            <div class="vertical-text" vid="12">SEQ_001 — ALPHA</div>
            <div class="vertical-text" vid="13">SCROLL</div>
        </div>

        
        <header class="top-bar" vid="14">
            <div class="logo" vid="15">HELIX—LABS</div>
            <div class="meta-data" vid="16">SYS.NOMINAL</div>
        </header>

        
        <main class="content-center" vid="17">
            <h1 vid="18">
                <span vid="19">RECODING</span>
                <span class="highlight" vid="20">HUMANITY</span>
            </h1>
            
            <p class="mission-statement floating" vid="21">
                We are mapping the architecture of tomorrow. 
                Synthetic biology meets atmospheric intelligence.
            </p>

            <button class="btn-enter" onmouseenter="strikeText()" onmouseleave="unstrikeText()" vid="22">
                ENTER LAB
            </button>
        </main>

        
        <footer class="bottom-bar" vid="23">
            <span vid="24">GENETIC SEQUENCE: ACTIVE</span>
            <span vid="25">COORDINATES: 41.979 N, 2.819 E</span>
        </footer>

        
        <div class="nav-vertical-right" vid="26">
            <div class="vertical-text" vid="27">MENU</div>
            <div class="vertical-text" vid="28">ACCESS</div>
            <span class="meta-data" vid="29">V.2.0</span>
        </div>

    </div>

    <script vid="30">
        
        
        
        const canvas = document.getElementById('dna-canvas');
        const ctx = canvas.getContext('2d');
        
        let width, height;
        let particles = [];
        
        
        const colors = [
            { r: 255, g: 46, b: 76 },   
            { r: 200, g: 235, b: 205 }  
        ];

        function resize() {
            width = window.innerWidth;
            height = window.innerHeight;
            canvas.width = width;
            canvas.height = height;
        }

        class Particle {
            constructor(isStrandA) {
                this.isStrandA = isStrandA; 
                this.y = Math.random() * height;
                this.x = width / 2;
                this.size = Math.random() * 60 + 40; 
                this.speed = Math.random() * 0.5 + 0.2;
                this.offset = Math.random() * Math.PI * 2;
                this.color = isStrandA ? colors[0] : colors[1];
            }

            update(time) {
                
                this.y -= this.speed;
                if (this.y < -100) this.y = height + 100;

                
                
                const amplitude = width * 0.25; 
                
                const frequency = 0.003; 
                
                
                const wave = Math.sin((this.y * frequency) + (time * 0.0005) + this.offset);
                
                
                const strandPhase = this.isStrandA ? 1 : -1;
                
                this.x = (width / 2) + (wave * amplitude * strandPhase);
                
                
                this.pulse = Math.sin(time * 0.002 + this.offset) * 10;
            }

            draw() {
                ctx.beginPath();
                
                const gradient = ctx.createRadialGradient(
                    this.x, this.y, 0,
                    this.x, this.y, this.size + this.pulse
                );
                
                const c = this.color;
                
                gradient.addColorStop(0, `rgba(${c.r}, ${c.g}, ${c.b}, 0.6)`); 
                gradient.addColorStop(1, `rgba(${c.r}, ${c.g}, ${c.b}, 0)`);
                
                ctx.fillStyle = gradient;
                
                ctx.arc(this.x, this.y, this.size + this.pulse, 0, Math.PI * 2);
                ctx.fill();
            }
        }

        function initParticles() {
            particles = [];
            const particleCount = 60; 
            for (let i = 0; i < particleCount; i++) {
                particles.push(new Particle(i % 2 === 0));
            }
        }

        let time = 0;
        function animate() {
            
            ctx.fillStyle = 'rgba(230, 230, 230, 0.2)'; 
            ctx.fillRect(0, 0, width, height);
            
            
            
            
            ctx.globalCompositeOperation = 'darken'; 
            ctx.globalCompositeOperation = 'source-over';

            particles.forEach(p => {
                p.update(time);
                p.draw();
            });

            time += 16;
            requestAnimationFrame(animate);
        }

        
        function strikeText() {
            const h1 = document.querySelector('h1 .highlight');
            h1.style.setProperty('--strike-scale', '1');
            
            const style = document.createElement('style');
            style.id = 'hover-style';
            style.innerHTML = `h1 .highlight::after { transform: scaleX(1) !important; }`;
            document.head.appendChild(style);
        }

        function unstrikeText() {
            const style = document.getElementById('hover-style');
            if(style) style.remove();
        }

        window.addEventListener('resize', () => {
            resize();
            initParticles();
        });

        
        resize();
        initParticles();
        animate();

    </script>

</body></html>
All Prompts