私はbootstrapサイトで作業しており、2.0からbootstrap 2.2に更新した後、ポップオーバーを除くすべてが機能しました。
ポップオーバーは引き続き表示されますが、他のすべての要素の上に表示されるわけではありません。
<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>
ポップオーバーの動作が変更された理由、またはそれを修正する方法について、誰もが考えていますか?ありがとう。
Html要素にdata-container="body"
を設定することで問題を解決できました
HTML
の例:
<a href="#" data-toggle="tooltip" data-container="body" title="first tooltip">
hover over me
</a>
JavaScript
の例:
$('your element').tooltip({ container: 'body' })
これは私のために働いています
$().popover({container: 'body'})
スクロールが有効になっているDataTables JQueryライブラリを含む、これに似た状況がありました。
判明したのは、Zインデックスとは何の関係もありませんでしたが、CSSオーバーフロープロパティが非表示に設定されている囲みdivの1つです。
ポップオーバーをトリガーする要素にイベントを追加することで修正しました。これにより、責任あるdivのoverflowプロパティも可視に変更されました。
最も可能性の高い原因は、ポップオーバーの上に表示されるコンテンツのz-index
が高いことです。正確なコード/スタイルがなければ、2つのオプションを提供できます。
Webインスペクター(通常、お気に入りのブラウザーではF12)で正確な要素を特定し、実際のz-index
を確認してください。
この値を見つけたら、それを設定できますポップオーバーよりも低いこれはデフォルトで z-index: 1010;
です
または、他のアプローチは、あまり良くありませんが、ポップオーバーのz-index
を増やすことです。 Lessファイルで@zindexPopover
を使用するか、オーバーライドして直接行うことができます
.popover {
z-index: 1010; /* A value higher than 1010 that solves the problem */
}
解決策が見つからない場合は、 this jsfiddle のようにバグを再現してみてください-バグを取得する際に問題を解決できる可能性があります。
2つの固定要素で同様の問題が発生しました。z-indexheirachyが正しいにもかかわらず、bootstrapツールチップは、より低いz-indexを持つ1つの要素の後ろに隠れていました。
data-container="body"
を追加すると問題が解決し、期待どおりに動作するようになりました。
Data-container = "body"が機能しない場合は、他の2つのプロパティを試してください。
data-container="body" style="z-index:1000; position:relative"
z-indexは最大制限である必要があります。
<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に値を設定することでうまくいきましたが、data-container = "body"を設定すると、私の場合は適切に調整されません。だから、私はポップオーバーの親divのクラスを指定し、それはうまく働きました。
html
data-container = "。testDiv"
js
$( "#testPop")。popover({container: '.testDiv'})
angular uib-bootsrapを使用している場合のこの最適なソリューションは、$ uibTooltipProviderに依存性注入を使用することです。ツールチップおよびポップオーバーがデフォルトですべてのツールチップに対して動作する方法を変更できます。
$uibTooltipProvider.options({
appendToBody: true
});
$ uibTooltipProvider $ uibTooltipProviderを使用して、デフォルトでツールチップとポップオーバーの動作を変更できます。上記の属性が常に優先されます。以下の方法が利用可能です:
setTriggers(obj)(例:{'openTrigger': 'closeTrigger'})-上記のデフォルトのトリガーマッピングを独自のマッピングで拡張します。
options(obj)-特定のツールヒントおよびポップオーバー属性のデフォルトのセットを提供します。現在、Cバッジのあるものをサポートしています。
何年も後ですが、私と同じように、他の人がこれを探すかもしれません。 JavaScriptの正しい初期化オプションを使用して、すべての更新を考慮に入れて、これらすべてを解決できます。
$('.tip').tooltip({
boundary: 'viewport',
placement: 'top',
container:'body',
sanitize: true,
appendToBody: true
});
これらの設定はすべての問題を解決しました。私はツールチップがちらつき、ページ上のアイテムの半分だけを共調に表示し、上から左へと連続的にジャンプし、あらゆる種類の奇妙さを見せました。しかし、これらの設定ですべてが解決されます。探している人に役立つことを願っています。
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;
}
ただ使って
$().popover({container: 'body'})
bootstrapDialogモーダル上にポップオーバーを表示する場合、十分ではない可能性があります。モーダルは、ボディもコンテナとして使用し、より高いz-indexを持ちます。
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-indexを持つ場合があり、一部はBootstrapDialogモーダルの下にあり、別のポップオーバーはその上にあります。
$('[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
私の場合、ポップオーバーテンプレートオプションを使用して、独自の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;
}