загрузочный поповер не показывается поверх всех элементов

100

Я работаю над сайтом начальной загрузки и после обновления до bootstrap 2.2 из 2.0 все работает, кроме popover.

Поппоры по-прежнему отображаются хорошо, но они не отображаются поверх всех других элементов.

<div> // this sits on top of the popover. this did not happen before cleaning up scripts.
     <div>  //popover shows on top of this
          <div> //popover shows on top of this
               //link here with popover in it.
          </div>
     </div>
</div>

Кто-нибудь знает, почему изменилось поведение popover или как я могу это исправить? Спасибо.

Теги:
popover

11 ответов

287
Лучший ответ

Мне удалось решить проблему, установив data-container="body" в элемент html

HTML пример:

<a href="#" data-toggle="tooltip" data-container="body" title="first tooltip">
    hover over me
</a>

JavaScript пример:

$('your element').tooltip({ container: 'body' }) 

Обнаружено по этой ссылке: https://github.com/twitter/bootstrap/issues/5889

  • 17
    Это действительно помогло. Я сделал следующее изменение в инициализации popover, и это сработало: $ ('# element'). Popover ({container: 'body', // Прочие параметры});
  • 0
    Я получил 404 за эту ссылку. Обновите, пожалуйста?
Показать ещё 12 комментариев
34

Это работает для меня

$().popover({container: 'body'})
  • 0
    Большое спасибо, вы спасли меня: D
  • 0
    Это сработало и для меня. важно знать, какое значение необходимо установить для свойства контейнера. Просто для справки: содержимое скопировано из документа всплывающих окон начальной загрузки: «Если у вас есть несколько стилей в родительском элементе, которые мешают всплывающему элементу, вы захотите указать пользовательский контейнер, чтобы вместо него в этом элементе отображался HTML-код всплывающего окна».
17

У меня была ситуация, похожая на это, с использованием библиотеки JQuery DataTables с включенной прокруткой.

То, что оказалось не связано с Z-индексами, но с одним из вложенных div, имеющих свойство переполнения CSS, установлено как скрытое.

Я исправил это, добавив событие в мой элемент, запускающий popover, который также изменил свойство переполнения ответственного div на видимое.

  • 6
    Вы только что сэкономили 2+ часа моей жизни. Очень благодарен!
  • 1
    Вы спасатель жизни! Все ответы, которые я читал, были о z-index, и, честно говоря, это было единственное, что имело смысл для меня, но в конце концов, ни одно из предложений не сработало, пока я не решил попробовать ваш z-index несвязанный ответ! Thanx
Показать ещё 1 комментарий
13

Наиболее вероятной причиной является то, что отображение содержимого над popover имеет более высокий z-index. Без точного кода/стиля я могу предложить два варианта:

Вы должны попытаться определить точные элементы с помощью веб-инспектора (обычно F12 в вашем любимом браузере) и проверить их фактические z-index.

Если вы найдете это значение, вы можете установить его ниже, чем popover, который z-index: 1010; по умолчанию


Или другой подход, а не как хороший, - это увеличить z-index popover. Вы можете сделать это либо с помощью @zindexPopover в файлах Less или напрямую, переопределив

.popover {
    z-index: 1010; /* A value higher than 1010 that solves the problem */
}

Если вы не можете найти решение, попробуйте воспроизвести ошибку в чем-то вроде this jsfiddle - вы, вероятно, решите проблему, пытаясь получить ошибку.

  • 0
    Я попытаюсь сделать jsfiddle и опубликовать ответ, если я не найду его, но я попытался сделать поповер z-index 9999 без удачи.
  • 1
    спасибо за указание значения z-index по умолчанию для popover.
9

У меня была аналогичная проблема с 2-мя фиксированными элементами - несмотря на то, что heirachy z-index был правильным, всплывающая подсказка bootstrap была скрыта за одним элементом wth более низким z-индексом.

Добавление data-container="body" разрешило проблему и теперь работает как ожидалось.

5

Если data-container = "body" не работает, попробуйте другие два свойства:

data-container="body" style="z-index:1000; position:relative"

z-index должен быть максимальным.

2

Это лучшее решение, если вы используете angular uib-bootsrap, - это использовать инъекцию зависимостей для $uibTooltipProvider, вы можете изменить способ всплывания всплывающих подсказок по умолчанию для всех всплывающих подсказок.

$uibTooltipProvider.options({
  appendToBody: true
});

$uibTooltipProvider Через $uibTooltipProvider вы можете изменить способ отображения всплывающих подсказок и popovers по умолчанию; атрибуты выше всегда имеют приоритет. Доступны следующие методы:

setTriggers (obj) (Пример: {'openTrigger': 'closeTrigger'}) - Расширяет сопоставления триггеров по умолчанию, упомянутые выше, с собственными сопоставлениями.

параметры (obj). Предоставьте набор значений по умолчанию для определенных атрибутов подсказки и popover. В настоящее время поддерживает те, у которых есть значок C.

0
<div class="testDiv">
<a tabindex = "-1" id="testPop" title="stuff" data-toggle="popover" data-trigger="focus" data-placement="bottom" data-container=".testDiv">
 <i class="fa fa-info-circle"></i>
</a>

</div>

Выше ответы были полезны, поскольку значение параметра в контейнере данных выполняло задание, но если я установил data-container = "body", тогда он не будет правильно выравниваться в моем случае. Поэтому я указал класс родительского div popover и работал нормально.

html

данных контейнера = "testDiv"

JS

$( "# testPop" ). popover ({container: '.testDiv'})

0

В моем случае мне пришлось использовать опцию popover template и добавить свой собственный класс css в шаблон html:

        $("[data-toggle='popover']").popover(
          {
            container: 'body',
            template: '<div class="popover top-modal" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
       });

Css:

.top-modal {
  z-index: 99999;
}
0

Просто используя

$().popover({container: 'body'})

может быть недостаточно при отображении popover над модальным модулем BootstrapDialog, который также использует тело в качестве контейнера и имеет более высокий индекс z.

Я пришел с этим исправлением, которое использует внутренние элементы Bootstrap3 (может не работать с 2.x/4.x), но большинство современных установок Bootstrap - 3.x.

self.$anchor.on('shown.bs.popover', function(ev) {
    var tipCSS = self.$anchor.data('tipCSS');
    if (tipCSS !== undefined) {
        self.$anchor.data('bs.popover').$tip.css(tipCSS);
    }
    // ...
});

Таким образом, у разных popovers могут быть разные z-index, некоторые из них находятся в модуле BootstrapDialog, а другие - над ним.

0

Это может быть связано с главным списком z-index на variables.less. В общем, убедитесь, что ваш файл variables.less является правильным и актуальным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню