Je crée un code Javascript afin que les liens du menu débordant se déplacent dans un menu séparé appelé more.L'ordre des éléments est désordonné après avoir déplacé des éléments deux fois
La première fois qu'il est chargé, il fonctionne parfaitement. Cependant, lorsqu'il est exécuté à nouveau, les choses commencent ... traînant
Snippet ici:
var tele = document.getElementById('teleporter'),
\t rec = document.getElementById('receiver');
window.onresize = resize;
resize();
function resize() {
var rChildren = rec.children,
\t numW = 0;
for (var i = 0; i < rChildren.length; i++) {
var child = rChildren[i];
\t var fragment = document.createDocumentFragment().appendChild(child);
child.outHTML = '';
tele.appendChild(fragment);
}
var teleW = tele.offsetWidth,
tChildren = tele.children;
for (var i = 0; i < tChildren.length; i++) {
var child = tChildren[i];
numW += child.offsetWidth;
if (numW > teleW) {
var fragment = document.createDocumentFragment().appendChild(child);
child.outHTML = '';
rec.appendChild(fragment);
i--;
}
}
}
#teleporter {
height: 20px;
overflow: hidden;
box-sizing: border-box;
padding: 0;
}
li {
float: left;
padding: 0 10px;
box-sizing: border-box;
list-style: none;
}
<ul id="teleporter">
<li>List item 0</li>
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
<li>List item 4</li>
<li>List item 5</li>
<li>List item 6</li>
<li>List item 7</li>
<li>List item 8</li>
<li>List item 9</li>
<li>List item 10</li>
<li>List item 11</li>
<li>List item 12</li>
<li>List item 13</li>
</ul>
<div>More:
<ul id="receiver"></ul>
</div>
Pourquoi ça ne marche pas?
Sans lire le code complet, ne voulez-vous pas ajouter l'enfant lors du déplacement du deuxième menu à la première, et l'insertion comme le premier lors du passage de la première à la deuxième ? – Icepickle
Hmm .... Je ne pense pas que ça marchera pendant le premier chargement, mais moi c'était vraiment ce qui me manquait .... Merci! –
@Icepickle En regardant à nouveau, j'ai réalisé que cela ne devrait pas être un problème. La première boucle devrait la réinitialiser à ce qu'elle était à l'origine et la seconde le trie. –