Ich entwerfe eine Seite mit Bootstrap 3. Ich versuche, ein Popover mit placement: right
einem Eingabeelement zu verwenden. Der neue Bootstrap stellt sicher, dass Sie bei Verwendung form-control
grundsätzlich ein Eingabeelement in voller Breite haben.
Der HTML-Code sieht ungefähr so aus:
<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>
Die Popover-Breite ist meiner Meinung nach zu gering, da im div keine Breite mehr vorhanden ist. Ich möchte das Eingabeformular auf der linken Seite und ein breites Popover auf der rechten Seite.
Meistens suche ich nach einer Lösung, bei der ich Bootstrap nicht überschreiben muss.
Die angehängte JsFiddle. Die zweite Eingabemöglichkeit. Ich habe jsfiddle nicht oft verwendet, weiß es also nicht, aber versuche, das Ausgabefeld zu vergrößern, um Ergebnisse zu sehen. Auf kleineren Bildschirmen wird es nicht einmal angezeigt. http://jsfiddle.net/Rqx8T/
quelle
$('[data-toggle="popover"]').popover({ container: 'body' });
!important
data-container="body"
für das Elementcontainer: "body"
.Ich brauchte auch ein breiteres Popover für ein Suchtextfeld. Ich habe mir diese Javascript-Lösung ausgedacht (hier in Coffee ):
Die Problemumgehung befindet sich in der letzten Zeile. Bevor das Popover angezeigt wird, wird die Option für die maximale Breite auf einen benutzerdefinierten Wert festgelegt. Sie können dem tip-Element auch eine benutzerdefinierte Klasse hinzufügen.
quelle
.on("show.bs.popover", function(){ $(this).data("bs.popover").tip().css("max-width", "600px"); });
max-width
. Vielen Dank für diese Lösung! Übrigens habe"600px"
ich es auf eingestellt"none"
. Es ist besser für mich.Ich hatte das gleiche Problem. Ich habe einige Zeit auf der Suche nach einer Antwort verbracht und meine eigene Lösung gefunden: Fügen Sie dem Kopf folgenden Text hinzu:
quelle
Um die Breite zu ändern, können Sie CSS verwenden
Für feste Größe gesucht
Für maximale Breite gewünscht:
jsfiddle : http://jsfiddle.net/Rqx8T/2/
quelle
Um die Popover-Breite zu ändern, können Sie die Vorlage überschreiben:
quelle
max-width: 500px
den Stil ergänzen .Für Leute, die die JavaScript-Lösung bevorzugen. In Bootstrap 4 wurde tip () zu getTipElement () und gibt ein no jQuery-Objekt zurück. Um die Breite des Popovers in Bootstrap 4 zu ändern, können Sie Folgendes verwenden:
quelle
width
nicht vorgenommen wurdenmax-width
Grundsätzlich setze ich den Popover-Code in die Zeile div, anstelle der Eingabe div. Problem gelöst.
quelle
Mit Hilfe dessen, was @EML oben in Bezug auf Popover in modalen Fenstern beschrieben hat, und des Codes, der von @ 2called-Chaos angezeigt wird, habe ich das Problem auf diese Weise gelöst.
Ich habe ein Symbol auf dem Modal, das beim Klicken auf das Popup angezeigt wird
Mein HTML
Mein Skript
quelle
Keine endgültige Lösung hier: / Nur ein paar Gedanken, wie man dieses Problem "sauber" löst ...
Aktualisierte Version (jQuery 1.11 + Bootstrap 3.1.1 + class = "col-xs-" anstelle von class = "col-md-") Ihrer ursprünglichen JSFiddle: http://jsfiddle.net/tkrotoff/N99h7/
Jetzt das gleiche JSFiddle mit Ihrer vorgeschlagenen Lösung : http://jsfiddle.net/tkrotoff/N99h7/8/
Es funktioniert nicht: Das Popover ist relativ zum
<div class="col-*">
+ positioniert. Stellen Sie sich vor, Sie haben mehrere Eingänge für dasselbe<div class="col-*">
...Wenn wir also das Popover auf den Eingaben behalten möchten (semantisch besser):
.popover { position: fixed; }
: aber jedes Mal, wenn Sie die Seite scrollen, folgt das Popover nicht dem Bildlauf.popover { width: 100%; }
: nicht so gut, da Sie immer noch von der übergeordneten Breite abhängen (dh<div class="col-*">
.popover-content { white-space: nowrap; }
: Nur gut, wenn der Text im Popover kürzer als istmax-width
Sehen http://jsfiddle.net/tkrotoff/N99h7/11/
Vielleicht können die neuen CSS- Breitenwerte mit den neuesten Browsern das Problem lösen, ich habe es nicht versucht.
quelle
container: 'body'
Normalerweise macht er den Trick (siehe JustAnils Antwort oben), aber es gibt ein Problem, wenn sich Ihr Popover in einem Modal befindet. Dasz-index
platziert es hinter dem Modal, wenn das Popover angehängt istbody
. Dies scheint mit BS2-Problem 5014 zu tun zu haben , aber ich bekomme es auf 3.1.1. Sie sind nicht ein zu verwenden , bedeutetecontainer
derbody
, aber wenn Sie zu beheben , den Code zudann reparierst du das
z-index
Problem, aber die Popover-Breite ist immer noch falsch.Die einzige Lösung, die ich finden kann, ist die Verwendung
container: 'body'
und das Hinzufügen von zusätzlichem CSS:Beachten Sie, dass CSS-Lösungen allein nicht funktionieren.
quelle
tooltip-append-to-body
wurde. Es wurde hinter dem modalen und dem modalen "ausgegrauten" Hintergrund angezeigt.Sie können das Attribut data-container = "body" im Popover verwenden
quelle
Hier ist die Nicht-Coffeescript-Methode, um dies mit Hover zu tun:
quelle
Eine getestete Lösung für Bootstrap 4 Beta:
Zusammen mit der jQuery-Anweisung:
Randnotiz
data-container="body"
odercontainer: "body"
entweder in HTML oder alsoption
zu dempopover({})
Objekt hat nicht wirklich den Trick gemacht [vielleicht funktioniert das do, aber nur zusammen mit der CSS-Anweisung];Denken Sie auch daran, dass Bootstrap 4 Beta für die Popover- und Tooltip-Positionierung auf popper.js basiert (zuvor war es tether.js).
quelle
Sie können die Breite des Popovers mit den oben angegebenen Methoden anpassen. Am besten definieren Sie jedoch die Breite des Inhalts, bevor Bootstrap sieht und berechnet. Zum Beispiel hatte ich eine Tabelle, ich definierte ihre Breite, dann baute Bootstrap ein Popover, um es anzupassen. (Manchmal hat Bootstrap Probleme, die Breite zu bestimmen, und Sie müssen einspringen und die Hand halten.)
quelle
Ich habe das benutzt (funktioniert gut):
quelle
Am Ende setze ich die Breite von div "popover-content" auf die gewünschte Zahl. (andere IDs oder Klassen funktionieren nicht .....) Viel Glück!
quelle
Sie können auch den Datencontainer = "body" hinzufügen, der die Aufgabe übernehmen soll:
quelle
Sie können die Vorlage Ihres Popovers ändern. Entweder mit dem
data-template
-attribute oder mit dem relevanten Teil in der Funktion, die es einrichtet:quelle
Für eine Typoskriptkomponente:
quelle
In Angular können
ng-bootstrap
Sie einfachcontainer="body"
zu dem Steuerelement wechseln, das ein Popover auslöst (z. B. Schaltfläche oder Textfeld). Dann müssen Sie in Ihrer globalen Stildatei (style.css
oderstyle.scss
) Datei hinzufügen.popover { max-width: 100% !important; }
. Danach wird der Inhalt des Popovers automatisch auf seine Inhaltsbreite eingestellt.quelle
In Bootstrap 4 können Sie den Standardwert der Bootstrap-Variablen
$popover-max-width
in Ihrer Datei styles.scss einfach wie folgt überschreiben:Weitere Informationen zum Überschreiben der Bootstrap 4-Standardeinstellungen finden Sie unter https://getbootstrap.com/docs/4.0/getting-started/theming/#variable-defaults
quelle
In Bootstrap 4 können Sie die Vorlagenoption einfach überprüfen, indem Sie die maximale Breite überschreiben:
Dies ist eine gute Lösung, wenn Sie mehrere Popover auf der Seite haben.
quelle
Versuche dies:
quelle
$('.popover').css('width', popover_size + 'px');
Da popover_size als Ganzzahl analysiert wird. Eine andere Sache ist die:popover_size = ((parseInt(string[0])+350));
Fügt zusätzliche Breite hinzu.