У нас есть интересная дилемма.Stylus: запретить использование тега для средств массовой информации для интерпретации строк
У меня есть PR, открытый для rupture project, для пространства имен функций, которые он экспортирует, чтобы добавить режим без конфликтов.
Во-первых актеры
Есть две функции (или) Примеси, которые названы landscape
и portrait
. PR-имена помещают их в rupture-landscape
и rupture-portrait
. Смеситель @media используется повсюду.
А теперь сцена.
С некоторыми из функций, созданных разрыва, строка собирается использоваться с тэгом медиа. Конечным результатом должен быть обычный запрос css media.
Проблема заключается в перемещении стилуса @media. Кажется, он автоматически пытается интерпретировать строку и расширять любые ключевые слова, которые могут существовать в области.
Так как пейзаж и портрет находится в пределах объема, когда не используя не-конфликтной-режима, когда когда-либо @media используется тег с composed string и orientation: portrait
или orientation: landscape
результатом будет префиксом оба словами portrait
и landscape
с rupture
.
Я создал тривиальный пример с парой попыток исправить проблему на codepen here.
Вот код, а также:
Stylus
$landscape = 'notlandscape'
$string = "only screen and (orientation landscape)"
$unquote = unquote($string)
$s = s($string)
.foo
// this is the main issue
@media $string
color: blue
These two are attempts to fix the issue
@media $unquote
color: blue
@media $s
color: blue
и скомпилированный результат в CSS
@media only screen and (orientation: 'notlandscape') {
.foo {
color: #00f;
}
}
@media only screen and (orientation: 'notlandscape') {
.foo {
color: #00f;
}
}
@media only screen and (orientation: 'notlandscape') {
.foo {
color: #00f;
}
}
Фактический требуемый выход:
@media only screen and (orientation: landscape) {
.foo {
color: #00f;
}
}
Есть далеко предотвратить или обойти это поведение?
Просто чтобы быть ясно здесь. Можете ли вы добавить желаемый результат? –
Я добавил желаемый результат –
И почему бы не сделать то же самое, что в вашем PR разрыва? '$ string =" только экран и (ориентация s ('пейзаж') "' – blonfu