Проблема с CSS в том, что вы не хотите автоматически добавлять все файлы.Порядок, в котором ваши листы загружаются и обрабатываются браузером, имеет важное значение.Таким образом, вы всегда будете явно импортировать все свои CSS.
В качестве примера, скажем, у вас есть лист normalize.css , чтобы получить внешний вид по умолчанию вместо всех ужасных различных реализаций браузера.Это должен быть первый файл, загружаемый браузером.Если вы просто случайно включите этот лист где-нибудь в свой импорт CSS, то он будет не только переопределять стили браузера по умолчанию, но также и любые стили, определенные во всех файлах CSS, которые были загружены до него.То же самое относится и к переменным и миксинам.
После просмотра презентации Роя Томей на Euruko2012 я решил использовать следующий подход, если у вас есть много CSS для управления.
Обычно я использую этот подход:
- Переименование всех существующих .css файлов в .scss
- Удаление всего содержимого из application.scss
Начните добавлять директивы @import к application.scss
.
Если вы используете загрузчик твиттеров и несколько собственных листов CSS, сначала вам нужно импортировать загрузчик, потому что у него есть лист для сброса стилей.Таким образом, вы добавляете @import "bootstrap/bootstrap.scss";
к вашему application.scss
.
Файл bootstrap.scss выглядит следующим образом:
// CSS Reset
@import "reset.scss";
// Core
@import "variables.scss";
@import "mixins.scss";
// Grid system and page structure
@import "scaffolding.scss";
// Styled patterns and elements
@import "type.scss";
@import "forms.scss";
@import "tables.scss";
@import "patterns.scss";
А ваш файл application.scss
выглядит следующим образом:
@import "bootstrap/bootstrap.scss";
Из-за порядка импорта выТеперь можно использовать переменные, загруженные с помощью @import "variables.scss";
в любом другом файле .scss
, импортированном после него.Поэтому их можно использовать в type.scss
в папке начальной загрузки, а также в my_model.css.scss
.
. После этого создайте папку с именем partials
или modules
.Это будет место большинства других файлов.Вы можете просто добавить импорт в файл application.scss
, чтобы он выглядел так:
@import "bootstrap/bootstrap.scss";
@import "partials/*";
Теперь, если вы сделаете немного CSS, чтобы оформить статью на своей домашней странице.Просто создайте partials/_article.scss
и он будет добавлен к скомпилированному application.css
.Из-за порядка импорта вы также можете использовать любые загрузочные миксины и переменные в своих собственных файлах scss.
Единственный недостаток этого метода, который я обнаружил, заключается в том, что иногда вам приходится принудительно перекомпилировать частичный / *Файлы .scss, потому что рельсы не всегда делают это для вас.