Sass — еще более удобный и логичный CSS

Sass — еще более удобный и логичный CSS

Привет!

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

Недавно Саша спросил меня: «Ты знаком с Sass?». Оказалось, что это специальный язык написания стилей, но более удобный и предоставляющий массу новых возможностей, которых нет в привычном CSS.

Что такое Sass

Авторы называют его мета-языком описания стилей. Синтаксис построен на стандартном синтаксисе CSS, с той лишь разницей, что Sass более простой, логический и удобный язык. Его авторами и разработчиками  являются Хамптон Катлин и Натан Вайценбаум.

В чем прелесть 

Sass предоставлять вам больше возможностей и свободы при написании CSS. Это как программный язык внутри CSS. Вы можете использовать что-то вроде функций с переменными, логически структурировать ваш код (сложенность стилей и классов). Вот главные возможности Sass с примерами:

Красота кода

Saas

В Sass нет точек с запятой и фигурных скобок, свойства располагаются непосредственно после селектора и по одному на строке.

Вложенность

Saas

Теперь для вложенных селекторов не нужно повторять селекторы родителей, достаточно просто расположить дочерний селектор внутри родительского. Это применимо и для свойств.

Переменные

Saas

Если какое-то значение свойства повторяется у многих элементов — занесите его в переменную и используйте сколько угодно раз. При изменении значения необходимо будет поменять его только в одно месте. Математические операции с численными значениями так же возможны (пропорции шрифтов скажем).

Миксины

Saas

Что-то вроде функций, которые могут содержать целые куски CSS кода вместе с селекторами и свойствами. Зачем писать одно и то же по сто раз?

Как это работает

Изначально есть файлы, в которых вы пишете на Sass. Как вы догадываетесь, браузер не понимает (по крайней мере пока) такой язык, так как он не является стандартизированным. Браузер понимает только CSS и следовательно ему нужно отдать ваши стили в формате CSS. Как это сделать? Да взять и скомпилировать. Но для этого вам понадобиться специальный фреймворк на том языке, на котором у вас написаны серверные приложения (ASP.NET, Ruby, PHP).

Лучше всего с Sass работает Ruby, для которого на официальном сайте есть инструкция по установке и работе со специальным дополнением. Для того, чтобы компилировать Sass с помощью PHP вам понадобиться другой фреймворк — Compass

Примеры работы 

Большинство из вас наверняка захотят попробовать что-то написать на этом языке перед тем, как решить использовать его в своих проектах или нет. Для этого есть специальная страничка, где вы можете написать код на Sass и посмотреть, как он будет выглядеть в CSS.

Вывод

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

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

Расскажите друзьям

Оцените статью:
  • 1
  • 2
  • 3
  • 4
  • 5

Комментарии — 36

sergy
Как-то уж слишком накрутили. Мне кажется написать таблицу стилей стандартными средствами будет куда быстрее чем мудрить с функциями и компиляторами. Во всяком случае пока....пока браузеры не понимают этого самого Sass.
Вобщем если и начинать пользоваться то после html5 точно.
#
sergy
Андрей
Ничего так, жаль только попробовать на «специальной страничке» не получилась — 503.
Но судя из статьи Sass — вполне достойная замена CSS, которая может составить конкуренцию CSS 3.
Ладно, подожду пока сервис снова откроют, попробую его на зуб, а там будет видно)
#
Андрей  
Андрей
sergy, а что там мудрить-то с компиляцией? Прикрутил фреймворк один раз, а потом файлы автоматически компилируешь и отдаешь браузеру.
И тем более верстка строится не из одной таблицы, а часто из гараздо сложных объектов.
#
Андрей  
Антон
по-моему это не более чем ещё один костыль для тех, кто не может грамотно раскидать CSS по нескольким шаблонам и потом собирать это всё на продакшене в один файл.

2Андрей: это вообще ни разу не замена CSS. И никогда ей не станет. И ни о какой конкуренции с CSS3 даже речи не идёт :)
#
Антон
Pavel Reznikov
Sass в частности и compass в общем - очень крутые штуки. Использую. Опятьже, сам компас умеет отслеживать изменения sass файлов и автоматом компилить их.
Pavel Reznikov
+ в компасе поддержка нескольких css фреймворков есть (960.gs, blueprint, ...). Миксины вообще крутая штука - со временем обрастаешь своими css библиотеками
Octane
Поддержу отечественного производителя :D Есть немного более простое решение на PHP, называется ExtCSS.

