Consulta de mídia para dispositivos que suportam foco instantâneo

Gostaria de fornecer um comportamento separado para os navegadores que suportam o hover (por exemplo, navegadores de desktop) e os que não suportam (por exemplo, dispositivos com tela de toque). Especificamente, quero declarar um estado de foco em navegadores que o suportam, mas não em navegadores que não suportam, para evitar que os navegadores móveis o emulem com toques extras, pois isso interrompe outras interações na página - não definindo um foco estado para esses navegadores, isso é evitado.

Eu li sobre oConsultas de mídia de interação recurso e parece que deve fazer o truque. Eu seria capaz de fazer algo como:

@media (hover: none) {
  /* behaviour for touch browsers */
}

De acordo comEu posso usar está disponível em todos os navegadores que eu preciso oferecer suporte, exceto IE11 e Firefox.

Então, eu me perguntava se eu poderia fazer o contrário - já que os principais dispositivos de toque o suportam e o negam:

@media not (hover: none) {
  /* behaviour for desktop browsers */
}

No entanto, isso parece não funcionar.

Exemplo de pseudocódigo do que estou tentando fazer:

.myelement {
  /* some styling */
  /* note: no hover state here */
}
@media(this device supports hover) {
  .myelement:hover {
    /* more styling */
  }
}

Então, existe uma maneira de fazer isso funcionar da maneira pretendida, ou estou no caminho errado?

questionAnswers(5)

yourAnswerToTheQuestion