Como posso evitar a sobreposição de consulta de mídia?

A cascata é o que torna o CSS especial e poderoso. Mas no caso de consultas de mídia, a sobreposiçãoposso parece problemático.

Considere o seguinte CSS (continuandoregras para sobreposição de consulta de mídia CSS):

/* Standard - for all screens below 20em */

body { color: black; font-size: 1em; }

/* Query A - slightly wider, mobile viewport */

@media (min-width: 20em) and (max-width: 45em) {
    body { color: red; } /* supposed to be unique for this width */
}

/* Query B - everything else */

@media (min-width: 45em) {
    body { font-size: larger; } /* because viewport is bigger */
}

Então, quando a tela é exatamente 45em largura, a sobreposição em 45emserá tratado de acordo com a cascata CSS padrão:

Todosmax-width: 45em definições serão aplicadas primeiro,e tudomin-width: 45em será aplicado a partir de então.

Considere estas duas condições:

Todo o texto seria normalmenteblack, masConsulta A é único e temcolor: red.Desde aConsulta B é para viewports maiores, é o texto tem o CSSfont-size: larger.

Portanto, em uma largura de exatamente 45em, teríamostexto grande e vermelho. Qual seria a melhor solução para evitar isso?

Eu vejo duas possibilidades:

Re-declarar o texto para tercolor: black emConsulta B, mas então você está gerenciando duas declarações, se você optar por mudar ocolor no futuro. (Claro, não é um problema com essa linha única de código, mas imagine que há muitas outras declarações e seletores.)

Evite a sobreposição usando valores de pixels comomax-width: 799px emin-width: 800px, mas então você está usando pixels - eu acho que eles poderiam ser 49.9375em e 50em, respectivamente. Porém, e se o padrão não for mais 16em e algo for arredondado? E foramainda não tenho certeza o que acontece nessa lacuna. (Um buraco negro que quebra o continuum espaço-tempo?)

Ambos têm suas desvantagens ... alguma outra ideia?

questionAnswers(2)

yourAnswerToTheQuestion