Zeilenumbruch in QuickInfos hinzufügen

170

Wie können Zeilenumbrüche in einem HTML-Tooltip hinzugefügt werden?

Ich habe versucht, <br/>und \ninnerhalb des Tooltips wie folgt:

<a href="#" title="Some long text <br/> Second line text \n Third line text">Hover me</a>

Dies war jedoch nutzlos und ich konnte den wörtlichen Text <br/>und \nden Tooltip sehen. Anregungen sind hilfreich.

Aakash Chakravarthy
quelle
3
Ich hatte die gleiche Frage: stackoverflow.com/questions/3320081/…
San
1
benutze <pre> data-html = "true" </ pre> Ref und danke an: stackoverflow.com/a/19001875/2278891
Sunit
In asp.net (C # .NET 4.5 Framework) fügt das Hinzufügen von Environment.NewLineWerken einen Zeilenumbruch von der Codeseite hinzu ... kein Aufwand ... kein Muss ...
Dan B

Antworten:

270

Verwenden Sie einfach den Entitätscode &#013;für einen Zeilenumbruch in einem Titelattribut.

Fred Senese
quelle
17
wenn Entitätscode & # 013; funktioniert nicht, versuchen Sie & # 10; Ich benutze Linux und Chrome nicht sicher über andere Browser
Krishna
3
Ich habe es versucht und es funktioniert, wenn ich es mit inspect element einfüge, aber nicht, wenn ich es in mein HTML einbinde und es mit diesem Zeichen bereitstelle. Gibt es einen offensichtlichen Grund, warum ich vermisst werde?
Riaan Schutte
1
Für mich &#10funktioniert in Windows Chrome 53 nicht. Hat aber gut &#013;funktioniert.
Glücklicher
9
Ich habe gerade beide Versionen verwendet, &#013;&#010;scheint ganz gut zu funktionieren :)
Phe0nix
6
& # 013; funktioniert nicht in Firefox v58. & # 10 funktioniert jedoch einwandfrei. Die Verwendung der @ Phe0nix-Lösung, bei der beide Zeilenumbrüche nach Bedarf verwendet werden, funktioniert gut, damit sie in Chrome, Microsoft Edge und Firefox funktioniert.
Ziemlich cool
69

Fügen Sie einfach ein Datenattribut hinzu

data-html = "true"

und du bist gut zu gehen.

Z.B. Verwendung:

<i data-html="true" class="tooltip ficon-help-icon" twipsy-content-set="true" data-original-title= "<b>Hello</b> Stackoverflow" </i>

Es hat in den meisten Tooltip-Plugins funktioniert, die ich bisher ausprobiert habe.

siwalikm
quelle
3
data-html = "true" mit <br /> im Titeltext funktioniert einwandfrei.
Viks
1
Keine der oben genannten Lösungen hat bei mir funktioniert. Aber dieser funktioniert gut.
Abby
64

Das &#013;kombiniert mit dem Stil Weißraum: Pre-Line; arbeitete für mich.

GuitarWorker
quelle
3
Ich habe eine Weile versucht, dies zum Laufen zu bringen. Die Tatsache, dass der white-space: pre-line;Stil benötigt wird, ist sehr verborgen.
Jim D
@JimD Auf welche Klasse / welches Element muss die Stilregel angewendet werden?
Judah Meek
Für mich funktioniert dies ohne benutzerdefinierte CSS in Tooltips.
ST-DDT
2
Dies ist derjenige, den Sie nach Freunden suchen.
Henrik Petterson
3
Eigentlich sollte der Charakter sein &#010;: stackoverflow.com/questions/6502054/…
Henrik Petterson
30

Dieses CSS hat schließlich in Verbindung mit einem Zeilenvorschub in meinem Editor für mich funktioniert:

.tooltip-inner {
    white-space: pre-wrap;
}

Hier zu finden: Wie kann man Twitter-Bootstrap-Tooltips mit mehreren Zeilen erstellen?

Dan
quelle
@ Dan Kam hier auf der Suche nach Hilfe. Mein Tooltip-Text wurde außerhalb des Rahmens fortgesetzt. Das hat funktioniert! +1
IRGeekSauce
10

Geben Sie \nzwischen dem Text. Es funktioniert in allen Browsern.

Example 
img.tooltip= " Your Text : \n"
img.tooltip += " Your text \n";

Dies wird für mich funktionieren und wird im Code dahinter verwendet.

Hoffe das wird für dich funktionieren

Priyanka Thakur
quelle
10
\n

mit dem Styling

.tooltip-inner {
    white-space: pre-line;
}

arbeitete für mich.

klausf
quelle
4

Ich habe es gefunden. Es kann einfach so gemacht werden

<a ref="#" title="First Line
                  Second Line
                  Third line">Hover Me</a>
Aakash Chakravarthy
quelle
4

Die Javascript-Version

Da &#013;(html) 0D(hex) ist, kann dies als dargestellt werden'\u000d'

str = str.replace(/\n/g, '\u000d');

Zusätzlich,

Teilen Sie mit Ihnen einen AngularJS-Filter , der \ndank der Referenzen in den anderen Antworten durch diesen Charakter ersetzt wird

app.filter('titleLineBreaker', function () {
    return function (str) {
        if (!str) {
            return str;
        }

        return str.replace(/\n/g, '\u000d');
    };
});

Verwendung

<div title="{{ message | titleLineBreaker }}"> </div>
Jossef Harush
quelle
4

Verwenden Sie einfach \ n im Titel und fügen Sie diese CSS hinzu

.tooltip-inner {
    white-space: pre-wrap;
}
Dhanushka
quelle
3

&lt;br /&gt; hat funktioniert, wenn Sie qTip verwenden

Eduardo Molteni
quelle
3

Fügen Sie einfach data-html = "true" hinzu.

<a href="#" title="Some long text <br/> Second line text \n Third line text" data-html="true">Hover me</a>
Babo Darbinyan
quelle
2

Es ist möglich, Zeilenumbrüche in native HTML-QuickInfos einzufügen, indem das title-Attribut einfach auf mehrere Zeilen verteilt wird.

Ich würde jedoch empfehlen, ein jQuery-Tooltip-Plugin wie Q-Tip zu verwenden: http://craigsworks.com/projects/qtip/ .

Es ist einfach einzurichten und zu verwenden. Alternativ gibt es auch viele kostenlose Javascript-Tooltip-Plugins.

edit: Korrektur bei erster Aussage.

Ross
quelle
2

Für mich funktionierte eine 2-Schritt-Lösung (Kombination aus Formatieren des Titels und Hinzufügen des Stils) wie folgt:

1) Formatieren Sie das titleAttribut:

