css, измените меньше переменной с @media
в настоящее время я нахожусь на сайте проекта, который является отзывчивым и меньше действительно помогает много.
но я хочу, чтобы переменная размера изменялась в зависимости от размера окна. Я пробовал следующий код, но он, похоже, не работает. Такое возможно, или я должен попробовать другой подход?
@menu-width: 300px; // default size
@media only screen and (max-width: 400px) {
@menu-width: 100px // smaller size
}
.menu {
width: @menu-width;
}
2 ответов
поскольку я, похоже, не получаю большой поддержки для закрытия этого как дубликата этот вопрос, Я по существу повторю свой ответ (с некоторым разнообразием).
помните @media
- это запрос CSS, а не меньший запрос
на @media
query-это возможность CSS, которая позволяет загруженному CSS отвечать на носитель, на котором он представлен (как правило, некоторый тип браузера, но может быть напечатан и т. д.).
меньше CSS препроцессора это создает CSS до он загружается в браузер, и, таким образом, прежде чем носитель когда-либо проверяется (что делается в самом CSS, после того, как он был сгенерирован LESS).
таким образом, правильный метод для LESS должен иметь тот же тип вывода, что и прямой CSS, что означает, что вы должны повторить .menu
селектор в @media
запрос, чтобы его значение изменилось для носителя тип.
окончательный вывод CSS должен быть чем-то вроде
@media only screen and (max-width: 400px) {
.menu {
width: 100px;
}
}
.menu {
width: 300px;
}
есть различные способы генерировать что-то подобное с меньшим количеством. Строго принимая ваш базовый формат выше, есть следующее:
@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;
}
, но и посмотреть:
- для основной идеи меньше медиа-запросов:как я могу использовать медиа-запросы более эффективно с меньшим?
- для обсуждения получения медиа-запросов, сгруппированных и менее повторение кода селектора, см.: группировка медиа-запросов вместо нескольких рассеянных медиа-запросов, которые соответствуют
да, но таким образом вы должны переписать все
лучший способ должен быть (но он не работает)
@w : 10px
@media (min-width: 1440px) {
@w:500px;
}
@media (min-width: 1024px) and (max-width: 1280px) {
@w:300px;
}
@media (min-width: 800px) and (max-width: 1020px) {
@w:200px;
}
.any{
width:@w;
}