Je conçois une page en utilisant Bootstrap 3. J'essaie d'utiliser un popover avec placement: right
sur un élément d'entrée. Le nouveau Bootstrap garantit que si vous utilisez, form-control
vous disposez essentiellement d'un élément d'entrée pleine largeur.
Le code HTML ressemble à ceci:
<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>
La largeur des popovers est trop faible, à mon avis, car il n'y a plus de largeur dans le div. Je veux le formulaire de saisie sur le côté gauche, et un large popover sur le côté droit.
Surtout, je cherche une solution où je n'ai pas à remplacer Bootstrap.
Le JsFiddle attaché. La deuxième option d'entrée. Je n'ai pas beaucoup utilisé jsfiddle, alors je ne sais pas, mais essayez d'augmenter la taille de la boîte de sortie pour voir les résultats, sur des écrans plus petits, même pas. http://jsfiddle.net/Rqx8T/
la source
$('[data-toggle="popover"]').popover({ container: 'body' });
!important
data-container="body"
sur l'élémentcontainer: "body"
.J'avais également besoin d'un popover plus large pour un champ de texte de recherche. J'ai trouvé cette solution Javascript (ici dans Coffee ):
La solution de contournement est dans la dernière ligne. Avant l'affichage du popover, l'option max-width est définie sur une valeur personnalisée. Vous pouvez également ajouter une classe personnalisée à l'élément tip.
la source
.on("show.bs.popover", function(){ $(this).data("bs.popover").tip().css("max-width", "600px"); });
max-width
. Merci pour cette solution! Btw au lieu de"600px"
, je l'ai réglé sur"none"
. C'est mieux pour moi.J'ai eu le même problème. J'ai passé pas mal de temps à chercher une réponse et j'ai trouvé ma propre solution: ajoutez le texte suivant à la tête:
la source
Pour changer la largeur, vous pouvez utiliser css
Pour une taille fixe recherchée
Pour largeur max souhaitée:
jsfiddle : http://jsfiddle.net/Rqx8T/2/
la source
Pour modifier la largeur du popover, vous pouvez remplacer le modèle:
la source
max-width: 500px
du style.Pour les personnes qui préfèrent la solution JavaScript. Dans Bootstrap 4, tip () est devenu getTipElement () et renvoie un objet no jQuery. Donc, pour changer la largeur du popover dans Bootstrap 4, vous pouvez utiliser:
la source
width
ne le sont pasmax-width
Fondamentalement, je mets le code popover dans la ligne div, au lieu de la div d'entrée. Résolu le problème.
la source
Avec l'aide de ce que @EML a décrit ci-dessus concernant le popover sur les fenêtres modales et également le code affiché par @ 2called-chaos, voici comment j'ai résolu le problème.
J'ai une icône sur le modal qui, lorsque vous cliquez dessus, devrait apparaître
Mon HTML
Mon script
la source
Pas de solution finale ici: / Juste quelques réflexions sur la façon de résoudre "proprement" ce problème ...
Version mise à jour (jQuery 1.11 + Bootstrap 3.1.1 + class = "col-xs-" au lieu de class = "col-md-") de votre JSFiddle d'origine: http://jsfiddle.net/tkrotoff/N99h7/
Maintenant le même JSFiddle avec votre solution proposée : http://jsfiddle.net/tkrotoff/N99h7/8/
Cela ne fonctionne pas: le popover est positionné par rapport au
<div class="col-*">
+ imaginez que vous avez plusieurs entrées pour le même<div class="col-*">
...Donc, si nous voulons garder le popover sur les entrées (sémantiquement mieux):
.popover { position: fixed; }
: mais à chaque fois que vous faites défiler la page, le popover ne suivra pas le défilement.popover { width: 100%; }
: pas si bon car vous dépendez toujours de la largeur du parent (ie<div class="col-*">
.popover-content { white-space: nowrap; }
: bon uniquement si le texte à l'intérieur du popover est plus court quemax-width
Voir http://jsfiddle.net/tkrotoff/N99h7/11/
Peut-être qu'en utilisant des navigateurs très récents, les nouvelles valeurs de largeur CSS peuvent résoudre le problème, je n'ai pas essayé.
la source
container: 'body'
fait normalement l'affaire (voir la réponse de JustAnil ci-dessus), mais il y a un problème si votre popover est dans un modal. Lez-index
place derrière le modal lorsque le popover est attaché àbody
. Cela semble être lié au problème BS2 5014 , mais je l'obtiens sur 3.1.1. Vous n'êtes pas censé utiliser uncontainer
debody
, mais si vous corrigez le codepuis vous
z-index
résolvez le problème, mais la largeur du popover est toujours incorrecte.Le seul correctif que je peux trouver est d'utiliser
container: 'body'
et d'ajouter des CSS supplémentaires:Notez que les solutions CSS en elles-mêmes ne fonctionneront pas.
la source
tooltip-append-to-body
, elle est apparue derrière le modal et le fond modal 'grisé'.Vous pouvez utiliser l'attribut data-container = "body" dans popover
la source
Voici la façon non-coffeescript de le faire avec le survol:
la source
Une solution testée pour Bootstrap 4 beta:
Avec l'instruction jQuery:
Side note,
data-container="body"
oucontainer: "body"
soit en HTML ou en tant queoption
l'popover({})
objet n'a pas vraiment faire l'affaire [peut - être le faire un travail , mais seulement en même temps que la déclaration CSS];N'oubliez pas non plus que Bootstrap 4 beta repose sur popper.js pour son positionnement popover et info-bulle (avant c'était tether.js)
la source
Vous pouvez ajuster la largeur du popover avec les méthodes indiquées ci-dessus, mais la meilleure chose à faire est de définir la largeur du contenu avant que Bootstrap ne le voit et ne fasse son calcul. Par exemple, j'avais une table, j'ai défini sa largeur, puis bootstrap a construit un popover pour lui convenir. (Parfois, Bootstrap a du mal à déterminer la largeur, et vous devez intervenir et tenir sa main)
la source
J'ai utilisé cela (fonctionne bien):
la source
Je termine en définissant la largeur div "popover-content" au nombre que je veux. (les autres identifiants ou classes ne fonctionneront pas .....) Bonne chance!
la source
vous pouvez également ajouter le data-container = "body" qui devrait faire le travail:
la source
Vous pouvez modifier le modèle de votre popover. Soit avec l'
data-template
attribut-soit avec la partie pertinente de la fonction qui le configure:la source
Pour un composant tapuscrit:
la source
Dans Angular,
ng-bootstrap
vous pouvez simplementcontainer="body"
accéder au contrôle qui déclenche le popover (comme un bouton ou une zone de texte). Ensuite, dans votre fichier de style global (style.css
oustyle.scss
), vous devez ajouter.popover { max-width: 100% !important; }
. Après cela, le contenu du popover sera automatiquement défini sur sa largeur de contenu.la source
Dans bootstrap 4, vous pouvez simplement remplacer la valeur par défaut de la variable bootstrap
$popover-max-width
dans votre fichier styles.scss comme ceci:En savoir plus sur la substitution des valeurs par défaut de bootstrap 4 https://getbootstrap.com/docs/4.0/getting-started/theming/#variable-defaults
la source
Sur Bootstrap 4, vous pouvez facilement revoir l'option de modèle, en remplaçant la largeur maximale:
C'est une bonne solution si vous avez plusieurs popovers sur la page.
la source
Essaye ça:
la source
$('.popover').css('width', popover_size + 'px');
Étant donné que popover_size est analysé comme un entier. Une autre chose est la suivante:popover_size = ((parseInt(string[0])+350));
ajoutera une largeur supplémentaire.