Aqui estão algumas perguntas interessantes sobre CSS para você!
Eu tenho uma área de texto com um plano de fundo transparente sobrepondo algum texto que eu gostaria de usar como uma espécie de marca d'água. O texto é grande e ocupa a maior parte da área de texto. Parece bom, o problema é que, quando o usuário clica na área de texto, às vezes seleciona o texto da marca d'água. Quero que o texto da marca d'água nunca seja selecionável. Eu esperava que, se algo fosse mais baixo no índice z, não seria selecionável, mas os navegadores não parecem se importar com as camadas do índice z ao selecionar itens. Existe um truque ou maneira de fazê-lo para que este DIV nunca seja selecionável?
Respostas:
Eu escrevi uma extensão simples do jQuery para desativar a seleção há algum tempo: Desativando a seleção no jQuery . Você pode invocá-lo através
$('.button').disableSelection();
Como alternativa, usando CSS (cross-browser):
fonte
O código CSS a seguir funciona em um navegador quase moderno:
Para o IE, você deve usar JS ou inserir atributo na tag html.
fonte
unselectable="on"
. Você pode dar uma referência, por favorApenas atualizando a resposta original e muito votada do aleemb com algumas adições ao css.
Usamos a seguinte combinação:
Recebemos a sugestão de adicionar a entrada webkit-touch em:
http://phonegap-tips.com/articles/essential-phonegap-css-webkit-touch-callout.html
Abr 2015: Apenas atualizando minha própria resposta com uma variação que pode ser útil. Se você precisar tornar o DIV selecionável / não selecionável em tempo real e desejar usar o Modernizr , o seguinte funcionará perfeitamente em javascript:
fonte
user-select: none
a umdiv
não tem efeito algum. tenho certeza queuser-select
é apenas para texto. existem outras maneiras de tornar umadiv
seleção não selecionável?Como Johannes já sugeriu, uma imagem de plano de fundo é provavelmente a melhor maneira de conseguir isso apenas no CSS.
Uma solução JavaScript também teria que afetar o "dragstart" para ser eficaz em todos os navegadores populares.
JavaScript:
jQuery:
Rico
fonte
Você pode usar
pointer-events: none;
no seu CSSfonte
você pode tentar isso:
fonte
Uma simples imagem de plano de fundo para a área de texto não seria suficiente?
fonte
Os navegadores WebKit (por exemplo, Google Chrome e Safari) têm uma solução CSS semelhante à Mozilla-user-select: none da Mozilla
fonte
Também no IOS, se você quiser se livrar das sobreposições cinza semitransparentes que aparecem no toque, adicione css:
fonte
Usar
onselectstart = "return false"
impede a cópia do seu conteúdo.
fonte
Certifique-se de definir a posição explicitamente como absoluta ou relativa para que o z-index funcione para a seleção. Eu tive um problema semelhante e isso resolveu para mim.
fonte
Não tem certeza do seu caso de uso, mas você pode torná-lo arrastável.
fonte