popover завантажувача не відображається поверх усіх елементів


128

Я працюю на сайті завантаження і після оновлення до 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>

Хтось має уявлення про те, чому змінилася поведінка попу, або як я можу це виправити? Дякую.

Відповіді:


365

Мені вдалося вирішити проблему, встановивши 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/isissue/5889


18
Це справді допомогло. Я змінив ініціалізацію popover, і вона спрацювала: $ ('# елемент'). Popover ({контейнер: 'body', // інші параметри});
— Pawan Pillai

Я отримав 404 за це посилання. Оновіть, будь ласка?
— NoBrainer

3
@NoBrainer Не можу знайти нове посилання на нього, але додавання data-container = "body" до елемента html має працювати, або передача в контейнер: 'body' через javascript також має працювати
— Kyle

додавання data-container = "body", здається, працює і в завантажувальній 3, а також підказки, коли вони, наприклад, переповнюються
— bulanmaster

1
Хоча це вирішує оригінальну проблему z-index, popover не прилипає до оригінального тригерного елемента, як тільки ви починаєте перетягувати речі по екрану, збільшувати чи зменшувати масштаб або змінювати розмір вікна. Шукаю кращої відповіді на це сам.
— MSC

44

Це працює для мене

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

1
Велике спасибі, ви врятували мене: D
— Вуонг Тран

Це працювало і для мене. важливо знати, яке значення потрібно встановити для властивості "контейнер". Для довідки, вміст, скопійований з документа про перехід завантажувального пристрою - "Коли у вас є деякі стилі на батьківському елементі, які заважають переїзду, вам потрібно вказати спеціальний контейнер, щоб замість цього елемента з'явився HTML-код поповера".
— Нірман

24

У мене просто була ситуація, яка була подібною до цієї, залучаючи бібліотеку DataTables JQuery з увімкненою прокруткою.

Те, що виявилося, не має нічого спільного з Z-індексами, але з одним із додаючих дівок, що властивість переповнення CSS встановлено як приховане.

Я виправив це, додавши події до мого елемента, що запускає popover, що також змінило властивість переповнення відповідального діла на видиме.


7
Ти щойно врятував 2+ години мого життя. Надзвичайно вдячний!
— Ольга Гнатенко

1
Ти рятівник життя !! Усі відповіді, які я читав, стосувалися z-індексу, і якщо чесно, це було єдине, що для мене мало сенс, але, врешті-решт, жодна з пропозицій не спрацювала, поки я не вирішив спробувати вашу незв’язану відповідь z-index! Дякую
— Себастьян

Це також була моя проблема, велике спасибі за те, що врятували мені години переробки, оскільки я думав, що мій код зламаний.
— GETah

17

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

Спробуйте встановити точні елементи веб-інспектором (як правило, F12 у вашому улюбленому браузері) і перевірити їх фактичну z-index.

Якщо ви знайдете це значення, ви можете встановити його нижче, ніж переповнений, який z-index: 1010;за замовчуванням


Або іншим підходом, не таким хорошим, було б збільшити z-indexпотужність. Зробити це можна або з @zindexPopoverфайлами "Менше", або безпосередньо шляхом зміни

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

Якщо ви не можете знайти рішення, спробуйте відтворити помилку в чомусь подібному jsfiddle - ви, ймовірно, вирішите проблему, намагаючись отримати помилку.


Я спробую скласти jsfiddle і відіслати назад, якщо я не знайду його, але я спробував зробити popover z-індексом 9999 без удачі.
— Кайл

1
дякую за вказівку типового значення z-індексу popover.
— Буде Тартак

12

У мене була аналогічна проблема з двома фіксованими елементами - навіть незважаючи на те, що ірахія z-індексу була правильною, підказка bootstrap була прихована за одним елементом із нижчим z-індексом.

Додавання data-container="body"вирішило проблему і зараз працює як очікувалося.


8

Якщо data-container = "body" не працює, ніж спробуйте інші два властивості:

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

z-індекс повинен бути максимальним обмеженням.


5
<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", то в моєму випадку воно не вирівняється належним чином. Тож я вказав клас батьківського діва Popover, і він працював чудово.

html

data-container = ". testDiv"

js

$ ("# testPop"). popover ({контейнер: '.testDiv'})


2

Найкраще рішення, якщо ви використовуєте кутовий uib-bootsrap, - Використовувати ін'єкцію залежності для $ uibTooltipProvider, ви можете змінити спосіб підказки та попового режиму за замовчуванням для всіх підказок.

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

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

setTriggers (obj) (Приклад: {'openTrigger': 'closeTrigger'}) - розширює вказані вище відображення за замовчуванням на власні відображення.

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


2

Через багато років, але, як я, інші можуть шукати цього. Усі оновлення, беручи до уваги, все це можна вирішити за допомогою правильних параметрів ініціалізації в JavaScript.

$('.tip').tooltip({
    boundary: 'viewport',
    placement: 'top',
    container:'body',
    sanitize: true,
    appendToBody: true
});

Ці налаштування вирішили всі проблеми. У мене мерехтіли підказки, показуючи прямо лише для половини елементів на сторінці, безперервно стрибаючи зверху вліво, всілякі безтурботності. Але з тими налаштуваннями все вирішено. Сподіваюся, це допоможе кожному, хто шукає.


0

Просто за допомогою

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

може виявитися недостатньо при відображенні переходу через модаль 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);
    }
    // ...
});

Таким чином, різні поповери можуть мати різний z-індекс, деякі знаходяться під модальним BootstrapDialog, а інші - над ним.


0

У моєму випадку мені довелося скористатися параметром шаблону popover і додати свій власний клас 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
Problem solved with data-container="body" and z-index
1->
<div class="button btn-align"
data-container="body"  
data-toggle="popover"
data-placement="top"
title="Top"
data-trigger="hover"
data-title-backcolor="#fff"
data-content="A top aligned popover is a really boring thing in the real 
life.">Top</div>
2->
.ggpopover.in {
z-index: 9999 !important;
}

0
  $('[data-toggle="popover"]').popover({
        placement: 'top',
        boundary: 'viewport',
        trigger: 'hover',
        html: true,
        content: function () {
            let content = $(this).attr("data-popover-content");
            return $(content).html();
        }
    });,



`placement`: 'top',
`boundary`: 'viewport'
both needed

0

Якщо у вас є деякі стилі батьківського елемента, які перешкоджають переїзду, вам потрібно вказати спеціальний контейнер, щоб замість цього елемента відображався HTML-код поповера.

Наприклад, скажімо, що батько для Popover - це тіло, яке ви можете використовувати.

    <a href="#" data-toggle="tooltip" data-container="body"> Popover One </a>

Інший випадок може бути, коли Popover розміщується всередині якогось іншого елемента і ви хочете показати popover над цим елементом, тоді вам потрібно буде вказати цей елемент у контейнері даних. Наприклад: Припустимо, у нас є перехід всередину модаля завантаження з id як "modal-two", тоді вам потрібно встановити "контейнер даних" на "modal-two".

    <a href="#" data-toggle="tooltip" data-container="#modal-two"> Popover Two </a>

-1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.