Adicionar quebra de linha nas dicas de ferramentas

170

Como as quebras de linha podem ser adicionadas em uma dica de ferramenta HTML?

Tentei usar <br/>e \ndentro da dica de ferramenta da seguinte maneira:

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

No entanto, isso foi inútil e eu pude ver o texto literal <br/>e \ndentro da dica de ferramenta. Todas as sugestões serão úteis.

Aakash Chakravarthy
fonte
3
Eu tive a mesma pergunta: stackoverflow.com/questions/3320081/…
San
1
use <pre> data-html = "true" </pre> Ref e obrigado a: stackoverflow.com/a/19001875/2278891
Sunit
Em asp.net (C # .NET 4.5 Framework) adicionando Environment.NewLineobras para adicionar uma quebra de linha do lado do código ... nenhum barulho .. não muss ...
Dan B

Respostas:

271

Basta usar o código da entidade &#013;para uma quebra de linha em um atributo title.

Fred Senese
fonte
17
se código de entidade & # 013; não funciona, tente & # 10; Eu estou usando linux e não cromo certeza sobre outros navegadores
Krishna
3
Eu tentei isso e funciona quando eu injeto usando o elemento inspecionar, mas não quando eu o incluo no meu html e o implanto com esse caractere. Alguma razão óbvia para eu estar perdendo?
Riaan Schutte
1
Para mim, não &#10funciona para mim no Windows, Chrome v53. Mas &#013;funcionou bem.
Sorte
9
Eu apenas usei ambas as versões, &#013;&#010;, parece funcionar muito bem :)
Phe0nix
6
& # 013; não funciona no Firefox v58. No entanto & # 10 funciona bem. O uso da solução @ Phe0nix de usar as quebras de linha conforme necessário funciona bem para que funcione no Chrome, Microsoft Edge e Firefox.
Muito legal
69

Basta adicionar um atributo de dados

data-html = "true"

e você está pronto para ir.

Por exemplo. uso:

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

Ele funcionou na maioria dos plugins de dicas de ferramentas que eu tentei a partir de agora.

siwalikm
fonte
3
data-html = "true" com <br /> no texto do título funciona perfeitamente.
22618 viks
1
Nenhuma das soluções acima funcionou para mim. Mas este funciona bem.
Abby
64

O &#013;combinado com o estilo espaço em branco: pré-linha; trabalhou para mim.

GuitarWorker
fonte
3
Passei um tempo tentando fazer isso funcionar. O fato de o white-space: pre-line;estilo ser necessário é muito oculto.
Jim D
@ JimD Em que classe / elemento a regra de estilo precisa ser aplicada?
Judá Meek
Para mim, isso funciona bem, sem qualquer CSS personalizado nas dicas de ferramentas.
ST-DDT
2
É esse que você está procurando por amigos.
Henrik Petterson
3
Na verdade, o personagem deve ser &#010;: stackoverflow.com/questions/6502054/…
Henrik Petterson
30

Este CSS é o que finalmente funcionou para mim em conjunto com um avanço de linha no meu editor:

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

Encontrado aqui: Como fazer com que as dicas de inicialização do Twitter tenham várias linhas?

Dan
fonte
@ Dan veio aqui procurando ajuda. O texto da minha dica de ferramenta continuava fora da caixa. Isso funcionou! 1
IRGeekSauce
10

\nentre o texto. Funciona em todos os navegadores.

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

Isso funcionará para mim e é usado no código por trás.

Espero que isto funcione para voce

Priyanka Thakur
fonte
10
\n

com o estilo

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

trabalhou para mim.

klausf
fonte
4

Eu encontrei. Isso pode ser feito simplesmente fazendo assim

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

A versão javascript

Como &#013;(html) é 0D(hex), isso pode ser representado como'\u000d'

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

Além do que, além do mais,

Compartilhando com vocês um filtro AngularJS que substitui \nesse caractere graças às referências nas outras respostas

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

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

uso

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

basta usar \ n no título e adicionar este css

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

&lt;br /&gt; funcionou se você estiver usando qTip

Eduardo Molteni
fonte
3

Basta adicionar data-html = "true"

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

é possível adicionar quebras de linha nas dicas de ferramentas HTML nativas, basta ter o atributo title espalhado por várias linhas.

No entanto, eu recomendaria o uso de um plug-in de dica de ferramenta jQuery, como o Q-Tip: http://craigsworks.com/projects/qtip/ .

É simples de configurar e usar. Como alternativa, também existem muitos plugins de dicas de ferramentas javascript gratuitos.

editar: correção na primeira declaração.

Ross
fonte
2

Para mim, uma solução em duas etapas (combinação de formatação do título e adição do estilo) funcionou da seguinte maneira:

1) Formate o titleatributo:

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

2) Adicione este estilo ao tipselemento:

white-space: pre-line;

Testado no IE8, Firefox 22 e Safari 5.1.7.

user2052547
fonte
Eu acho que é embora confuso, ter linhas quebradas no código
Fandango68
2

Basta adicionar este trecho de código ao seu script:

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

e claro, como mencionado nas respostas acima, data-htmldeveria ser "true". Isso permitirá que você use tags html e formatação dentro do valor do titleatributo.

codifique-o
fonte
+1, sua solução funcionou. meu código de exemplo: data-toggle="tooltip" data-html="true" title="some string <br/> some string".
Pranesh Janarthanan
É bom ouvir isso 👍
codifique-o
1

Bem, se você estiver usando o utilitário Jquery Tooltip , no arquivo Javascript "jquery-ui.js" encontre o seguinte texto:

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

e colocar acima disso

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

Espero que isso também funcione para você.

user2160658
fonte
1

Portanto, se você estiver usando o bootstrap4, isso funcionará.

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

Se você estiver usando no projeto Django, também podemos exibir dados dinâmicos em dicas de ferramentas como:

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

A solução para mim foi http://jqueryui.com/tooltip/ :

E aqui o código (a parte do script que cria o <br/>Works é "content:"):

CABEÇA HTML

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

Controle ASPX ou HTML

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

Espero que isso ajude alguém

Diego P
fonte
0

Mais agradável que o Jquery UI 1.10 não é compatível com o uso da tag html dentro do atributo title, porque ele não é válido.

Portanto, a solução alternativa é usar a opção de conteúdo da dica de ferramenta. Consulte - http://api.jqueryui.com/tooltip/#option-content

Jaison
fonte
0

Usar

&#013

Não deveria haver nenhum; personagem.

user1464581
fonte
0

se você estiver usando o jquery-ui 1.11.4:

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
fonte
0
AngularJS with Bootstrap UI Tolltip (uib-tooltip), has three versions of tool-tip:

uib-tooltip, uib-tooltip-template e 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

No meu caso, optei pelo uib-tooltip-html e há três partes:

  1. configuração
  2. controlador
  3. HTML

Exemplo:

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

Para mais informações, por favor, verifique aqui

omostan
fonte
0

Usar .html () em vez de .text () funcionou para mim. Por exemplo

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

o uso &#13;deve funcionar (eu testei no Chrome , Firefox e Edge ):

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

Oi este código funcionará em todos os navegadores !! eu usei para nova linha em chrome e safari e ul li para IE

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

Você pode usar a dica de ferramenta de autoinicialização e não se esqueça de definir a opção html como true.

<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>
amina
fonte
-1

Basta usar o código da entidade &#xA;para uma quebra de linha em um atributo title.

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

Renish Gotecha
fonte
-1

Este css irá ajudá-lo.

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

or if you want in one line

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