Обнаружение переполнения пунктов меню не всегда рассчитывается правильноCSS

Разбираемся в CSS
Ответить Пред. темаСлед. тема
Anonymous
 Обнаружение переполнения пунктов меню не всегда рассчитывается правильно

Сообщение Anonymous »

Я пытаюсь вычислить, есть ли в горизонтальном меню место для всех элементов меню, а если нет, то помещаю переполненные элементы в раскрывающийся список.
Вот что у меня есть. Это работает - почти - потому что иногда рассчитывается неправильно. Попробуйте изменить размер окна — вы увидите что-то вроде этого:
Изображение


Код: Выделить всё

const nav = document.querySelector(".navbar");
const contentBar = nav.querySelector(".navbar-nav");
const navItems = document.querySelectorAll(".navbar-nav > li:not(.grouped)");
const allItems = contentBar.querySelectorAll('li');
const dropdown = nav.querySelector(".grouped-content");
const more = nav.querySelector(".grouped");

const update = () => {
// Show all items for exact calculation
allItems.forEach((item) => {
item.classList.remove('d-none');
});

let avaliableWidth = nav.offsetWidth;
let stopWidth = more.offsetWidth;
let subitems = [];
dropdown.innerHTML = "";

navItems.forEach((item, i) => {
// Calculate if menu items are wider than navbar
if (avaliableWidth >  stopWidth + item.offsetWidth) {
stopWidth += item.offsetWidth;
} else {
// Not enough space
let li = document.createElement("li");
li.innerHTML = item.innerHTML;
// Append overflowing menu items to dropdown
dropdown.appendChild(li);
// Hide items that won't fit in menu
item.classList.add('d-none');
// Count items in dropdown
subitems.push(i);
}
})

// Hide "More" item if it has no children
if (!subitems.length) {
more.classList.add('d-none');
}
}

update();
window.addEventListener("resize", update);

Код: Выделить всё

.nav-link {
white-space: nowrap;
max-width: 100px;
text-overflow: ellipsis;
overflow: hidden;
}
[*]




< /code>
< /div>
< /div>
< /p>
Что мне не хватает?
заранее. < / п>

Подробнее здесь: https://stackoverflow.com/questions/792 ... -correctly
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Обнаружение переполнения пунктов меню не всегда рассчитывается правильно
    Anonymous » » в форуме CSS
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Обнаружение переполнения пунктов меню не всегда рассчитывается правильно
    Anonymous » » в форуме CSS
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Обнаружение переполнения пунктов меню не всегда рассчитывается правильно
    Anonymous » » в форуме CSS
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как включить всплывающие подсказки для пунктов меню в qt
    Гость » » в форуме C++
    0 Ответы
    32 Просмотры
    Последнее сообщение Гость
  • Удалить класс li и идентификатор для пунктов меню и списка страниц
    Anonymous » » в форуме Php
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «CSS»