W3docs

Propriedade CSS user-select

A propriedade CSS user-select define a seleção de texto. Leia sobre os valores da propriedade e veja exemplos.

A propriedade CSS user-select controla se o usuário pode selecionar texto com o mouse, teclado ou um toque longo em dispositivos touch. Ela não altera a aparência do texto — afeta apenas o comportamento de seleção.

Esta página aborda o que cada valor faz, quando você usaria user-select, os cuidados a ter e exemplos executáveis que você pode editar.

Por que usar user-select

Selecionar texto é um comportamento padrão do navegador, então na maioria das vezes você não precisa alterá-lo. Você o modifica deliberadamente em algumas situações:

  • Impedir seleção acidental em controles de interface — botões, abas, itens de menu, alças de arrastar. Quando um usuário clica duas vezes ou arrasta um desses elementos, o navegador destaca o rótulo, o que parece quebrado. user-select: none evita isso.
  • Copiar com um clique para strings curtas como códigos de cupom, chaves de API ou comandos. user-select: all seleciona o elemento inteiro com um único clique para que o usuário possa copiá-lo instantaneamente.
  • Restaurar a seleção quando um elemento pai a desativou, mas um filho (um endereço, um bloco de código) ainda deve ser selecionável — defina user-select: text no filho.

O valor padrão é "auto", que é determinado da seguinte forma:

  • Nos pseudo-elementos ::before e ::after, o valor calculado é "none"
  • Se o elemento for um elemento editável, o valor calculado é "contain",
  • Se o valor calculado de user-select no elemento pai deste elemento for "all", o valor calculado é "all".
  • Se o valor calculado de user-select no elemento pai deste elemento for "none", o valor calculado é "none",
  • Caso contrário, o valor calculado é "text".
Informação

Os prefixos de fornecedor (-webkit-, -moz-) estão agora obsoletos em todos os navegadores modernos. A propriedade user-select padrão é totalmente suportada sem eles.

Valor Inicialauto
Aplica-se aTodos os elementos, embora alguns valores não tenham efeito em elementos não-inline.
HerdadoNão.
AnimávelNão.
VersãoCSS3
Sintaxe DOMobject.style.userSelect = "text";

Sintaxe

Valores CSS de user-select

user-select: auto | none | text | all | contain | initial | inherit;

Exemplo da propriedade user-select com o valor "auto":

Exemplo de código CSS user-select

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      div {
        user-select: auto;
      }
    </style>
  </head>
  <body>
    <h2>User-select property example</h2>
    <div>Lorem ipsum is simply dummy text.</div>
  </body>
</html>

No exemplo dado, o texto pode ser selecionado se o navegador permitir.

Exemplo da propriedade user-select com o valor "none":

Exemplo CSS user-select com prefixos

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      div {
        user-select: none;
      }
    </style>
  </head>
  <body>
    <h2>User-select property example</h2>
    <div>Lorem ipsum is simply dummy text.</div>
  </body>
</html>

O texto não pode ser selecionado.

Exemplo da propriedade user-select com o valor "all":

Exemplo CSS user-select com o valor all

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      div {
        user-select: all;
      }
    </style>
  </head>
  <body>
    <h2>User-select property example</h2>
    <div>Lorem ipsum is simply dummy text.</div>
  </body>
</html>

Clicar em qualquer lugar no elemento seleciona todo o texto dentro dele — prático para copiar códigos ou comandos com um único clique.

Exemplo da propriedade user-select com o valor "text":

Exemplo CSS user-select com o valor text

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      div {
        user-select: text;
      }
    </style>
  </head>
  <body>
    <h2>User-select property example</h2>
    <div>Lorem ipsum is simply dummy text.</div>
  </body>
</html>

O texto pode ser selecionado normalmente pelo usuário. Este valor é útil para reativar a seleção em um filho específico quando um ancestral definiu user-select: none.

Coisas a ter em mente

  • user-select: none não é um recurso de segurança. Ele apenas bloqueia a seleção casual com mouse/teclado — o texto ainda está no DOM e é totalmente acessível via "Ver Código-fonte", leitores de tela e cópia via teclado em muitos navegadores. Nunca o use para "proteger" conteúdo.
  • Não desativa a cópia programaticamente nem via clique direito → Copiar em todos os navegadores. Se você realmente precisar bloquear a cópia, deve tratar o evento copy em JavaScript — mas pense bem se deve fazer isso.
  • Herdado? Não. user-select não é herdado no sentido usual, mas seu valor calculado depende do elemento pai (veja as regras de "auto" acima), então definir none em um contêiner afeta efetivamente seus descendentes.
  • Combine com pointer-events com cuidado. Eles resolvem problemas diferentes: user-select controla o destaque de texto, enquanto pointer-events controla se um elemento responde ao mouse/touch.

Valores

ValorDescriçãoExperimentar
autoO texto pode ser selecionado se o navegador permitir. Este é o valor padrão desta propriedade.Experimentar »
noneO texto não é selecionado.Experimentar »
textO texto é selecionado pelo usuário.Experimentar »
allO texto é selecionado com um clique.Experimentar »
containO texto pode ser selecionado, mas a seleção não pode se estender além dos limites do elemento. Normalmente usado para elementos editáveis.Experimentar »
initialDefine a propriedade para seu valor padrão.Experimentar »
inheritHerda a propriedade do seu elemento pai.

Prática

Prática
Qual afirmação está correta sobre a propriedade CSS user-select?
Qual afirmação está correta sobre a propriedade CSS user-select?

Propriedades relacionadas

  • pointer-events — controla se um elemento reage a eventos de mouse e touch.
  • cursor — altera o ponteiro do mouse exibido sobre um elemento.
  • ::before e ::after — os pseudo-elementos cujo valor calculado de user-select é sempre none.
Was this page helpful?