<a ref="#" title="First Line
                  Second Line
                  Third line">Hover Me</a>

2) Fügen Sie dem tipsElement diesen Stil hinzu :

white-space: pre-line;

Getestet in IE8, Firefox 22 und Safari 5.1.7.

user2052547
quelle
Ich finde es allerdings chaotisch, unterbrochene Linien im Code zu haben
Fandango68
2

Fügen Sie einfach dieses Code-Snippet in Ihr Skript ein:

    $(function () {
        $('[data-toggle="tooltip"]').tooltip()
    });

und natürlich wie in den obigen Antworten erwähnt, data-htmlsollte das sein "true". Auf diese Weise können Sie HTML-Tags und Formatierungen innerhalb des titleAttributwerts verwenden.

codiere es
quelle
+1, Ihre Lösung hat funktioniert. mein Beispielcode : data-toggle="tooltip" data-html="true" title="some string <br/> some string".
Pranesh Janarthanan
Gut zu hören, dass 👍
Code es bis
1

Wenn Sie das Dienstprogramm Jquery Tooltip verwenden , finden Sie in der Javascript-Datei "jquery-ui.js" den folgenden Text:

tooltip.find(".ui-tooltip-content").html(content);

und darüber setzen

content=content.replace(/\&lt;/g,'<').replace(/\&gt;/g,'>');

Ich hoffe das klappt auch bei dir.

user2160658
quelle
1

Wenn Sie also bootstrap4 verwenden, funktioniert dies.

<style>
   .tooltip-inner {
    white-space: pre-wrap;
   }

</style>

<script> 
    $(function () {
      $('[data-toggle="tooltip"]').tooltip()
    })
</script>

<a data-toggle="tooltip" data-placement="auto" title=" first line &#010; next line" href= ""> Hover me </a>

Wenn Sie ein Django-Projekt verwenden, können wir dynamische Daten auch in QuickInfos wie den folgenden anzeigen:

<a class="black-text pb-2 pt-1" data-toggle="tooltip" data-placement="auto"  title="{{ post.location }} &#010; {{ post.updated_on }}" href= "{% url 'blog:get_user_profile' post.author.id %}">{{ post.author }}</a>
Mayank Chauhan
quelle
0

Die Lösung für mich war http://jqueryui.com/tooltip/ :

Und hier der Code (der Teil des Skripts, der das macht <br/> Works erstellt, ist "content:"):

HTML-KOPF

<head runat="server">
    <script src="../Scripts/jquery-2.0.3.min.js"></script>
    <link href="Content/themes/base/jquery-ui.css" rel="stylesheet" />
    <script src="../Scripts/jquery-ui-1.10.3.min.js"></script>
<script>
    /*Position:
      my =>  at
      at => element*/
    $(function () {
        $(document).tooltip({
            content: function() {
                var element = $( this );
                if ( element.is( "[title]" ) ) {
                    return element.attr( "title" );
                }

            },
            position: { my: "left bottom-3", at: "center top" } });
    });
</script>
</head>

