Markup HTML de départ:

En partant de là, impossible d’obtenir un colonage correct en utilisant uniquement CSS (ou alors soit avec Grid Layout mais on doit, entre autres, supporter IE-11 soit avec du positionnement absolu calculé au poil de cul près et c’est un contenu dynamique…).

Il faut donc modifier le markup en rajoutant des niveaux d’imbrication dans nos listes. Problème: c’est un menu Responsive et c’est ce markup qui est utilisé pour afficher l’aspect Smartphone. On ne peut pas le modifier « en dur ».

Markup HTML d’arrivée souhaité:

jQuery:

Notes: axes d’amélioration de ce code:

  • Pas besoin du parseInt dans var columnsAmount. On a besoin de la valeur en tant que nombre entier pour effectuer le calcul de la dernière ligne de ce code .wrapAll('<li class="custom-cols custom-cols-'+ (columnsAmount +1) +'" />').
  • Probablement un moyen de supprimer les doublons immédiatement en renseignant le 1er tableau (pas besoin de 2 tableaux)

LESS: