Close

Se stai utilizzando il tema Astra Free su WordPress e hai configurato il tuo header con la top bar (Above Header) e il Below Header, potresti voler mantenere visibile solo il Primary Header mentre l’utente scorre la pagina. Questo codice CSS e JavaScript ti permette di ottenere esattamente questo risultato, trasformando il tuo header principale in uno sticky header elegante e leggero, perfetto per migliorare l’usabilità e la navigazione del sito.

🔧 Cosa fa questo script?
Quando l’utente scorre la pagina verso il basso:

  • Nasconde automaticamente l’above header e il below header.
  • Rende il primary header fisso in alto (sticky) con un effetto di transizione fluido.
  • Aggiunge uno spazio sotto l’header per evitare “salti” del contenuto.

💡 Perfetto per: blog, siti vetrina, portali aziendali o qualsiasi installazione Astra in cui vuoi massimizzare lo spazio visibile durante la lettura o la navigazione.

📥 Download gratuito
Puoi scaricare il codice gratuitamente e incollarlo direttamente nel tuo tema child o in un plugin di snippet personalizzati. È compatibile con la versione gratuita di Astra e non richiede plugin aggiuntivi.

Se vuoi installarlo come un plugin, puoi scaricarlo qui (v. 1.2).

📌 Come si usa?

1. Copia il CSS nel tuo file style.css o in Aspetto > Personalizza > CSS Aggiuntivo.

/**
 * ASTRA STICKY HEADER - VERSION 1.2
 */

/* 1. Previene il "salto" del contenuto quando l'header diventa fixed */
body.is-scrolled {
    padding-top: 80px !important; /* Altezza media header mobile */
}

/* 2. Header Sticky - Configurazione Core */
body.is-scrolled .ast-main-header-wrap {
    position: fixed !important;
    top: 0 !important;
    left: 0;
    right: 0;
    width: 100% !important;
    z-index: 9999 !important; /* Sempre sopra il contenuto */
    background-color: #ffffff !important;
    box-shadow: 0 2px 15px rgba(0,0,0,0.1) !important;
    transition: all 0.3s ease;
}

/* 3. FIX MENU MOBILE: Posizionamento e Trasparenza */
/* Questo blocco corregge il "muro bianco" che copriva tutto il post */
body.is-scrolled .main-header-bar-navigation,
body.is-scrolled .ast-mobile-header-content,
body.is-scrolled .ast-mobile-popup-drawer {
    position: fixed !important;
    top: 80px !important; /* Si ancora sotto l'header */
    left: 0 !important;
    width: 100% !important;
    z-index: 9998 !important; /* Sotto la barra header ma sopra il post */
    background-color: #ffffff !important;
    
    /* Gestione Altezza Dinamica */
    height: auto !important; 
    max-height: calc(100vh - 80px) !important; /* Evita che il menu esca dallo schermo */
    overflow-y: auto !important; /* Permette lo scroll se il menu è lungo */
    
    box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}

/* 4. Sincronizzazione Icone e Trigger */
/* Assicura che l'hamburger/X rimanga visibile e cliccabile */
.ast-mobile-menu-trigger-wrapper, 
.main-header-menu-toggle {
    z-index: 10000 !important;
    position: relative;
}

/* 5. Pulizia elementi durante lo scroll */
body.is-scrolled .ast-above-header-wrap,
body.is-scrolled .ast-below-header-wrap {
    display: none !important;
}

/* 6. Fix per utenti loggati (Admin Bar di WordPress) */
body.admin-bar.is-scrolled .ast-main-header-wrap {
    top: 32px !important;
}

/* Mobile Admin Bar Fix (più alta su schermi piccoli) */
@media screen and (max-width: 782px) {
    body.admin-bar.is-scrolled .ast-main-header-wrap {
        top: 46px !important;
    }
    body.admin-bar.is-scrolled .main-header-bar-navigation,
    body.admin-bar.is-scrolled .ast-mobile-header-content {
        top: calc(46px + 80px) !important;
    }
}

2. Aggiungi lo script PHP nel tuo functions.php (tema child consigliato).

<?php
/**
 * Plugin Name: Astra Free Sticky Header
 * Description: Soluzione professionale e pulita per lo sticky header di Astra Free.
 * Version: 1.2
 * Author: Web, of course!
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * Gestione della classe is-scrolled via JavaScript leggero
 */
function astra_sticky_header_js_logic() {
    ?>
    <script>
        (function() {
            const updateScroll = () => {
                // Attiva lo sticky dopo 60px di scroll per maggiore stabilità
                const isScrolled = window.scrollY > 60;
                if (isScrolled !== document.body.classList.contains('is-scrolled')) {
                    document.body.classList.toggle('is-scrolled', isScrolled);
                }
            };
            window.addEventListener('scroll', updateScroll, { passive: true });
            window.addEventListener('load', updateScroll);
        })();
    </script>
    <?php
}
add_action('wp_footer', 'astra_sticky_header_js_logic');

/**
 * Caricamento CSS con versione aggiornata per pulizia cache
 */
function astra_sticky_header_enqueue_assets() {
    wp_enqueue_style( 
        'astra-free-sticky-header-css', 
        plugin_dir_url( __FILE__ ) . 'assets/css/sticky-header.css', 
        array(), 
        '1.2' 
    );
}
add_action( 'wp_enqueue_scripts', 'astra_sticky_header_enqueue_assets' );

Regola eventuali altezze o colori secondo il tuo design.


✅ Facile da implementare
💨 Nessun impatto sulle performance
📱 Responsive e compatibile con tutti i dispositivi

Come inserire font personalizzati (non Google Fonts) in Astra Free.