Кажется, я не могу заставить свою логику сопоставления LESS работать. Я следил за документация при отображении.
@screen-size-min: {
mobile-small: 320px;
mobile-large: 480px;
tablet-small: 600px;
tablet-large: 768px;
desktop-small: 992px;
desktop-large: 1280px;
}
@min: min-width;
@desktop-small-min: ~"only screen and (@{min}: @screen-size-min[desktop-small])";
p {
color: blue;
@media @desktop-small-min {
color: red;
}
}
Я ожидаю, что этот код скомпилируется в css, но медиа-запрос, похоже, не компилируется.
p {
color: blue;
}
@media only screen and (min-width: 992px) {
p {
color: red;
}
}
Я пытался протестировать его на меньшетестер, но в настоящее время он поддерживает только LESS 2.7. Карты — это новая функция в LESS 3.5.
Ошибок компиляции нет. Где я ошибся?






Кажется, это работает:
@screen-size-min: {
mobile-small: 320px;
mobile-large: 480px;
tablet-small: 600px;
tablet-large: 768px;
desktop-small: 992px;
desktop-large: 1280px;
}
@min: min-width;
@mysize: @screen-size-min[desktop-small];
@desktop-small-min: ~"only screen and (@{min}: @{mysize})";
p {
color: blue;
@media @desktop-small-min {
color: red;
}
}
Это дает желаемый результат. Попробуйте здесь
@soulshined, проблема в том, что я сам этого не понимаю - я просто случайно обнаружил, что в данном случае это работает.
Это происходит потому, что key[value] на самом деле не является переменной, переменная — это карта @screen-size-min, поэтому вы не можете воспользоваться преимуществами интерполяции переменных. Одно из решений — просто объединить KVP с остальной частью строки:
@desktop-small-min: ~"only screen and (@{min}:" @screen-size-min[desktop-small] ~ ")";
Это устраняет любую зависимость от создания переменной Другая только для ее интерполяции.
Кроме того, согласно их документации, были введены карты:
Released v3.5.0
И онлайн-тестер, который вы тестировали, поддерживает только 2,7
Codepen обычно поддерживает их последние версии. Вот анонимная ручка, демонстрирующая:
https://codepen.io/anon/pen/zeXmev
Если вы нажмете маленькую стрелку вниз рядом с заголовком «CSS (меньше)», вы можете выбрать «Просмотреть скомпилированный CSS», и он покажет вам вывод LESS -> CSS.
Спасибо за объяснение и решение.
Да, это работает! Не уверен, почему это должно быть переменной интерполяцией, но полезно знать. Спасибо!