Разделение стилей на разные CSS-файлы из одного исходного файла Stylus

Я использовал эту технику для создания условных таблиц стилей IE во время разработки:

http://clock.co.uk/blog/handling-ie-with-stylus

По сути, это позволяет мне писать специфичные для IE CSS вместе со стилями, не относящимися к IE, и автоматически разделяет их в новом файле. По большей части это было здорово, но если бы я изменил одну вещь, это то, что он создает 2 полные копии файлов CSS, только одна копия содержит дополнительные специфичные для IE стили. Я хотел бы, чтобы в отдельном файле отображались только стили, специфичные для IE.

Так что если я сделаю что-то подобное в стилусе

/* styles.styl */
.myDiv 
  +ie(8)
    width: 100px
  background: #000
  color: red

.other
  display: block
  width: 10px

Я хочу, чтобы 2 файла выглядели так:

/* styles.css: */
.myDiv {
  background: #000;
  color: red;
 }

.other {
  display: block;
  width: 10px;
}

/* styles-ie8.css: Just the IE specific styles */
.myDiv {
  width: 100px;
}

вместо стилей, т.е.

/* styles-ie8.css: */
.myDiv {
  width: 100px; /* <-- includes the extra IE-specific style along with everything else */
  background: #000;
  color: red;
}

.other {
  display: block;
  width: 10px;
}

Просто любопытно, если это возможно, спасибо!

1 ответ

Я не верю, что это возможно без упаковки остального стилуса в +not-ie() стиль mixins (явно не рекомендуется) или расширение Stylus как-то.

В Clock мы столкнулись с той же проблемой - стремимся предоставить одну таблицу стилей каждому браузеру, а дополнительные функции будут добавлены в IE8 в отдельной таблице стилей. К сожалению, мы не смогли найти достойный способ справиться с этим.

В настоящее время, как вы упоминаете, мы имеем полную копию стилей в таблице стилей IE8 вместе со специфическими стилями IE8. Преимущество этого заключается в том, что теперь нам нужно только отправить одну таблицу стилей пользователям IE8, сохранив им HTTP-запрос по сравнению с описанным выше методом.

<!--[if gt IE 8]><!-->
link(rel='stylesheet', href='index.css')
<!--<![endif]-->
<!--[if lte IE 8]>
link(rel='stylesheet', href='index-ie8.css')
<![endif]-->

Хорошие браузеры, в том числе IE9+ get index.css только. IE8 и ниже получить index-ie8.css только. Ни один браузер не получает одинаковые стили дважды.

Боюсь, это не то решение, которое вы ищете, но, по крайней мере, это немного аргументирует наши решения.

Другие вопросы по тегам