@ медіа-запит та зіткнення синтаксису бритви ASP.NET MVC


214

У мене великий сайт, який працює в ASP.NET MVC за допомогою двигуна подання Razor.

У мене є базовий таблиця стилів, яка містить усі загальні стилі для всього сайту. Однак у мене є певні стилі сторінки, які є <head>на сторінці - зазвичай це один або два рядки.

Мені особливо не подобається вводити CSS <head>як його не строго розділення проблем, але для одного-двох рядків, які дійсно характерні для цієї сторінки, я вважаю за краще не прикріплювати інший файл і додавати до пропускної здатності.

У мене є екземпляр, хоч я хотів би ввести медіа-запит <head>, що відповідає певній сторінці , але оскільки медіа-запит використовує символ @ і дужки {}, це стикається з синтаксисом бритви:

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

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

Чи є спосіб я обійти це?


3
Я все ще думаю, що це css stylesмає бути у файлі CSS, особливо для лінійного css "Великого сайту" на сторінці - не найкраща практика. PS: Моя думка
AlexC

Я погоджуюся з @AlexC, але для тих, хто цікавиться дійсним випадком використання, критичний CSS завантажується швидше, ніж зовні. Це досить зручний трюк для тих сайтів, які покладаються на дуже швидку першу змістовну фарбу.
Джон Павек

3
Ще один випадок використання - це повідомлення електронної пошти
Jan Zahradník

Відповіді:


477

використовувати подвійні символи @@. Це уникне символ @ і візуалізує @media правильно на стороні клієнта


27

Також не забудьте додати пробіл після подвійного @@:

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

@@media без місця для мене не вийшло.


2
Виникли подібні проблеми до цього при використанні стисненого CSS; Я думаю, що @@ був оточений текстом, і тому Razor намагався його інтерпретувати. Я вирішив додати пробіл до @@. Дякую за пораду.
Ентоні

1
Навіть з простором це для мене не вийшло. Відповідь Даута з двома різними styleелементами все-таки спрацювала!
CPHPython

7

Я усвідомлюю, що це старе питання, але це єдине рішення, яке працювало на мене:

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


    <style type="text/css" media="screen and (min-width:960px)">
    </style>
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.