263 votes

Conflit de syntaxe entre @media media query et ASP.NET MVC razor

J'ai un grand site qui fonctionne en ASP.NET MVC avec le moteur de vue Razor.

J'ai une feuille de style de base qui contient tous les styles génériques pour l'ensemble du site. Cependant, il m'arrive d'avoir des styles spécifiques à une page qui, dans la feuille de style de base, contiennent les styles génériques pour l'ensemble du site. <head> de la page - il s'agit généralement d'une ou deux lignes.

Je n'aime pas particulièrement mettre le CSS dans <head> comme il ne s'agit pas strictement de séparation des préoccupations, mais pour une ou deux lignes, qui sont vraiment spécifiques à cette page, je préfère ne pas avoir à joindre un autre fichier et ajouter à la bande passante.

J'ai cependant un cas où j'aimerais placer une requête média spécifique à une page dans le champ <head> mais comme une requête média utilise le symbole @ et les parenthèses {}, elle entre en conflit avec la syntaxe du rasoir :

@section cphPageHead{
     <style>
        /* PAGE SPECIFIC CSS */
        ...

        @media only screen and (max-width : 960px) <-- the @ symbol here is clashing!
            {
               ... }
            } 
    </style>
}  

Y a-t-il un moyen de contourner ce problème ?

3 votes

Je le pense toujours, css styles devrait se trouver dans le fichier CSS, surtout pour un "grand site". Le css linéaire sur la page n'est pas la meilleure pratique. PS : Mon opinion

1 votes

Je suis d'accord avec @AlexC, mais pour ceux qui sont curieux de connaître un cas d'utilisation valide, les CSS critiques se chargent plus rapidement en ligne qu'en externe. C'est une astuce plutôt pratique pour les sites qui dépendent d'une première peinture significative super rapide.

8 votes

Un autre cas d'utilisation est le rendu des e-mails

628voto

archil Points 21369

Utilisez des symboles @@ doubles. Cela permettra d'échapper au symbole @ et de rendre le @media correctement du côté client.

0 votes

L'utilisation du double @@ n'a pas fonctionné pour moi. J'ai dû utiliser un @ avec deux style éléments ! Voir ma réponse ci-dessous, et peut-être l'ajouter à celle-ci.

45voto

A-Sharabiani Points 5287

N'oubliez pas non plus d'ajouter un espace après le double @@ :

 @@ media only screen and (max-width : 960px)

@@media sans espace n'a pas fonctionné pour moi.

18voto

Daut Points 654

Je réalise que c'est une vieille question, mais c'est la seule solution qui a fonctionné pour moi :

@section cphPageHead{
    <style type="text/css" media="screen and (max-width:959px)">
    </style>

    <style type="text/css" media="screen and (min-width:960px)">
    </style>
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X