Ejemplo:
<a href="example.com" title="My site"> Link </a>
¿Cómo cambio la presentación del atributo "título" en el navegador? Por defecto, solo tiene fondo amarillo y fuente pequeña. Me gustaría agrandarlo y cambiar el color de fondo.
¿Hay alguna forma CSS para diseñar el atributo de título?
Respuestas:
Aquí hay un ejemplo de cómo hacerlo:
fuente
Parece que, de hecho, hay una solución CSS pura, que solo requiere el CSS
attr
expresión , el contenido generado y los selectores de atributos (lo que sugiere que funciona desde IE8):Fuente: https://jsfiddle.net/z42r2vv0/2/
actualizar con entrada de @ViROscar: tenga en cuenta que no es necesario usar ningún atributo específico, aunque he usado el atributo "título" en el ejemplo anterior; en realidad, mi recomendación sería usar el atributo "alt", ya que hay alguna posibilidad de que el contenido sea accesible para los usuarios que no puedan beneficiarse de CSS.
actualizar de nuevo No estoy cambiando el código porque el atributo "título" básicamente ha llegado a significar el atributo "información sobre herramientas", y probablemente no sea una buena idea ocultar texto importante dentro de un campo solo accesible al pasar el mouse, pero si interesado en hacer que este texto sea accesible, el atributo "aria-label" parece ser el mejor lugar para ello: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute
fuente
stacking context
. Todos los elementos queposition
no sean el questatic
crea un nuevo contexto de apilamiento y la información sobre herramientas CSS pura no son visibles en el exterior ni pueden ir más allá de dicho contexto de apilamiento , por lo que si tiene un elemento ajustado con posiciónrelative
, su información sobre herramientas CSS no será visible. La única solución es adjuntar información sobre herramientas al contexto de apilamiento superior (p<body>
. Ej. ) Que necesita JavaScript.No puedes diseñar un real
title
atributoEl
title
navegador define cómo se muestra el texto en el atributo y varía de un navegador a otro. No es posible que una página web aplique ningún estilo a la información sobre herramientas que muestra el navegador en función deltitle
atributo.Sin embargo, puede crear algo muy similar utilizando otros atributos.
Puede hacer una pseudo-información sobre herramientas con CSS y un atributo personalizado (por ejemplo
data-title
)Para esto, usaría un
data-title
atributo.data-*
Los atributos son un método para almacenar datos personalizados en elementos DOM / HTML. Hay múltiples formas de acceder a ellos . Es importante destacar que pueden seleccionarse mediante CSS.Dado que puede usar CSS para seleccionar elementos con
data-title
atributos, puede usar CSS para crear:after
(o:before
)content
que contenga el valor del atributo usandoattr()
.Ejemplos de información sobre herramientas con estilo
Más grande y con un color de fondo diferente (por solicitud de pregunta):
Estilo más elaborado (adaptado de esta publicación de blog ):
Problemas conocidos
A diferencia de un real
title
herramientas , no se garantiza necesariamente que la información sobre herramientas producida por el CSS anterior sea visible en la página (es decir, podría estar fuera del área visible). Por otro lado, se garantiza que está dentro de la ventana actual, que no es el caso para una información sobre herramientas real.Además, la pseudo-información sobre herramientas se coloca en relación con el elemento que tiene la pseudo-información sobre herramientas en lugar de en relación con la ubicación del mouse en ese elemento. Es posible que desee ajustar con precisión dónde se muestra la pseudo-información sobre herramientas. Hacer que aparezca en una ubicación conocida en relación con el elemento puede ser un beneficio o un inconveniente, dependiendo de la situación.
No puede usar
:before
o:after
en elementos que no sean contenedoresHay una buena explicación en esta respuesta a "¿Puedo usar un pseudo-elemento: before o: after en un campo de entrada?"
Efectivamente, esto significa que no puede usar este método directamente en elementos como
<input type="text"/>
,<textarea/>
,<img>
, etc. La solución fácil es envolver el elemento que no es un recipiente en una<span>
o<div>
y tienen la pseudo-tooltip en el envase.Ejemplos de uso de una pseudo-información sobre herramientas para
<span>
envolver un elemento que no sea contenedor:Por el código en la publicación del blog vinculada anteriormente (que vi por primera vez en una respuesta aquí que lo plagió), me pareció obvio usar un
data-*
atributo en lugar deltitle
atributo. Hacerlo también se sugirió en un comentario de snostorm sobre esa respuesta (ahora eliminada).fuente
input[type='text']
otextarea
, pero no sé por qué. ¿Alguien puede explicar?:before
y:after
pseudo-elementos no trabajo sobre elementos que no son envases. Hay una buena explicación en la respuesta: ¿Puedo usar un pseudo-elemento: before o: after en un campo de entrada? Para usar este método, probablemente sea más fácil envolver los elementos que no son contenedores en un<span>
o<div>
sobre el que coloca eldata-title
atributo. Probablemente también desee darlesdisplay: inline-block;
, ya que eso los hará del mismo tamaño que el<input>
o<textarea>
. He actualizado esta respuesta con un ejemplo.CSS no puede cambiar la apariencia de la información sobre herramientas. Es navegador / OS-dependiente. Si desea algo diferente, tendrá que usar Javascript para generar marcado cuando pase el cursor sobre el elemento en lugar de la información sobre herramientas predeterminada.
fuente
Pensé que publicaría mi solución JavaScript de 20 líneas aquí. No es perfecto, pero puede ser útil para algunos dependiendo de lo que necesite de la información sobre herramientas.
Cuando usarlo
TITLE
atributo definido (esto incluye elementos agregados dinámicamente al documento en el futuro)TITLE
atributo, semánticamente claro)Cuando NO usar
El código
Péguelo en cualquier lugar, debería funcionar incluso cuando ejecuta este código antes de que el DOM esté listo (simplemente no mostrará su información sobre herramientas hasta que DOM esté listo).
Personalizar
Puede cambiar las
var
declaraciones en la segunda línea para personalizarlo un poco.Estilo
Ahora puede diseñar su información sobre herramientas utilizando el siguiente CSS:
fuente
He encontrado la respuesta aquí: http://www.webdesignerdepot.com/2012/11/how-to-create-a-simple-css3-tooltip/
mi propio código es así, he cambiado el nombre del atributo, si mantiene el nombre del título para el atributo, termina teniendo dos ventanas emergentes para el mismo texto, otro cambio es que mi texto al pasar el mouse se muestra debajo del texto expuesto.
fuente
Un jsfiddle para el patrón de información sobre herramientas personalizado está aquí
Se basa en posicionadores CSS y selectores de clase pseduo
Verifique los documentos de MDN para la compatibilidad entre navegadores de pseudo clases
fuente
La información sobre herramientas nativa no se puede diseñar.
Dicho esto, puede usar alguna biblioteca que muestre capas flotantes de estilos cuando se desplaza el elemento (en lugar de la información sobre herramientas nativa, y suprimirlos) que requieren poca o ninguna modificación de código ...
fuente
title
atributo. Entonces, si configura su propia implementación de información sobre herramientas, es mejor usar algún otro atributo (digamosdata-tip
) en lugar detitle
.No puede diseñar la información sobre herramientas predeterminada del navegador. Pero puede usar JavaScript para crear sus propias sugerencias de herramientas HTML personalizadas.
fuente
Esto también funciona con cualquier atributo que desee agregar, por ejemplo:
HTML
CSS
Véalo funcionar en: http://jsfiddle.net/vpYWE/1/
fuente
anything
no es un atributo HTML válido. Para atributos personalizados usedata-
atributos.