Exemplo:
<a href="example.com" title="My site"> Link </a>
Como altero a apresentação do atributo "title" no navegador ?. Por padrão, ele possui apenas fundo amarelo e fonte pequena. Gostaria de torná-lo maior e alterar a cor do plano de fundo.
Existe uma maneira CSS de estilizar o atributo title?
Respostas:
Aqui está um exemplo de como fazê-lo:
fonte
Parece que existe de fato uma solução CSS pura, exigindo apenas a
attr
expressão css , o conteúdo gerado e os seletores de atributo (o que sugere que ele funcione já no IE8):Fonte: https://jsfiddle.net/z42r2vv0/2/
atualização com entrada do @ViROscar: observe que não é necessário usar nenhum atributo específico, embora eu tenha usado o atributo "title" no exemplo acima; na verdade, minha recomendação seria usar o atributo "alt", pois há alguma chance de que o conteúdo seja acessível a usuários incapazes de se beneficiar do CSS.
atualizar novamente Não estou alterando o código, porque o atributo "title" passou a significar o atributo "tooltip", e provavelmente não é uma boa ideia ocultar texto importante dentro de um campo acessível apenas ao passar o mouse, mas se você estiver interessado em tornar este texto acessível o atributo "aria-label" parece ser o melhor lugar para ele: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute
fonte
stacking context
. Todos os elementos composition
exceção destatic
cria um novo contexto de empilhamento e as dicas de ferramentas CSS puras não são visíveis fora nem podem ir além desse contexto de empilhamento ; portanto, se você tiver um elemento restrito com a posiçãorelative
, sua dica de ferramenta CSS não ficará visível. A única solução é anexar a dica de ferramenta ao contexto de empilhamento superior (por exemplo<body>
) que precisa de JavaScript.Você não pode estilizar um
title
atributo realComo o texto no
title
atributo é exibido é definido pelo navegador e varia de navegador para navegador. Não é possível que uma página da web aplique nenhum estilo à dica de ferramenta exibida pelo navegador com base notitle
atributo.No entanto, você pode criar algo muito semelhante usando outros atributos.
Você pode fazer uma pseudo-dica de ferramenta com CSS e um atributo personalizado (por exemplo
data-title
)Para isso, eu usaria um
data-title
atributo.data-*
atributos são um método para armazenar dados personalizados em elementos DOM / HTML. Existem várias maneiras de acessá-los . Importante, eles podem ser selecionados por CSS.Como você pode usar o CSS para selecionar elementos com
data-title
atributos, poderá usar o CSS para criar:after
(ou:before
)content
que contenha o valor do atributo em usoattr()
.Exemplos de dicas de ferramentas com estilo
Maior e com uma cor de fundo diferente (por solicitação da pergunta):
Estilo mais elaborado (adaptado desta postagem do blog ):
Problemas conhecidos
Diferentemente de uma
title
dica de ferramenta real , a dica de ferramenta produzida pelo CSS acima não é necessariamente garantida para estar visível na página (ou seja, pode estar fora da área visível). Por outro lado, é garantido que esteja dentro da janela atual, o que não é o caso de uma dica de ferramenta real.Além disso, a pseudo-dica de ferramenta é posicionada em relação ao elemento que possui a pseudo-dica de ferramenta em vez de em relação ao local onde o mouse está nesse elemento. Você pode ajustar onde a pseudo-dica de ferramenta é exibida. Fazer com que ele apareça em um local conhecido em relação ao elemento pode ser um benefício ou uma desvantagem, dependendo da situação.
Você não pode usar
:before
ou:after
em elementos que não são contêineresHá uma boa explicação nesta resposta para "Posso usar o pseudoelemento a: before ou: after em um campo de entrada?"
Efetivamente, isto significa que você não pode usar esse método diretamente em elementos como
<input type="text"/>
,<textarea/>
,<img>
, etc. A solução mais fácil é para embrulhar o elemento que não é um recipiente em um<span>
ou<div>
e ter a pseudo-dica de ferramenta no recipiente.Exemplos de uso de uma pseudo-dica de ferramenta em um
<span>
agrupamento de um elemento não contêiner:A partir do código do post do link acima (que eu vi pela primeira vez em uma resposta aqui que a plagiou), parecia óbvio para mim usar um
data-*
atributo em vez dotitle
atributo. Isso também foi sugerido em um comentário do snostorm sobre a resposta (agora excluída).fonte
input[type='text']
outextarea
, mas não sei porquê. Alguém pode explicar?:before
e:after
pseudo-elementos não funcionam em elementos que não são recipientes. Há uma boa explicação na resposta: Posso usar o pseudoelemento a: before ou: after em um campo de entrada? Para usar esse método, provavelmente é mais fácil agrupar os elementos que não são contêineres em<span>
ou<div>
nos quais você coloca odata-title
atributo. Você provavelmente também vai querer dar a elesdisplay: inline-block;
, pois isso os tornará do mesmo tamanho que o<input>
ou<textarea>
. Atualizei esta resposta com um exemplo.O CSS não pode alterar a aparência da dica de ferramenta. É dependente do navegador / SO. Se você quiser algo diferente, precisará usar o Javascript para gerar marcação quando passar o mouse sobre o elemento em vez da dica de ferramenta padrão.
fonte
Eu pensei em postar minha solução JavaScript de 20 linhas aqui. Não é perfeito, mas pode ser útil para alguns, dependendo do que você precisa em suas dicas de ferramentas.
Quando usá-lo
TITLE
atributo definido (isso inclui elementos adicionados dinamicamente ao documento no futuro)TITLE
atributo, semântica clara)Quando NÃO usar
O código
Cole-o em qualquer lugar, ele deve funcionar mesmo quando você executa esse código antes que o DOM esteja pronto (ele não mostrará suas dicas até que o DOM esteja pronto).
Customizar
Você pode alterar as
var
declarações na segunda linha para personalizá-lo um pouco.Estilo
Agora você pode estilizar suas dicas de ferramentas usando o seguinte CSS:
fonte
Encontrei a resposta aqui: http://www.webdesignerdepot.com/2012/11/how-to-create-a-simple-css3-tooltip/
meu próprio código é assim, eu mudei o nome do atributo; se você mantiver o nome do título para o atributo, acabará tendo dois pop-ups para o mesmo texto, outra mudança é que meu texto ao passar o mouse é exibido embaixo do texto exposto.
fonte
Um jsfiddle para o padrão de dica de ferramenta personalizada está aqui
Ele é baseado no posicionamento CSS e nos seletores de classe pseduo
Verifique os documentos MDN para suporte a pseudo classes em vários navegadores
fonte
A dica de ferramenta nativa não pode ser estilizada.
Dito isto, você pode usar alguma biblioteca que mostre estilos de camadas flutuantes quando o elemento estiver sendo pairado (em vez das dicas nativas e suprimi-las), exigindo poucas ou nenhuma modificação de código ...
fonte
title
atributo. Portanto, se você configurar sua própria implementação de dica de ferramenta, é melhor usar outro atributo (por exemplodata-tip
) em vez detitle
.Você não pode estilizar a dica de ferramenta padrão do navegador. Mas você pode usar o javascript para criar suas próprias dicas de ferramentas HTML personalizadas.
fonte
Isso também funciona com qualquer atributo que você deseja adicionar, por exemplo:
HTML
CSS
Veja o trabalho em: http://jsfiddle.net/vpYWE/1/
fonte
anything
não é um atributo HTML válido. Para atributos customizados, usedata-
atributos.