Статьи

Использование Compass и Sass для CSS в вашем следующем проекте

Sass потенциально можно назвать CSS 2.0; он имеет несколько действительно изящных функций, которые позволяют писать код за меньшее время и с большей гибкостью. В сегодняшней статье мы будем работать с основами!

Sass — это просто другой способ работы с CSS. Это позволяет вам сохранить ваш CSS-код очень простым и помогает улучшить читаемость. Требуется что-то вроде этого:

И превращает это в:

Вы можете проверить Sass на http://sass-lang.com/

Компас делает работу с Sass еще проще. Автор, Крис Эппштейн, также включил некоторые преобразованные фреймворки, такие как Blueprint, YUI и 960.gs. Он также легко интегрируется с проектами на основе Ruby, но его так же легко добавить в любой другой проект. Compass имеет открытый исходный код и очень хорошо документирован. Проверьте источник и документацию .

И Sass (который является частью проекта Haml), и Compass устанавливаются через RubyGems. Если вы не понимаете, о чем я говорю, посмотрите «Шаг 1 — Установка Ruby on Rails» в моей предыдущей статье « Ruby on Rails для дизайнеров» и следуйте инструкциям, пока не дойдете до раздела «Установка Rails».

Чтобы установить оба этих гема, мы можем просто запустить одну команду:

1
(sudo) gem install haml chriseppstein-compass

Пока он говорит, что он успешно установил оба драгоценных камня, вы готовы!

Если вы работаете с проектом на основе Ruby, ознакомьтесь с документацией, в которой объясняется, как заставить его работать с вашей конкретной платформой, но я предполагаю, что мы работаем с простым HTML или подобным проектом.

У команды compass есть много опций, и если вы запустите compass —help, вы можете увидеть:

К вашему сведению: рядом с верхней строкой написано «Загрузка драгоценного камня». потому что я использую последнюю версию, так что вам не нужно беспокоиться об этом, если ваша говорит что-то другое.

Теперь мы собираемся начать наш проект Compass. Для создания выполните следующую команду (включая завершающий период, который сообщает компасу, где мы хотим сделать наш проект!)

1
compass —sass-dir=sass .

И вы должны увидеть:

При инициализации Compass обычно по умолчанию использует Sass в имени папки src, но я хотел изменить это, поэтому добавил опцию. Если вы посмотрите на папку, вы должны увидеть файл с именем config.rb и две другие папки.