Использование переменных:
    $vars {
    	$bgcolor = #efefef;
    	$alink = #414141;
    	$avisited = #999;
    	$ahover = #01a5e4;
    }

Вложенные конструкции:
    .post {
            font-size: 0.875em;
            p, ul, ol {
                    margin: 0 0 14px;
            }
            ul, ol {
                    padding: 0;
                    li {
                            display: list-item;
                    }
            }
    }

Описание псевдоэлементов во вложенных конструкциях:
.nav a.current {
	&:link {…}
	&:visited {…}
}

Есть аналог php-инклуда:
@import_extcss "ext-filename.css";
Корректно обрабатывает @media и игнорирует @font-face.
В папке с css работаем с файлом ext-filename.css, после обработки скриптом появляется файл filename.css.

Документации пока нет, автор ленится :(

Начал делать с помощью ExtCSS новый проект, пока нравится, довольно удобно :)
#
Octane
Grin
Спасибо, Октан!
#
Grin  
Dan
есть еще less http://lesscss.org/
тоже удобная штука по описанию, но у меня пока попробовать не получается =(
#
Dan
Den Kulikoff
Лично мне синтаксис CSS вполне удобен и привычен. Единственное, чего иногда не хватает, так это переменных.
kolyuchii
На первый взгляд, вижу только преимущество вложенности стилей. Время покажет.
#
kolyuchii
Алексей
Смотрите как хорошо
SASS:

.block_1
  .block_2
    .inner_block_1, inner_block_2, .innerblock_3
      :margin
        :left aut
        :right auto

И такой же CSS:

.block_1 .block_2 .inner_block_1, .block_1 .block_2 inner_block_2, .block_1 .block_2 .innerblock_3 {
  margin-left: auto;
  margin-right: auto; }

Вы ведь согласитесь с тем что первый вариант намного более читаемый. И это самая главная и нужная фича данной штуки. А аще эти табы как в питоне и не надо скобок как в lesscss. Красота ведь. Используем уже год и довольны.
#
Алексей  
kolyuchii
И я об этом же. Хотя SASS-вариант смотрится (пока) непривычно.
А CSS можно переписать так:

.block_1 .block_2 .inner_block_1, 
.block_1 .block_2 .inner_block_2, 
.block_1 .block_2 .innerblock_3{
	margin: 0 auto;
}


или так:


.block_1 
	.block_2 
		.inner_block_1, 
.block_1 
	.block_2 
		.inner_block_2, 
.block_1 
	.block_2 
		.innerblock_3 
{
	margin: 0 auto;
}
#
kolyuchii
adw0rd
>Для того, чтобы компилировать Sass с помощью PHP вам
>понадобиться другой фреймворк — Compass.

А где там PHP? там опять ссылка на руби...
KIVagant
Пока браузеры не научатся это поддерживать - в принципе мало-полезная вестч. А когда научатся - ещё конфликтов будет как всегда вагончик. Эх, мечта вебмастера - чтобы все само делалось и денешки капали...
#
KIVagant
Андрей
2Антон: на счет костыля совершенно не согласен. Так же полагаю, что вы используете тот же JQuery, Mootools и др. фреймворки в своих проектах. Вся разница в том, что их не нужно компилировать перед использованием.
Тут суть не в грамоте, а в удобстве.

пс. грамате абучин).
#
Андрей  
Elfet
Вот это победит всё:

