Est-il possible de formater une info-bulle HTML (attribut title)? [dupliquer]
Question
Cette question a déjà une réponse ici:
Est-il possible de formater une info-bulle HTML?
E.g. J'ai une DIV avec attribut title = & "; Foo! &"; Lorsque je fais un zoom avant ou arrière sur la taille du texte de mon navigateur, la taille du texte de l'info-bulle reste inchangée. Existe-t-il un moyen de faire en sorte que la police d’infos d’outils s’adapte au navigateur?
La solution
Non. Cependant, il existe d'autres options telles que Overlib et jQuery qui vous permet cette liberté.
- jConseil: http://www.codylindley.com/blogstuff/js/jtip/ / a>
- info-bulle jQuery: https://jqueryui.com/tooltip/
Personnellement, je suggérerais jQuery comme voie à suivre. Il est généralement très discret et ne nécessite aucune configuration supplémentaire dans le balisage de votre site (à l’exception de l’ajout de la balise de script jQuery dans votre & Lt; tête & Gt;).
Autres conseils
Essayez d'utiliser des codes d'entité tels que 
pour CR, 

pour LF et 	
pour TAB.
Par exemple:
<div title="1)	A
2)	B">Hover Me</div>
il semble que vous puissiez utiliser css et une astuce (pas de javascript) pour le faire:
http://davidwalsh.name/css-tooltips
http://www.menucool.com/tooltip/css-tooltip
Mieux vaut tard que jamais, disent-ils toujours.
Normalement, jQuery s’appliquerait pour résoudre une telle situation. Cependant, lorsque je travaillais sur un site pour un client qui nécessitait une solution sans JavaScript, j’ai proposé ce qui suit:
<div class="hover-container">
<div class="hover-content">
<p>Content with<br />
normal formatting</p>
</div>
</div>
En utilisant le css suivant, vous obtenez la même situation qu'avec un titre:
.hover-container {
position: relative;
}
.hover-content {
position: absolute;
bottom: -10px;
right: 10px;
display: none;
}
.hover-container:hover .hover-content {
display: block;
}
Cela vous donne la possibilité de le personnaliser en fonction de vos besoins, et cela fonctionne dans tous les navigateurs. Même ceux où javascript est désactivé.
Avantages:
- Vous avez beaucoup d'influence sur le style
- Cela fonctionne dans (presque) tous les navigateurs
Inconvénients:
- Il est plus difficile de positionner l'info-bulle
Non, ce n’est pas possible, les navigateurs ont leurs propres moyens pour implémenter les info-bulles. Tout ce que vous pouvez faire est de créer une div qui se comporte comme une info-bulle HTML (le plus souvent, elle est simplement "afficher en survol") avec Javascript, puis la styler comme vous le souhaitez.
Avec cela, vous n'aurez plus à vous soucier du zoom avant ou arrière du navigateur, car le texte contenu dans l'info-bulle div est un code HTML réel, il est ainsi redimensionné en conséquence.
Voir le message de Jonathan pour une bonne ressource .
Mootools propose également un agréable cours intitulé "Astuces" disponible dans leur "constructeur plus".
Je ne sais pas si cela fonctionne avec tous les navigateurs ou les outils tiers, mais j'ai réussi à spécifier simplement! " \ n " infobulles pour newline, fonctionne avec dhtmlx dans au moins ie11, firefox et chrome
for (var key in oPendingData) {
var obj = oPendingData[key];
this.cells(sRowID, nColInd).cell.title += "\n" + obj["ChangeUser"] + ": " + obj[sCol];
}
J'ai écrit cette petite fonction javascript qui convertit toutes les info-bulles de votre titre natif en nœuds stylisés: http://jsfiddle.net/BurakUeda/g8r8L4vt/1/
mo_title = null;
mo_element = null;
document.onmousemove = function (e) {
var event = e || window.event;
var current_title;
var moposx = e.pageX; // current
var moposy = e.pageY; // mouse positions
var tooltips = document.getElementById("tooltips"); // element for displaying stylized tooltips (div, span etc.)
var current_element = event.target || event.srcElement; // the element we're currently hovering
if (current_element == mo_element) return; // we're still hovering the same element, so ignore
if(current_element.title){
current_title = current_element.title;
} else {
current_title = "-_-_-"; // if current element has no title,
current_element.title = "-_-_-"; // set it to some odd string that you will never use for a title
}
if(mo_element == null){ // this is our first element
mo_element = current_element;
mo_title = current_title;
}
if(mo_title) mo_element.title = mo_title; // restore the title of the previous element
mo_element = current_element; // set current values
mo_title = current_title; // as default
if(mo_element.title){
var mo_current_title = mo_element.title; // save the element title
mo_element.title = ""; // set it to none so it won't show over our stylized tooltip
if(mo_current_title == "-_-_-"){ // if the title is fake, don't display it
tooltips.style.display = "none";
tooltips.style.left = "0px";
tooltips.style.left = "0px";
tooltips.innerHTML = "";
} else {
tooltips.style.display = "inline-block";
tooltips.style.left = (moposx + 10) + "px";
tooltips.style.top = (moposy + 10) + "px";
tooltips.innerHTML = mo_current_title;
}
}
};
#tooltips {
display: none;
position: absolute;
left 0;
top: 0;
color: white;
background-color: darkorange;
box-shadow: black 2px 2px 2px;
padding: 5px;
border-radius:5px;
}
#buttoncontainer{
border: 1px black solid;
padding: 10px;
margin: 5px;
}
<div id="tooltips"></div>
<div>
<div title="DIV #1">Division 1</div>
<div id="buttoncontainer" title="Button container">
<button title="Button with title"> Button #1 </button>
<button> Button w/o title </button>
<button title="
<table border='1' cellpadding='4' cellspacing='0'>
<tr>
<td style='background-color:black; color:white; font-weight:bold; text-align: right'> TITLE #1</td>
<td style='text-decoration:underline; color:RoyalBlue; font-style: italic; font-size: 18px'>Description 1</td>
</tr>
<tr>
<td style='background-color:black; color:white; font-weight:bold; text-align: right'> TITLE #2</td>
<td style='text-decoration:overline; color:RoyalBlue; font-weight:bold; font-size: 14px'>Description 1</td>
</tr>
<tr>
<td style='background-color:black; color:white; font-weight:bold; text-align: right'> TITLE #3</td>
<td style='text-decoration:line-through; color:RoyalBlue; font-style: italic; font-size: 12px'>Description 1</td>
</tr>
</table>
"> Button title containing HTML </button>
</div>
</div
Avantages:
- Vous n'avez rien à convertir. Il suffit d'écrire votre code HTML habituel avec les attributs de titre natifs.
- Vous pouvez utiliser des balises HTML et un style en ligne dans les info-bulles de titre. (Voir l'exemple avec un tableau HTML complet dans un titre avec son propre style)
Inconvénients:
- c’est javascript
- Non testé sur tous les navigateurs existants, mais fonctionne correctement avec les dernières versions de Chrome, FF, IE et Opera
Il peut probablement être écrit de manière plus élégante et peut comporter quelques lignes inutiles.
De plus, l'extrait de code stackoverflow ne peut pas analyser le code HTML correctement, vérifiez-le donc sur le lien jsfiddle que j'ai fourni.
Je sais que ceci est un ancien message, mais je voudrais ajouter ma réponse pour référence future.
J'utilise jQuery et css pour styler mes info-bulles: info-bulle et image-preview-using-jquery
(pour une démonstration: http://cssglobe.com/lab/tooltip/02/ )
Sur mes sites statiques, cela fonctionnait très bien. Cependant, lors de la migration vers Wordpress, cela s’est arrêté. Ma solution était de changer les balises comme <br> and <span>
en ceci: <br> and <span>
Cela fonctionne pour moi.
Dans l'info-bulle d'amorçage, utilisez simplement data-html = & "true &";
.