Bootstrap 3を使用してページをデザインしています。入力要素にplacement: right
を使用してポップオーバーを使用しようとしています。新しいBootstrapにより、form-control
を使用する場合、基本的に全幅の入力要素があることが保証されます。
HTMLコードは次のようになります。
<div class="row">
<div class="col-md-6">
<label for="name">Name:</label>
<input id="name" class="form-control" type="text"
data-toggle="popover" data-trigger="hover"
data-content="My popover content.My popover content.My popover content.My popover content." />
</div>
</div>
Popoverの幅は、divに残っている幅ではないので、私の意見では小さすぎます。左側に入力フォーム、右側に広いポップオーバーが必要です。
主に、Bootstrapをオーバーライドする必要がないソリューションを探しています。
添付のJsFiddle。 2番目の入力オプションjsfiddleをあまり使ったことがないのでわかりませんが、出力ボックスのサイズを大きくして結果を確認してください。小さい画面では表示されないこともあります。 http://jsfiddle.net/Rqx8T/
<div class="row" data-toggle="popover" data-trigger="hover"
data-content="My popover content.My popover content.My popover content.My popover content.">
<div class="col-md-6">
<label for="name">Name:</label>
<input id="name" class="form-control" type="text" />
</div>
</div>
基本的に、ポップオーバーコードを入力divではなく行divに入れます。問題を解決しました。
CSSを使ってポップオーバーの幅を広げることができます。
/* The max width is dependant on the container (more info below) */
.popover{
max-width: 100%; /* Max Width of the popover (depending on the container!) */
}
これでうまくいかない場合は、おそらく以下の解決策を望み、container
要素を変更します。 ( JSFiddleを表示します )
それでもうまくいかない場合は、おそらくコンテナを指定する必要があります。
// Contain the popover within the body NOT the element it was called in.
$('[data-toggle="popover"]').popover({
container: 'body'
});
ポップオーバーは、それがトリガーされる要素内に含まれています。それを「全幅」に拡張するには、コンテナーを指定します。
// Contain the popover within the body NOT the element it was called in.
$('[data-toggle="popover"]').popover({
container: 'body'
});
試してみるにはJSFiddleを見てください。
私はまた検索テキストフィールドのためのより広いポップオーバーが必要でした。私はこのJavascriptソリューションを思いついた(ここで コーヒー ):
$(".product-search-trigger")
.click(-> false) # cancel click on <a> tag
.popover
container: "body"
html: true
placement: "left"
title: "<strong>Product search</strong> enter number or name"
.on("show.bs.popover", -> $(this).data("bs.popover").tip().css(maxWidth: "600px"))
回避策は最後の行にあります。ポップオーバーが表示される前に、max-widthオプションはカスタム値に設定されています。 tip要素にカスタムクラスを追加することもできます。
私は同じ問題を抱えていました。かなりの時間をかけて答えを探して、私自身の解決策を見つけました。頭に以下のテキストを追加してください:
<style type="text/css"> .popover{ max-width:600px; } </style>
幅を変えるにはcssを使います。
固定サイズの場合
.popover{
width:200px;
height:250px;
}
最大幅を希望する場合:
.popover{
max-width:200px;
height:250px;
}
jsfiddle: http://jsfiddle.net/Rqx8T/2/
ポップオーバーの幅を変更するには、テンプレートを上書きします。
$('#name').popover({
template: '<div class="popover" role="tooltip" style="width: 500px;"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"><div class="data-content"></div></div></div>'
})
@EMLがモーダルウィンドウでのポップオーバーと@ 2called-chaosによって示されたコードに関して上記で説明したことを利用して、これが私が問題を解決した方法です。
クリックするとポップアップ表示されるはずのアイコンがモーダルにあります
私のHTML
<i title="" class="glyphicon glyphicon-info-sign" rel="popover" data-title="Several Lines" data-content="A - First line<br />B - Second line - Long line <br />C - Third Line - Long Long Long Line"></i>
私の台本
$('[rel=popover]').popover({
placement: 'bottom',
html: 'true',
container: '#name-of-modal-window .modal-body'
}).on("show.bs.popover", function () { $(this).data("bs.popover").tip().css("max-width", "600px"); });
ここで最終的な解決策はありません:/この問題を「きれいに」解決する方法をいくつか考えてみてください...
オリジナルのJSFiddleの更新バージョン(jQuery 1.11 + Bootstrap 3.1.1 + class = "col-md-"の代わりにclass = "col-xs-"): http://jsfiddle.net/ tkrotoff/N99h7 /
これであなたの 提案された解決策と同じJSFiddle : http://jsfiddle.net/tkrotoff/N99h7/8/
うまくいきません。ポップオーバーは<div class="col-*">
に対して相対的に配置されています。同じ<div class="col-*">
..に対して複数の入力があると想像してください。
それで、もし私達が入力にポップオーバーを保ちたいのなら(意味的にもっと良い):
.popover { position: fixed; }
:しかし、ページをスクロールするたびにポップオーバーはスクロールに追従しません.popover { width: 100%; }
:親の幅にまだ依存しているのでそれほど良くありません(例:<div class="col-*">
).popover-content { white-space: nowrap; }
:ポップオーバー内のテキストがmax-width
より短い場合にのみ有効です参照 http://jsfiddle.net/tkrotoff/N99h7/11/
たぶん、ごく最近のブラウザを使って、 新しいCSSの幅の値 で問題を解決できるかもしれませんが、私は試しませんでした。
container: 'body'
は、通常はうまくいきますが(上のJustAnilの答えを参照)、ポップオーバーがモーダルになっていると問題があります。 z-index
は、ポップオーバーがbody
にアタッチされたときに、の後ろにmodalを配置します。これは BS2 issue 5014 に関連しているようですが、私は3.1.1でそれを得ています。あなたはcontainer
のbody
を使うことを意図していません、しかしあなたがコードを修正するならば
$('#fubar').popover({
trigger : 'hover',
html : true,
dataContainer : '.modal-body',
...etc });
それであなたはz-index
問題を解決します、しかしpopover幅はまだ間違っています。
私が見つけることができる唯一の修正はcontainer: 'body'
を使用してそしていくつかの追加のcssを追加することです:
.popover {
max-width : 400px;
z-index : 1060;
}
CSSソリューションだけではうまくいかないことに注意してください。
Popover内で属性data-container = "body"を使用できます。
<i class="fa fa-info-circle" data-container="body" data-toggle="popover"
data-placement="right" data-trigger="hover" title="Title"
data-content="Your content"></i>
JavaScriptソリューションを好む人々のために。 Bootstrap 4でtip()がgetTipElement()になり、no jQueryオブジェクトを返します。そのため、Bootstrap 4でポップオーバーの幅を変更するには、次のようにします。
}).on("show.bs.popover", function() {
$($(this).data("bs.popover").getTipElement()).css("max-width", "405px");
});
これは、ホバーでそれを行うための非コーヒースクリプトの方法です。
$(".product-search-trigger").popover({
trigger: "hover",
container: "body",
html: true,
placement: "left"
}).on("show.bs.popover", function() {
return $(this).data("bs.popover").tip().css({
maxWidth: "300px"
});
});
});
ポップオーバーの幅は上で示した方法で調整できますが、行うべき最善の方法は、Bootstrapが表示する前にコンテンツの幅を定義してその計算を行うことです。たとえば、私はテーブルを持っていて、幅を定義してからブートストラップでポップオーバーを作りました。 (時々Bootstrapは幅を決定するのに苦労しています、そしてあなたは手を入れてその手を握る必要があります)
<label id="txtLbl">Overview</label> <a tabindex="0" class="btn btn-default" role="button" data-toggle="popover" data-placement="right" id="Pops" ></a>
<div id="popover-content" class="hide">
<div class="popovermenu">
Your content
</div>
</div>
Divの "popover-content"の幅を必要な数に設定することになります。 (他のIDやクラスは動作しません.....)頑張ってください!
#popover-content{
width: 600px;
}
私はこれを使用しました(うまく動作します):
.popover{
background-color:#b94a48;
border:none;
border-radius:unset;
min-width:100px;
width:100%;
max-width:400px;
overflow-wrap:break-Word;
}
仕事をするべきdata-container = "body"を追加することもできます。
<div class="row">
<div class="col-md-6">
<label for="name">Name:</label>
<input id="name" class="form-control" type="text"
data-toggle="popover" data-trigger="hover"
data-container="body"
data-content="My popover content.My popover content.My popover content.My popover content." />
</div>
</div>
Bootstrap 4 Betaのテスト済みソリューションの1つ。
.popover {
min-width: 30em !important;
}
JQueryステートメントと一緒に:
$('[data-toggle="popover"]').popover({
container: 'body',
trigger: 'focus',
html: true,
placement: 'top'
})
サイドノート、HTMLのdata-container="body"
またはcontainer: "body"
、あるいはpopover({})
オブジェクトへのoption
は、実際にはうまくいきませんでした。
また、Bootstrap 4ベータ版は、ポップオーバーとツールチップの配置を popper.js に依存していたことを覚えておいてください(以前はtether.jsでした)。
TypeScriptコンポーネントの場合
@Component({
selector: "your-component",
templateUrl: "your-template.component.html",
styles: [`
:Host >>> .popover {
max-width: 100%;
}
`]
})