Ho questo dilemma, devo creare un menu, l'estruttura di base è composta da quattro a sei voci del menu principale e ognuno può avere menu di livello 2 N e ogni sottomenu può anche avere sottotitoli.
Ottengo dal server questo due html come questo:
<ul>
<li> <a>Normal link</a></li>
<li>
<a> </a>
<ul> this is other level of menus</ul>
</li>
</ul>
Il primo elenco che ho appena contiene le voci del menu principale, il secondo tutti i sottolivelli.
Deve essere presentato qualcosa di simile a questo:
Ognivoltachel'utentefaclicsullevocidelmenuprincipale,vengonovisualizzatiglielenchidilivellosecondario,quandosifaclicsuunmenusecondario,illivellosuccessivovienevisualizzatosottoquelloattivo.
Questastrutturadibasenonècosìcomplessa.PrendosoloconJavascripttuttiglielementi"sotto livello N" e ogni 3 voci di menu (in ogni livello) aggiungo un nuovo <li>
dove metto tutto contenente i livelli successivi <ul>
e mostra / nascondi usando classi e attributi correlati, ad esempio:
<ul>
<li></li>
<li class="i-am-for-X></li>
<li></li>
<li class="here-are-my-next-level-items">
<ul></ul>
<ul class="i-am-x"></ul>
<ul></ul>
</li>
<li></li>
<li class="here-are-my-other-next-level-items">
</ul>
Il mio problema arriva ora, mi è stato richiesto che la classe del menu avesse un metodo che modificasse il numero di colonne per sottomenu (da utilizzare in alcuni punti di interruzione della vista). Ciò significa che in teoria il mio i-am-x
può essere dopo il 3%% di co_de come nel mio esempio precedente poiché potrebbe essere dopo il 4 o il X, quindi ho bisogno dello stesso contenuto in più posti, per quanto posso vedere ne ho solo due opzioni: clonali o spostali.
Se li clono, lo farò dopo che il mio <li>
sarà a posto e dopo che la pagina è stata caricata e lascia che il css gestisca lo show e si nasconda con javascript solo per cambiare le classi necessarie.
Se li sposto, devo farlo dopo che la pagina è stata caricata su ogni breakpoint. Penso che questo potrebbe essere più inquietante per l'utente e la reattività.
Non sono sicuro che non visualizzi un'altra opzione e / o più problemi relativi a questa opzione e non sono sicuro di quale abbia prestazioni migliori.
Grazie in anticipo per il tuo contributo!