Problema
Não, as consultas de mídia não podem ser usadas dessa maneira
<span style="@media (...) { ... }"></span>
Solução
Mas se você deseja fornecer um comportamento específico utilizável em tempo real e responsivo, pode usar a style
marcação e não o atributo.
ei
<style scoped>
.on-the-fly-behavior {
background-image: url('particular_ad.png');
}
@media (max-width: 300px) {
.on-the-fly-behavior {
background-image: url('particular_ad_small.png');
}
}
</style>
<span class="on-the-fly-behavior"></span>
Veja o código trabalhando ao vivo no CodePen
No meu Blog, por exemplo, injeto uma <style>
marcação <head>
logo após a <link>
declaração para CSS e ela contém o conteúdo de uma área de texto fornecida ao lado da área de texto de conteúdo real para criar classe extra em tempo real quando escrevi um artigo.
Nota: o scoped
atributo faz parte da especificação HTML5. Se você não o usar, o validador o culpará, mas os navegadores atualmente não suportam o objetivo real: definir o escopo do conteúdo <style>
apenas no elemento pai imediatamente e nos elementos filhos desse elemento. O escopo não é obrigatório se o <style>
elemento estiver na <head>
marcação.
ATUALIZAÇÃO: Eu aconselho a sempre usar as regras da maneira móvel para que o código anterior seja:
<style scoped>
/* 0 to 299 */
.on-the-fly-behavior {
background-image: url('particular_ad_small.png');
}
/* 300 to X */
@media (min-width: 300px) { /* or 301 if you want really the same as previously. */
.on-the-fly-behavior {
background-image: url('particular_ad.png');
}
}
</style>
<span class="on-the-fly-behavior"></span>