Come creare un menu a tendina per tablet e telefoni

Nelle impostazioni di default del tema Divi, il menu che ha dei sottoelementi non viene racchiuso in una tendina. Vediamo come risolvere questo problema.

Introduzione

Grazie a un codice CSS e un codice JS è possibile comprimere le voci del sottomenu nel tema Divi in visione mobile.
Infatti, nelle impostazioni di default le voci del sottomenu appaiono tutte elencate creando un menu troppo lungo e disordinato.
Prima di arrivare a questa soluzione ho provato molti codici e quello funzionante per ora è di Garconis.

Il risultato dovrebbe essere come questo:

Menu compresso su mobile Divi

Soluzione

Andiamo ora nei dettagli e vediamo come aggiungere i codici per creare l’effetto del menu racchiuso su mobile.

1. Codice CSS

Partiamo dal codice CSS che va incollato in Divi > Opzioni Tema > Generale > Codice CSS personalizzato.

/* -- HEADER -- */
/* remove pointer event from menu module mobile wrapper */
.et_pb_module.et_pb_menu .et_mobile_nav_menu {
	pointer-events: none;
}
/* make menu module hamburger icon and menu links interactive again */
.et_pb_module.et_pb_menu .et_mobile_nav_menu .mobile_menu_bar,
.et_pb_module.et_pb_menu .et_mobile_nav_menu .et_mobile_menu li a {
	pointer-events: auto;
}
/* when mobile menu is open, change hamburger icon to x icon */
#et_mobile_nav_menu .mobile_nav.opened .mobile_menu_bar::before,
.et_pb_module.et_pb_menu .et_mobile_nav_menu .mobile_nav.opened .mobile_menu_bar::before {
	content: '\4d';
}
/* make desktop sub sub menu icon be right arrow instead of down arrow */
#top-menu .menu-item-has-children .menu-item-has-children > a:first-child::after, 
#et-secondary-nav .menu-item-has-children .menu-item-has-children > a:first-child::after,
.et_pb_module.et_pb_menu .et-menu .menu-item-has-children .menu-item-has-children > a:first-child::after {
	content: '5';	
}
/* if mobile parent link of child menu is a deadlink, then make it not clickable */
#main-header #mobile_menu.et_mobile_menu .menu-item-has-children > a[href="#0"],
.et_pb_module.et_pb_menu .et_mobile_menu .menu-item-has-children > a[href="#0"] { 
	pointer-events: none;
}
/* - mobile menu toggling elements, injected via jQuery - */
/* make menu list item be relative, to be able to position toggle within this item */
#main-header #mobile_menu.et_mobile_menu .menu-item-has-children,
.et_pb_module.et_pb_menu .et_mobile_menu .menu-item-has-children {
	position: relative;	
}
/* the new toggle element, which is added via jQuery */
#main-header #mobile_menu.et_mobile_menu .sub-menu-toggle,
.et_pb_module.et_pb_menu .et_mobile_menu .sub-menu-toggle {
	position: absolute;
	background-color: rgba(0,0,0,0.03);
	z-index: 1;
	width: 36px;
	height: 36px;
	line-height: 36px;
	border-radius: 50%;
	top: 4px;
	right: 4px;
	cursor: pointer;
	text-align: center;
	pointer-events: auto;
}
/* the new toggle element when popped */
#main-header #mobile_menu.et_mobile_menu .sub-menu-toggle.popped,
.et_pb_module.et_pb_menu .et_mobile_menu .sub-menu-toggle.popped {
	background-color: rgba(0,0,0,0.1);
}
/* toggle icon */
#main-header #mobile_menu.et_mobile_menu .sub-menu-toggle::before,
.et_pb_module.et_pb_menu .et_mobile_menu .sub-menu-toggle::before {
	font-family: "ETmodules" !important;
	font-weight: normal;
	font-style: normal;
	font-variant: normal;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	line-height: 36px;
	font-size: 24px;
	text-transform: none;
	speak: none;
	content: '\33';
}
/* toggle icon when triggered */
#main-header #mobile_menu.et_mobile_menu .sub-menu-toggle.popped::before,
.et_pb_module.et_pb_menu .et_mobile_menu .sub-menu-toggle.popped::before {
	content: '\32';
}
/* hide sub menus by default */
#main-header #mobile_menu.et_mobile_menu .sub-menu-toggle ~ ul.sub-menu,
.et_pb_module.et_pb_menu .et_mobile_menu .sub-menu-toggle ~ ul.sub-menu {
	display: none !important;
	padding-left: 0;
}
/* show sub menu when triggered via jQuery toggle, and add slight bg color */
#main-header #mobile_menu.et_mobile_menu .sub-menu-toggle.popped ~ ul.sub-menu,
.et_pb_module.et_pb_menu .et_mobile_menu .sub-menu-toggle.popped ~ ul.sub-menu {
	display: block !important;
	background-color: rgba(0,0,0,0.03) !important;
}
/* remove sub menu list item left padding, since padding will be on anchors */
#main-header #mobile_menu.et_mobile_menu li li,
.et_pb_module.et_pb_menu .et_mobile_menu li li {
	padding-left: 0;
}
/* adjust mobile menu anchors side paddings */
#main-header #mobile_menu.et_mobile_menu li a,
.et_pb_module.et_pb_menu .et_mobile_menu li a {
	padding-left: 20px;
	padding-right: 20px;
}
/* indent sub menu */
#main-header #mobile_menu.et_mobile_menu li li a,
.et_pb_module.et_pb_menu .et_mobile_menu li li a {
	padding-left: 40px;
	padding-right: 20px;
}
/* indent sub sub menus further */
#main-header #mobile_menu.et_mobile_menu li li li a,
.et_pb_module.et_pb_menu .et_mobile_menu li li li a {
	padding-left: 60px;
	padding-right: 20px;
}
/* if mobile menu anchor has toggle, make room for it to fit next to the link */
#main-header #mobile_menu.et_mobile_menu .menu-item-has-children .sub-menu-toggle + a,
.et_pb_module.et_pb_menu .et_mobile_menu .menu-item-has-children .sub-menu-toggle + a {
	padding-right: 44px;
}
/* - end mobile menu toggling elements - */
/* undo Divi's default styling of mobile menu links that have children */
#main-header #mobile_menu.et_mobile_menu .menu-item-has-children > a,
.et_pb_module.et_pb_menu .et_mobile_menu .menu-item-has-children > a {
	background-color: transparent;
	font-weight: inherit;
}
/* make the current page's mobile menu link be different */
#main-header #mobile_menu.et_mobile_menu li.current-menu-item > a,
.et_pb_module.et_pb_menu .et_mobile_menu li.current-menu-item > a {
	font-weight: bolder;
}
/* -- END HEADER -- */

