Posso determinar se algo é um dispositivo de toque

… em Javascript?

E não me refiro a dispositivos móveis, mas a qualquer dispositivo, por exemplo, um dispositivo de toque como um tablet, onde o hover não faz sentido.

Ou sou forçado a usar CSS?

1 curtida

Uma coisa complicada a se considerar são os laptops com telas sensíveis ao toque. Nesse caso, a interação principal tende a ser via mouse… mesmo que o dispositivo tecnicamente tenha uma tela sensível ao toque. Isso nos causou algumas dores de cabeça recentemente com reações :sweat_smile:

Mas para responder à sua pergunta específica: acho que consultas de mídia CSS são o caminho a seguir. Temos hover, pointer, any-hover e any-pointer.

E então você pode executar essas consultas de mídia CSS do JS usando window.matchMedia assim:

4 curtidas

sim, bom ponto e boa sugestão.

Eu estava tentando usar as configurações do tema para determinar quando algumas legendas deveriam aparecer sobre uma imagem, o que normalmente só é mostrado ao passar o mouse.

No meu caso, as opções seriam:

  • sempre ativado
  • apenas em dispositivos de toque (porque o hover não está realmente disponível em tablets/celulares)
  • apenas ao passar o mouse (caso normal)

Reconhecer dispositivos de toque pode não ser um desastre neste caso :sweat_smile:

Eu estava apenas esperando que houvesse algum atributo direto do site que eu tivesse perdido, mas vou analisar sua sugestão. Uma mini refatoração de CSS com algum concatClasses parece provável…

1 curtida

O serviço capabilities tem algumas propriedades que podem ajudar. por exemplo:

Embora valha a pena notar: essa lógica foi o que nos causou dores de cabeça recentemente. Imagino que a substituiremos pela estratégia baseada em css-media-query em um futuro não muito distante. (quando isso foi escrito, acho que essas media queries não estavam amplamente disponíveis)

6 curtidas

oooh esse é um serviço discreto… não vi muito no código-fonte! :male_detective:

1 curtida