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.


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.


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.


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.


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


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


10
\n

mit dem Styling

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

arbeitete für mich.


4

Ich habe es gefunden. Es kann einfach so gemacht werden

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

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>

4

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

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


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>

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.


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.


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.


+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.


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>

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




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 );
             },

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


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.")

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>


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;
            }
        }

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>

-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>


-1

Diese CSS wird Ihnen helfen.

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

or if you want in one line

    .tooltip-inner {
      max-width: 100%;
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.