SASS и Compass
Начнем с небольшого примера. Вот так выглядит кроссброузерный резиновый градиент в CSS:
1 2 3 4 5 6 7 8 |
background: #1e5799; background: -moz-linear-gradient(top, #1e5799 0%, #2989d8 50%, #207cca 51%, #7db9e8 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#1e5799), color-stop(50%,#2989d8), color-stop(51%,#207cca), color-stop(100%,#7db9e8)); background: -webkit-linear-gradient(top, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%); background: -o-linear-gradient(top, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%); background: -ms-linear-gradient(top, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%); background: linear-gradient(to bottom, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); |
Конечно, поддерживать такой код - сущий ад. Ведь, если Вам потребуется поменять один из цветов градиента, вам нужно поменять его в семи местах, не говоря уже о том что код требуется после каждого изменения тестировать в каждом броузере, чтобы убедиться что Вы ничего не забыли и изменения внесены правильно.
Во всех наших проектах на ruby on rails мы повсеместно используем для верстки язык SASS. Его преимущества:
- SASS - это язык, компилирующийся в CSS
- SASS позволяет использовать множество расширений, отсутствующих в CSS, например - функции, переменные и т.д.
- Можно легко использовать более эффективные CSS селекторы - в наших проектах мы всегда стараемся писать отдельный CSS для отдельных блоков в верстке, и начинать его с #id блока, что гарантирует переносимость и максимальную скорость отрисовки верстки броузером.
- Конечный результат не отличается от CSS, написанного вручную. Никаких недостатков использование SASS не имеет.
- CSS сжимается и собирается в один файл при помощи Rails Asset Pipeline (sprockets), что гарантирует минимальный объем и максимальное быстродействие полученного кода
Кроме SASS, мы используем также Compass - фреймворк и библиотеку функций для SASS.
Тот же градиент в SASS + Compass выглядит так:
+background(linear-gradient(top, #1e5799 0%, #2989d8 50%, #207cca 51%, #7db9e8 100%)) |
В итоге мы получаем код, который работает быстрее за счет использования более эффективных селекторов, короче, следовательно верстка обходится дешевле, код проще поддерживать за счёт его краткости и логичности, следовательно и поддержка и доработка проектов также проще и дешевле.