Codice JS

Il secondo codice (anche questo essenziale per ottenere il risultato del menu raggrupato su mobile) va incollato in Divi > Opzioni Tema > Integrazione > Aggiungi codice a < head > del tuo blog.

<script>jQuery( document ).ready( function( $ ) {
	// Create collapsible sub menus in mobile Divi Header Nav
	$( '<div class="sub-menu-toggle"></div>' ).insertBefore( '#main-header #mobile_menu.et_mobile_menu .menu-item-has-children > a' );
	// Create collapsible sub menus in mobile Divi Theme Builder Menu
	$( '<div class="sub-menu-toggle"></div>' ).insertBefore( '.et_pb_module.et_pb_menu .et_mobile_menu .menu-item-has-children > a' );
	// Toggle the class to be popped on mobile Divi Header Nav
	$( '#main-header #mobile_menu.et_mobile_menu .sub-menu-toggle' ).click(function () {
		$(this).toggleClass('popped');
	});
	// Toggle the class to be popped on mobile Divi Theme Builder Menu
	$( '.et_pb_module.et_pb_menu .et_mobile_menu .sub-menu-toggle' ).click(function () {
		$(this).toggleClass('popped');
	});
	// Replace the mobile Divi Theme Builder Menu toggle with different href other than # hash, to prevent scroll to top on sub-menu-toggle clicks
	$( '.et_pb_module.et_pb_menu a.mobile_nav[href="#"]' ).attr( 'href', '#0' )
} );</script>

Questo codice dovrebbe risolvere un grande problema estetico nella visualizzazione del tuo sito Divi su Mobile! Spero che funzioni e ti possa aiutare. In caso contrario, lascia un commento qua sotto e fammelo sapere!

Mostra/Nascondi Commenti (0 commenti)
L

0 commenti

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ti potrebbe anche interessare…

Nov 17 2022

Come aggiungere le icone Font Awesome al tema Divi

In questo post ti mostro come aggiungere icone Font Awesome al tuo sito WordPress con un plugin o integrando manualmente con Divi.
Ottimizzare le immagini per la SEO
Nov 15 2022

Come ottimizzare le immagini per la SEO in Divi

Scopri come ottimizzare le immagini del tuo sito Divi in ottica SEO in questa guida passo dopo passo!
Modulo Divi Blur
Nov 14 2022

Come spostare il titolo del modulo Divi Blur sopra l’immagine

Oggi ti mostrerò come spostare il titolo del modulo Divi Blurb sopra l’immagine grazie a un frammento di codice.
Icone Social Mobile Divi
Mag 11 2022

Mostrare le icone social nell’header Divi da mobile

In questo post scoprirai un semplice trucchetto per abilitare le icone social nell’header Divi da mobile.
Video Vimeo Modulo
Mag 08 2022

Come incorporare Vimeo nel modulo video di Divi

In questo articolo ti mostro come inserire correttamente un video Vimeo nel modulo video di Divi.
Protezione attacchi sito Wordpress
Apr 21 2022

Verificare la presenza di malware nel tuo sito WordPress

In questo post conoscerai alcuni strumenti per verificare se il tuo sito è affetto da malware e come mantenerlo protetto da attacchi hacker.
Sosituire Icona Hamburger Divi
Feb 18 2022

Come sostituire l’icona hamburger per mobile nel tema Divi

In questa breve guida imparerai a sostituire l’icona hamburger standard di Divi per dispositivi mobili come cellulari e tablet.
Feb 15 2022

Come disabilitare l’uso di una password forte in WooCommerce

È importante disabilitare l’uso di password complesse in WooCommerce per non indurre gli utenti ad abbandonare la fase di checkout.
Disabilitare IMG title
Feb 12 2022

Come ottimizzare gli attributi img alt e img title per la SEO

Ecco una breve guida sugli attributi img alt e img title e come disabilitarli in un sito WordPress.

Crea siti Web professionali con i layout Divi

Prova i nostri layout per il tema Divi, usato da web agency e professionisti di WordPress!

Membership

Sepa

10,00 €  per sempre!

Con l’aggiunta di nuovi layout, il prezzo
può essere soggetto a modifiche.

R Più di 50 Layout Divi
R Download illimitati
R DOCUMENTAZIONE
R Assistenza PER email

10,00 €  per sempre!

Con l’aggiunta di nuovi layout, il prezzo
può essere soggetto a modifiche.