A consulta de mídia inválida é compilada ao usar uma variável que contém uma definição de consulta de mídia com condições OU (com vírgula ou "ou" -palavra-chave). A consulta de mídia principal deve ser anexada a cada subconsulta.
Menos:
<strong i="7">@highdpi</strong>: ~"(-webkit-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx)";
.bg {
<strong i="8">@media</strong> (max-width: 1000px) {
background: url(bg-small.png);
<strong i="9">@media</strong> <strong i="10">@highdpi</strong> {
background: url([email protected]);
}
}
}
Saída:
<strong i="14">@media</strong> (max-width: 1000px) {
.bg {
background: url(bg-small.png);
}
}
<strong i="15">@media</strong> (max-width: 1000px) and (-webkit-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx) {
.bg {
background: url([email protected]);
}
}
Saída esperada - "(largura máxima: 1000px) e" antes de cada parte separada por vírgulas:
[...]
<strong i="19">@media</strong> (max-width: 1000px) and (-webkit-min-device-pixel-ratio: 1.25), (max-width: 1000px) and (min-device-pixel-ratio: 1.25), (max-width: 1000px) and (min-resolution: 1.25dppx) {
[...]
_Por outro lado, ele compila bem, quando não está usando uma variável: _
.bg {
<strong i="23">@media</strong> (max-width: 1000px) {
background: url(bg-small.png);
<strong i="24">@media</strong> (-webkit-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx) {
background: url([email protected]);
}
}
}
Isso é mais uma solicitação de recurso do que um bug. Menos não deve entender o que está dentro daqueles ~""
(em qualquer lugar , não apenas para consultas de mídia). Portanto, é esperado que Less nunca saiba sobre quaisquer vírgulas ou outros símbolos especiais ali.
Tecnicamente, o código como acima ("lista de consultas de mídia em uma string com escape") é mais como uma antiga solução alternativa de peculiaridades / sintaxe do que jamais considerado um código adequado (mais uma vez por causa do próprio ~""
). No Less de hoje, o padrão adequado para obter as mesmas coisas seria usar conjuntos de regras / mixins anônimos / separados em vez de "a variável de valor mágico", por exemplo:
.highdpi(@rules) {
<strong i="10">@media</strong> (-webkit-min-device-pixel-ratio: 1.25),
(min-device-pixel-ratio: 1.25),
(min-resolution: 1.25dppx) {
@rules();
}
}
.bg {
<strong i="11">@media</strong> (max-width: 1000px) {
background: url(bg-small.png);
.highdpi({
background: url([email protected]);
});
}
}
ou métodos semelhantes.
Relacionado ao nº 1421 e questões / solicitações semelhantes.
Observe que mesmo como uma solicitação de recurso (se proposto), este recurso terá que usar uma sintaxe diferente em vez de ~""
qualquer maneira, ou seja, o exemplo nunca deve funcionar como esperado acima - então não estou marcando isso como " solicitação de recurso "(já que o FR exigiria um pouco mais de percepção).
Mesclando com # 1421, talvez?
@ seven-phase-max, obrigado por esclarecer isso. Vou mudar meu mixin para utilizar outro mixin ".highdpi" em vez da variável com string de escape.
@ seven-phase-max Eu acho que há dois problemas / solicitações de recursos separados aqui, então não tenho certeza se devemos mesclar para # 1421 sem especificá-los.
#1
, mas deve ter uma aprovação / reprovação separada de #1
. Apesar de ter feito isso #1
, #2
é uma próxima etapa lógica. Então, acho que podemos rastrear isso aqui no # 2964.Referenciando # 3059 aqui, já que essencialmente é quase o mesmo problema. Ou seja, basicamente a questão é: "Podemos nos permitir uma nova análise completa de @media
e @supports
consultas, etc. etc, após as variáveis serem substituídas por seus valores?" (Isso requer uma grande refatoração do próprio analisador para que ele possa ser usado em uma string arbitrária em um momento arbitrário, ou a duplicação do código de análise em cada nó específico e suas funções eval / css-gen).
Este problema foi marcado automaticamente como obsoleto porque não teve atividades recentes. Ele será fechado se nenhuma outra atividade ocorrer. Obrigado por suas contribuições.
Comentários muito úteis
Isso é mais uma solicitação de recurso do que um bug. Menos não deve entender o que está dentro daqueles
~""
(em qualquer lugar , não apenas para consultas de mídia). Portanto, é esperado que Less nunca saiba sobre quaisquer vírgulas ou outros símbolos especiais ali.Tecnicamente, o código como acima ("lista de consultas de mídia em uma string com escape") é mais como uma antiga solução alternativa de peculiaridades / sintaxe do que jamais considerado um código adequado (mais uma vez por causa do próprio
~""
). No Less de hoje, o padrão adequado para obter as mesmas coisas seria usar conjuntos de regras / mixins anônimos / separados em vez de "a variável de valor mágico", por exemplo:ou métodos semelhantes.
Relacionado ao nº 1421 e questões / solicitações semelhantes.
Observe que mesmo como uma solicitação de recurso (se proposto), este recurso terá que usar uma sintaxe diferente em vez de
~""
qualquer maneira, ou seja, o exemplo nunca deve funcionar como esperado acima - então não estou marcando isso como " solicitação de recurso "(já que o FR exigiria um pouco mais de percepção).Mesclando com # 1421, talvez?