Config.rb — это конфигурация, которую просматривает Compass, но в большинстве случаев вам не нужно возиться с этим. Также, как говорится в выводе команды создания, у нас есть три способа обновления нашего CSS из нашего Sass:

  • compass — используя эту опцию, вы должны будете оказаться в правильном каталоге, и тогда Compass один раз скомпилирует ваш Sass.
  • compass -u path/to/project — это примерно то же самое, что и команда, описанная выше, но вам не обязательно находиться в каталоге проекта, а скорее передать его вместе с командой.
  • compass --watch [path/to/project] — эта команда довольно хороша тем, что она отслеживает любые изменения в ваших файлах Sass и автоматически перекомпилирует их при каждом обнаружении изменения.
  • Теперь, когда вы знаете, как настроить проект, я объясню некоторые «правила» работы с Sass.

    Обычно при написании CSS вы пишете что-то вроде:

    1
    2
    #header {width: 900px;
    #header a {color:#000;

    Одна из проблем заключается в том, что вы повторяете одно и то же имя много раз. Давайте сделаем это в Sass. Я собираюсь работать в файле screen.sass, поэтому удалите все, и ваш Sass захочет:

    1
    2
    3
    4
    5
    6
    #header
      :width 900px
      :background #111
      a
        :color #000
        :text-decoration none

    Лично для этого гораздо проще читать и писать таким образом, без фигурных скобок или точек с запятой. Способ, которым Sass понимает вложение — через отступ.

    Первый селектор вообще не имеет отступов, поэтому окончательный CSS начинается с этого. Кроме того, все свойства (например, цвет, ширина и т. Д.) Начинаются с двоеточия. Так что для свойств #header они имеют отступ. Неважно, используете ли вы символы табуляции или пробелы, но вы должны оставаться последовательными, в противном случае вы увидите ошибку (которую я покажу через минуту).

    Теперь, когда у вас есть свои свойства, у нас есть следующий селектор Так как это равно #header a ... свойствам, вывод CSS будет #header a ...

    Теперь, когда мы дошли до этого, давайте попробуем скомпилировать: (в каталоге вашего проекта)

    1
    compass

    И вуаля!

    Допустим, вы сделали отступ не одинаково, Compass выдаст ошибку:

    Теперь, когда вы знаете CSS, Sass больше не станет кривой обучения, так как главное отличие в начале работы — это разные правила форматирования. Далее мы начнем работать с некоторыми из более продвинутых (но круче!) Частей Sass.

    Одна из замечательных особенностей Sass — это возможность использовать переменные. Пример:

    1
    2
    3
    4
    5
    6
    7
    !link_color = #fff
    #header
      :width 900px
      :background #111
      a
        :color = !link_color
        :text-decoration none

    Компиляция этого даст вам:

    Вы можете смеяться над этим названием, но это правда, вы можете делать математику в Sass! Для этой демонстрации мы будем использовать интерактивный режим Sass, поэтому запустите:

    1
    sass -i

    И немного возиться даст вам:

    Или более визуальный подход:

    # 111# 999 = # 000

    # 111 + # 999 = #aaa

    # 398191 + # 111 = # 4a92a2

    # 398191# 111 = # 287080

    Помимо сложения и вычитания, вы также можете умножить и разделить:

    # 398191/2 = # 1c4048

    # 398191 * 2 = # 72ffff

    Чтобы выйти из интерактивного режима Sass, нажмите клавишу Control-C, а затем введите «конец» и нажмите клавишу ввода.

    Если вы когда-либо слышали о сохранении своего кода СУХОЙ, СУХОЙ означает «не повторяйте себя». Mixins позволяет вам сделать это. Например, с ростом популярности закругленных углов, вы можете создать миксин, чтобы справиться с этим, поэтому где-то (не под селектором) вы бы добавили:

    1
    2
    3
    4
    =rounded
      :border-radius 4px
      :-moz-border-radius 4px
      :-webkit-border-radius 4px

    И использовать, вы бы сделали что-то вроде:

    1
    2
    3
    4
    #header
      :width 900px
      :background #111
      +rounded

    И при компиляции:

    Допустим, однако, что вы можете захотеть, чтобы радиус границы был переменным — ну, у вас может быть миксин, ожидающий, что ему будут переданы некоторые значения. Меняя наш миксин, это будет выглядеть так:

    1
    2
    3
    4
    =rounded(!radius = 4px)
      :border-radius = !radius
      :-moz-border-radius = !radius
      :-webkit-border-radius = !radius

    И тогда для использования вы можете использовать то, что мы делали раньше, и тогда значение по умолчанию будет 4px, в противном случае:

    1
    2
    3
    4
    #header
      :width 900px
      :background #111
      +rounded(8px)

    Sass также имеет возможность импортировать другие файлы Sass, поэтому предположим, что вы хотите импортировать файл (такой же, как этот файл sass), вы должны добавить:

    1
    @import reset.sass

    Эта функция действительно хороша тем, что дает вам возможность хранить посторонние стили вне основного файла. Например, вы можете также сохранить файл sass mixins, который вы скопировали вокруг проектов, и затем простой импорт добавит этот код — без копирования и вставки.

    Я надеюсь, что вы понимаете основы использования Sass и Compass и, возможно, будете использовать его в вашем следующем проекте! Теперь, если вы похожи на меня, когда я нашел Sass и сказал: «Мне это не нужно!», Попробуйте. Я переключился на это для всех моих недавних проектов, и мне действительно нравится работать с ним.

    Вот несколько ссылок, которые могут помочь вам в этом:

    • Sass Reference содержит то, о чем я говорил сегодня, и многое другое. Определенно стоит посмотреть, если вы серьезно относитесь к Sass.
    • Пакет TextMate для Sass великолепен, и я часто им пользуюсь.
    • Официальный скринкаст для Compass, хотя и длинный, охватывает примерно каждую базу с Compass и Sass.
    • Подпишитесь на нас в Твиттере или подпишитесь на ленту Nettuts + RSS для ежедневных новостей и статей о веб-разработке.