Элемент наведения над другими элементами - PullRequest
0 голосов
/ 21 марта 2019

У меня есть боковая навигация. При щелчке по значку он переключает ширину родительского div в полный контент. Каждый элемент навигации с родительским элементом представляет собой div с некоторым вспомогательным текстом и ссылками. При нажатии на мою иконку применяется класс slimNav, поэтому при наведении указателя мыши на конкретный модуль я хочу, чтобы этот div немного расширялся, добавлял фон и находился поверх окружающих элементов. Но что происходит, так это то, что элементы под находящимся предметом движутся вверх.

Вот HTML

<div class="slimNav" data-bind="foreach: modules">
    <div class="modules" data-bind="click: showModuleNodes">
        <div class="block">
            <i data-bind="css: cssClass" class="fa-alignment"></i>
        </div>
        <div class="headertooltip">
            <span class="headertooltiptext" data-bind="text: name"></span>
        </div>

        <div class="tooltip">
            <span data-bind="text: name" class="header"></span>
            <ul class="tooltiptext" data-bind="foreach: nodes, visible: nodesVisible">
                <!-- ko template: hasChildren() ? "has-child-node" : "no-child-node" --><!-- /ko -->
            </ul>
        </div>
    </div>
</div>

CSS

.slimNav .modules:hover {
  position:absolute;
  left:0;
  z-index:10;
  background:green;
  width:205px;
  padding:5px;
}

Вот оно в режиме slim enter image description here

Теперь, когда я наведу курсор, заметьте, как элементы под скрытым изображением скользят вверх.

enter image description here

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Вместо использования position: absolute установите вашу позицию на position: relative.Абсолют больше не будет рассматривать другие элементы вокруг него.

0 голосов
/ 21 марта 2019

Это происходит потому, что вы абсолютно позиционируете свою иконку при наведении, убирая элемент из потока макета документа. Это освобождает пространство, которое занимал значок, что приводит к смещению всех значков ниже в это вновь занятое пространство.

https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning

Чтобы исправить это, вам просто нужно убедиться, что ваш значок не вынут из потока документов.

Один из способов сделать это - продублировать значок состояния при наведении, например:

.nav {
  display: inline-block;
}

.nav__item {
  cursor: pointer;
  position: relative;
}

.nav__item__hover {
  position: absolute;
  top: 0;
  left: 0;
  white-space: nowrap;
  align-items: center;
  background: green;
  padding-right: 5px;
  display: none;
}

.nav__item:hover .nav__item__hover {
  display: flex;
}

.nav__item__hover svg {
  padding-right: 10px;
}

.nav__item__hover svg {
  fill: red;
}
<div class="nav">
  <div class="nav__item">
    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 5v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2H5c-1.11 0-2 .9-2 2zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
    <div class="nav__item__hover">
      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 5v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2H5c-1.11 0-2 .9-2 2zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
      Fund Management
    </div>
  </div>
  <div class="nav__item">
    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 5v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2H5c-1.11 0-2 .9-2 2zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
    <div class="nav__item__hover">
      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 5v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2H5c-1.11 0-2 .9-2 2zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
      Fund Management
    </div>
  </div>
  <div class="nav__item">
    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 5v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2H5c-1.11 0-2 .9-2 2zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
    <div class="nav__item__hover">
      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 5v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2H5c-1.11 0-2 .9-2 2zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
      Fund Management
    </div>
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...