=)
#
Elfet
Viktor
Интересная вещь, вообще впервые слышу, возможно и полезная, но соглашусь с первым постом, мне тоже быстренько все написать и не заморачиваться лишний раз-проще.
#
Viktor
Антон
Да. согдашусь с некоторыми постами в том что использование чего-то нового (пусть даже удобного и простого) связано с проблемой его изучения. Но если вы делаете несколько десятков проектов в год, то на изучение можно потратить пару дней. Вторая проблема данной технологии - использование для её работы дополнительных средств (благо ещё плагин к браузеру не заставили качать как у флеша). Конечно недолго установить на сервер фреймворк и работать но как мы знаем люди не любят тратить время на подготовительные процессы (Новый Год - исключение :) ). А в остальном - удобно использование переменных (для меня) сродни php создаёшь один файл в него пишешь все переменные и общие скрипты (например соединение с mysql), а потм крепишь его к странице с кодом и меняешь всё в одном месте. Я поддерживаю данный проект и не жалею те две минуты которые у меня заняло написание данного поста :)
#
Антон
AngryCAT
Мне понравилось. Попробовал на тестовой страничке, поковыряю ещё и буду использовать.
#
AngryCAT
Koc
На тему развития CSS есть статья на смешингмегезин. Только там рассуждения "как было б круто, если б это было", а тут вот уже реальный работающий инструмент.
#
Koc
serho
Если Вам приглянулся Sass, то вероятно понравится и Haml (язык разметки для генерации (X)HTML ). О Haml можно посмотреть тут (http://haml-lang.com), для использования c PHP есть описание тут (phphaml.sourceforge.net). Сам использовать с PHP не пробовал, но с Ruby-фреймворки даже очень...
P.S. сорри за линки, просто с тегами не распарсились
#
serho
Koc
зыы: я не дочитал статью на smg до конца, там есть упоминание о Sass. ;)
#
Koc
джон
Не, технология маст дай имхо
Все надо делать руками и по правилам
#
джон
artoodetoo
>> Для того, чтобы компилировать Sass с помощью PHP вам понадобиться другой фреймворк — Compass.
Это ошибка! Compass на Ruby

Кое-что про Haml & Sass на php начали делать в проекте http://phphaml.sourceforge.net/ но он кажется умер.

Пришлось делать самому :) http://pyha.ru/forum/topic/3466.msg71339#msg71339
Исходники: http://code.assembla.com/qb7/subversion/nodes/cuts/smartcss
#
artoodetoo
чики
Мне понравилось, очень доставляет питоновский синтаксис и вообще я за, буду использовать
троль
не привычно как то с вложенностью(

Хотя если вшить это в cms получится очень даже, правда процесс вшивание сферическое задротство...
#
троль
Евгений
Уже на втором скриншоте видно самый огромный минус:
селектор визуально путается со свойством предыдущего селектора.
Наверное сложно придумать что то, что усложняло бы поиск нужного селектора сильнее.
#
Евгений
SeemSign
Отличная вещь, минус лишь в том, что надо будет долго приспосабливаться, практиковаться чтобы свободно кодить на SASSе, даже опытному верстальщику.
#
SeemSign
Pavel Reznikov
@SeemSign у них сейчас новый синтаксис. Причем он обратно совместим с CSS, т.е. затраты на вхождение нулевые. Очклево.
Alex
ДА, мне тоже что-то типа переменных давно не хватает
#
Alex
Toxa
Для особо одаренных некоторых:
Плюсы:
+ пользовательские функции(давно пора бы в css ввести)
+ переменные(не всегда)
+ более разбитая структура кода
+ коменты которые не обращаются в css(как здесь не знаю, но в less есть)
+ подключение левых правил, указанных ранее
минусы
- не всегда понятно на кой фиг переменные(особенно для цветов, только код больше)
- огромнейший минус !!!! Просто колоссальный - нельзя строковые переменные вбивать в селекторы
мне было бы намного удобнее так...
- триллион функций для цветов, не знаю, как и для чего столько...(может я как баклан последний не пользовал, не знаю)
#
Toxa
uoziod
Штука классная!
PS: ссылка на playground в конце статьи перестала работать(
Юрий
Использую Less. Судя по описанию SAAS, из за отсутствия скобок и кавычек - в написанном коде можно запутаться.
К тому же я люблю писать все свойства в одну строку.
Рома
Может кто подскажет, css3 я юзаю уже неплохо, хочу перейти на препроцессор(однозначно sass, на less не буду тратить время), опытный знакомый посоветовал Webstorm 6.0 (успешно крякнул) как платформу, везде толкуют о руби, все же скачал node.js на v8 как движок(поставил node.js и установил node-sass с командной строки)... кто работает в похожей среде, как правильно настроить вебшторм и приспособиться для роботы, ато после саблима и старенькой цсс я теряюсь, щас начинаю работать над магаином, хочу все на сасе сделать...
#
Рома
Alexey
Зря вы так, очень удобная вещь! Жалею, что раньше не начал пользоваться. Скорость работы значительно увеличилась

Новый комментарий

как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть
как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть

metin2 pvp metin2 pvp serverler pvp serverler