Ответ 1
Так как я, похоже, не получаю много поддержки, чтобы закрыть это как дубликат этого вопроса, я, по сути, повторю свой ответ (с некоторыми выбор).
Помните @media
- это запрос CSS, а не LESS-запрос
Запрос @media
- это функция CSS, которая позволяет загружаемому в данный момент CSS отвечать на носитель, на котором он отображается (обычно это тип браузера, но может быть печать и т.д.).
LESS - это препроцессор CSS , который создает CSS до, который загружается в браузер, и, таким образом, до того, как среда будет проверяться (что делается в самом CSS, после того, как он был сгенерирован LESS).
Таким образом, правильный метод для LESS должен иметь тот же тип вывода, что и прямой CSS, что означает, что вам нужно повторить селектор .menu
в запросе @media
, чтобы его значение изменилось для типа носителя.
Окончательный вывод CSS должен быть чем-то вроде
@media only screen and (max-width: 400px) {
.menu {
width: 100px;
}
}
.menu {
width: 300px;
}
Существуют различные способы генерации чего-то вроде LESS. Строго принимая ваш основной формат выше, есть следующее:
@menu-width: 300px; // default size
@media only screen and (max-width: 400px) {
.menu {
width: @menu-width - 200px; /* assuming you want it dynamic to default */
}
}
.menu {
width: @menu-width;
}
Но также посмотрите:
- Для основной идеи медиа-запросов LESS: Как использовать медиа-запросы более эффективно с LESS?
- Для обсуждения слияния медиа-запросов и меньшего повторения кода селектора см.: группировка Media Query вместо нескольких разбросанных медиа-запросов, которые соответствуют