ASPX- oder HTML-Steuerelement

<asp:TextBox ID="Establecimiento" runat="server" Font-Size="1.3em" placeholder="Establecimiento" title="Texto 1.<br/>TIP: texto 2"></asp:TextBox>

Hoffe das hilft jemandem

Diego P.
quelle
0

Grater than Jquery UI 1.10 unterstützt die Verwendung des HTML-Tags innerhalb des title-Attributs nicht, da es kein gültiges HTML ist.

Die alternative Lösung besteht darin, die Inhaltsoption für QuickInfos zu verwenden. Siehe - http://api.jqueryui.com/tooltip/#option-content

Jaison
quelle
0

Verwenden

&#013

Es sollte keine geben; Charakter.

user1464581
quelle
0

Wenn Sie jquery-ui 1.11.4 verwenden:

var tooltip = $.widget( "ui.tooltip", {
    version: "1.11.4",
    options: {
        content: function() {
            // support: IE<9, Opera in jQuery <1.7
            // .text() can't accept undefined, so coerce to a string
            var title = $( this ).attr( "title" ) || "";
            // Escape title, since we're going from an attribute to raw HTML
Replace-->  //return $( "<a>" ).text( title ).html();
by -->      return $( "<a>" ).html( title );
             },
Peter
quelle
0
AngularJS with Bootstrap UI Tolltip (uib-tooltip), has three versions of tool-tip:

uib-tooltip, uib-tooltip-template und uib-tooltip-html

- uib-tooltip takes only text and will escape any HTML provided
- uib-tooltip-html takes an expression that evaluates to an HTML string
- uib-tooltip-template takes a text that specifies the location of the template

In meinem Fall habe ich mich für uib-tooltip-html entschieden und es gibt drei Teile:

  1. Aufbau
  2. Regler
  3. HTML

Beispiel:

(function(angular) {

//Step 1: configure $sceProvider - this allows the configuration of $sce service.

angular.module('myApp', ['uib.bootstrap'])
       .config(function($sceProvider) {
           $sceProvider.enabled(false);
       });

//Step 2: Set the tooltip content in the controller

angular.module('myApp')
       .controller('myController', myController);

myController.$inject = ['$sce'];

function myController($sce) {
    var vm = this;
    vm.tooltipContent = $sce.trustAsHtml('I am the first line <br /><br />' +
                                         'I am the second line-break');

    return vm;
}

 })(window.angular);

//Step 3: Use the tooltip in HTML (UI)

<div ng-controller="myController as get">
     <span uib-tooltip-html="get.tooltipContent">other Contents</span>
</div>

Weitere Informationen finden Sie hier

Omostan
quelle
0

Die Verwendung von .html () anstelle von .text () hat bei mir funktioniert. Beispielsweise

.html("This is a first line." + "<br/>" + "This is a second line.")
Raj Stha
quelle
0

Verwendung &#13;sollte funktionieren (ich habe in Chrome , Firefox und Edge getestet ):

let users = [{username: 'user1'}, {username: 'user2'}, {username: 'user3'}];
let favTitle = '';
for(let j = 0; j < users.length; j++)
    favTitle += users[j].username + "&#13;";

$("#item").append('<i title="In favorite users: &#13;' + favTitle + '">Favorite</i>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id = item></div>

Nourein
quelle
0

Hallo, dieser Code funktioniert in allen Browsern !! Ich habe für neue Zeilen in Chrome und Safari und ul li für IE verwendet

 function genarateMultiLIneCode(){
        var =values["a","b","c"];
        const liStart = '<li>';
              const liEnd = '</li>';
              const bullet = '&#8226; ';     
              var mergedString = ' ';
              const unOrderListStart='<ul>'
              const unOrderListEnd='</ul>'
              const fakeNewline = '&#013;&#010;';
              for (let i = 0; i < values.length; i++) {
                   mergedString += liStart + bullet + values[i] + liEnd + fakeNewline;
              }
              const tempElement = document.createElement("div");
              tempElement.innerHTML = unOrderListStart + mergedString + unOrderListEnd;    
              return tempElement.innerText;
            }
        }
Abhinavxeon
quelle
0

Sie können den Bootstrap-Tooltip verwenden und vergessen nicht, die HTML-Option auf true zu setzen.

<div id="tool"> tooltip</div>
$('#tool').tooltip({
     title: 'line one' +'<br />'+ 'line two',
     html: true
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
Amin
quelle
-1

Verwenden Sie einfach den Entitätscode &#xA;für einen Zeilenumbruch in einem Titelattribut.

<a title="First Line &#xA;Second Line">Hover Me </a>

Renish Gotecha
quelle
-1

Diese CSS wird Ihnen helfen.

    .tooltip {
      word-break: break-all;
    }

or if you want in one line

    .tooltip-inner {
      max-width: 100%;
    }
Adir Harel
quelle