Advertisement
Guest User

Untitled

a guest
Oct 18th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.14 KB | None | 0 0
  1.  
  2. Смотреть урок на YouTube
  3. Спонсор выпуска - хостинг партнер: partnerwp.ru
  4.  
  5. Все Sass/CSS примеры и настроенный Gulp проект для данного урока вы можете скачать с GitHub.
  6.  
  7. Sass - это один из наиболее развитых и стабильных CSS препроцессоров, а также один из самых популярных препроцессоров у профессионалов.
  8.  
  9. Преимущества Sass
  10.  
  11. Совместимость с различными версиями CSS, благодаря которой вы можете использовать любые CSS библиотеки в вашем проекте;
  12. Огромное количество разнообразных функций на любой случай жизни. Таким богатым функционалом могут похвастаться немногие CSS препроцессоры;
  13. Sass - это один из самых старых CSS препроцессоров, вобравший большой опыт за долгие годы своего существования;
  14. Замечательная возможность использовать Sass фреймворки, упрощающие жизнь разработчику. Один из таких фреймворков - Bourbon, который мы используем в некоторых выпусках Джедая верстки при написании Sass;
  15. Синтаксис. Вы можете выбрать один из двух синтаксисов, который вам ближе - упрощенный (SASS) и развернутый CSS-подобный (SCSS).
  16.  
  17. Когда я только знакомился с CSS препроцессорами, мне, как и многим другим начинающим веб-разработчикам, была не до конца понятна сама идея использования CSS препроцессоров. Зачем делать дополнительную прослойку, использовать какие-то инструменты, усложнять CSS, думал я. Но со временем начал понимать, что изо дня в день написание CSS становилось пыткой, серой рутиной, многие действия приходилось повторять, копировать селекторы, свойства и даже целые блоки CSS кода для достижения необходимого результата. Сегодня, на примерах, я покажу вам, как можно упростить работу, используя препроцессор Sass, разнообразить разработку и даже немного поразвлечься при написании каких-то более или менее сложных функций.
  18. Настройка окружения
  19.  
  20. В качестве окружения для работы с Sass в этом уроке, как и в других наших уроках, мы будем использовать версию Sass для таск-менеджера Gulp (gulp-sass). Для использования оригинальной Ruby версии или компиляции Sass посредством специального ПО, вы можете ознакомиться с инструкциями на оф. сайте. Данный урок носит преимущественно практический характер, поэтому останавливаться на возможных вариантах подключения к проекту не будем, подключим Sass наиболее популярным способом, используя Gulp.
  21.  
  22. Убедитесь, что у вас установлена последняя версия Node.js и Gulp. Если Node.js не установлен, скачайте его и установите. После установки Node.js установите gulp командой "npm i -g gulp" (Windows) или "sudo npm i -g gulp" (Linux, OS X). Почитать: Подробное руководство Gulp.
  23.  
  24. В папке вашего проекта выполните команду npm init и заполните пошагово информацию о вашем новом проекте. Пример, также, есть на странице руководства Gulp.
  25. npm init в терминале
  26.  
  27. Далее установим в проект пакеты gulp и gulp-sass командой:
  28.  
  29. code
  30. source
  31.  
  32. npm i --save-dev gulp gulp-sass
  33.  
  34. Далее в папке проекта создадим gulpfile.js следующего содержания:
  35.  
  36. code
  37. source
  38.  
  39. var gulp = require('gulp'), // Подключаем Gulp
  40. sass = require('gulp-sass'); // Подключаем Sass пакет
  41.  
  42. gulp.task('sass', function() { // Создаем таск "sass"
  43. return gulp.src(['sass/**/*.sass', 'sass/**/*.scss']) // Берем источник
  44. .pipe(sass({outputStyle: 'expanded'}).on('error', sass.logError)) // Преобразуем Sass в CSS посредством gulp-sass
  45. .pipe(gulp.dest('css')) // Выгружаем результата в папку css
  46. });
  47.  
  48. gulp.task('watch', function() {
  49. gulp.watch(['sass/**/*.sass', 'sass/**/*.scss'], ['sass']); // Наблюдение за sass файлами в папке sass
  50. });
  51.  
  52. gulp.task('default', ['watch']);
  53.  
  54. Обратите внимание на строку 6 - здесь мы используем один из стилей вывода в результирующий файл: nested - вложенный, по умолчанию; expanded - развернутый; compact - компактный, когда селектор и его свойства в фигурных скобках выводятся в одну строку; compressed - сжатый. Кроме того, благодаря обработке .on('error', sass.logError), если возникнет ошибка, нам не придется перезагружать команду выполенния Gulpfile и мы будем видеть, в какой строке Sass файла у нас ошибка. В примерах я буду использовать стиль вывода expanded для наглядности.
  55.  
  56. У вас должна быть следующая структура проекта в вашей файловой системе:
  57.  
  58. myproject/
  59. css/
  60. common.css
  61. sass/
  62. common.sass
  63. node_modules/
  64. gulpfile.js
  65. package.json
  66.  
  67. Запускаем выполнение Gulpfile командой gulp в терминале папки проекта.
  68.  
  69. Здесь мы берем все Sass файлы из директории sass/ вашего проекта и выгружаем готовый CSS результат в папку css/. Кроме того, здесь мы устанавливаем наблюдение watch за изменениями в Sass файлах и автоматическую компиляцию в CSS, если такие изменения имеют место быть. Результирующий css файл подключается в верстку.
  70.  
  71. Если вам что-то не понятно по настройке Gulp пакетов в данном примере, прочтите руководство Gulp.
  72.  
  73. После того, как наше окружение настроено и Sass успешно преобразуется в CSS при сохнанении *.sass файлов в директории sass/, можно спокойно продолжать обучение и выполнять примеры, которые мы будем сегодня разбирать, на практике.
  74. Синтаксис Sass
  75.  
  76. Есть 2 варианта написания Sass, 2 синтаксиса: SASS и SCSS. Самый старый вариант написания Sass - это синтаксис отступов. Именно этот вариант написания мы будем использовать в нашем уроке. Расширение файлов для такого синтаксиса - *.sass. Второй вариант - это синтаксис, расширяющий синтаксис CSS, Sassy CSS. SCSS пишется как обычный CSS, но расширен дополнительными возможностями Sass. Расширение файлов с SCSS синтаксисом - *.scss.
  77.  
  78. Очень важно! Синтаксис отступов требует очень четкого соблюдения отступов у вложенных свойств и если у вас возникают ошибки при запуске Gulp или неявные ошибки без указания строки в консоли - скорее всего, ошибка именно в неправильных отступах. Еще важная деталь - если у вас в качестве отступов используются табы, компилятор выдаст ошибку при попытке конвертировать Sass, в котором помимо табов, также, исвользуются пробелы в качестве отступов. Либо вы используете только табы, либо только пробелы.
  79.  
  80. SASS и SCSS синтаксис:
  81. SASS - синтаксис отступов SCSS - синтаксис расширения
  82.  
  83. code
  84. source
  85.  
  86. $font-stack: Helvetica, sans-serif
  87. $primary-color: #333
  88.  
  89. body
  90. font: 100% $font-stack
  91. color: $primary-color
  92.  
  93.  
  94.  
  95. code
  96. source
  97.  
  98. $font-stack: Helvetica, sans-serif;
  99. $primary-color: #333;
  100.  
  101. body {
  102. font: 100% $font-stack;
  103. color: $primary-color; }
  104.  
  105. Кроме базовых правил написания (фигурные скобки, точка с запятой в конце строк), SASS и SCSS различаются также написанием некоторых функций. Так что будьте внимательны при использовании каких-либо примеров из интернета, проверяйте, какой именно синтаксис используется. Если довольно большой пример из интернета выполнен в SCSS стиле, а ваш проект написан в SASS, вы можете его импортировать в ваш основной файл, не меняя синтаксис и расширение файла посредством директивы @import, например, если вы скачали файл carousel.scss, то можете подключить его в ваш main.sass строкой @import "carousel". Также можно поступить в обратной ситуации, когда необходимо импортировать *.sass файлы в файл main.scss. В нашем примере с Гитхаба, мы импортируем все _x.x.sass файлы в один common.sass, где x.x - это номер заголовка примера из данной статьи.
  106.  
  107. Мы будем использовать синтаксис отступов.
  108. 1. Расширение возможностей CSS с помощью Sass
  109. 1.1 Правила вложения
  110.  
  111. Sass дает разработчикам замечательную возможность использовать вложение одних CSS правил в другие, тем самым сокращая время на написание/копирование длинных селекторов и делая код более структурированным, с четкой иерархией.
  112. Sass CSS - готовый результат
  113.  
  114. code
  115. source
  116.  
  117. #main p
  118. color: #00ff00
  119. width: 97%
  120.  
  121. .redbox
  122. background-color: #ff0000
  123. color: #000000
  124.  
  125.  
  126.  
  127. code
  128. source
  129.  
  130. #main p {
  131. color: #00ff00;
  132. width: 97%;
  133. }
  134.  
  135. #main p .redbox {
  136. background-color: #ff0000;
  137. color: #000000;
  138. }
  139.  
  140. Sass CSS - готовый результат
  141.  
  142. code
  143. source
  144.  
  145. #main
  146. width: 97%
  147.  
  148. p, div
  149. font-size: 2em
  150. a
  151. font-weight: bold
  152.  
  153. pre
  154. font-size: 3em
  155.  
  156.  
  157.  
  158. code
  159. source
  160.  
  161. #main {
  162. width: 97%;
  163. }
  164.  
  165. #main p, #main div {
  166. font-size: 2em;
  167. }
  168.  
  169. #main p a, #main div a {
  170. font-weight: bold;
  171. }
  172.  
  173. #main pre {
  174. font-size: 3em;
  175. }
  176.  
  177. 1.2 Привязка к родительскому селектору
  178.  
  179. Если вы хотите расширить селектор, не создавая нового правила, вы можете привязать к готовому селектору дополнительные селекторы, используя знак &. Внешне это выглядит как создание дочернего селектора в иерархии, но с использованием &, мы расширяем именно родительский селектор, а не создаем дочерний.
  180. Sass CSS - готовый результат
  181.  
  182. code
  183. source
  184.  
  185. #main
  186. color: black
  187.  
  188. a
  189. font-weight: bold
  190.  
  191. &:hover
  192. color: red
  193.  
  194.  
  195.  
  196. code
  197. source
  198.  
  199. #main {
  200. color: black;
  201. }
  202.  
  203. #main a {
  204. font-weight: bold;
  205. }
  206.  
  207. #main a:hover {
  208. color: red;
  209. }
  210.  
  211. Sass CSS - готовый результат
  212.  
  213. code
  214. source
  215.  
  216. a
  217. font-weight: bold
  218. text-decoration: none
  219.  
  220. &:hover
  221. text-decoration: underline
  222.  
  223. body.firefox &
  224. font-weight: normal
  225.  
  226.  
  227.  
  228. code
  229. source
  230.  
  231. a {
  232. font-weight: bold;
  233. text-decoration: none;
  234. }
  235.  
  236. a:hover {
  237. text-decoration: underline;
  238. }
  239.  
  240. body.firefox a {
  241. font-weight: normal;
  242. }
  243.  
  244. Обратите внимание на правило body.firefox &, которое позволяет нам получить новую цепочку от любого элемента до текущего, если установить в конце &.
  245.  
  246. Кроме того, привязку к родителю можно использовать для создания составных селекторов:
  247. Sass CSS - готовый результат
  248.  
  249. code
  250. source
  251.  
  252. #main
  253. color: black
  254.  
  255. &-sidebar
  256. border: 1px solid
  257.  
  258.  
  259.  
  260. code
  261. source
  262.  
  263. #main {
  264. color: black;
  265. }
  266.  
  267. #main-sidebar {
  268. border: 1px solid;
  269. }
  270.  
  271. 1.3 Вложенные свойства
  272.  
  273. Для удобства, вы можете разбивать суффикс пространства имен свойства на вложения. Например, margin-top, margin-bottom, margin-left, margin-right имеют общую основу margin и могут быть разбиты на вложения следующим образом:
  274. Sass CSS - готовый результат
  275.  
  276. code
  277. source
  278.  
  279. .selector
  280. margin:
  281. top: 10px
  282. bottom: 15px
  283. left: 20px
  284. right: 30px
  285.  
  286.  
  287.  
  288. code
  289. source
  290.  
  291. .selector {
  292. margin-top: 10px;
  293. margin-bottom: 15px;
  294. margin-left: 20px;
  295. margin-right: 30px;
  296. }
  297.  
  298. 1.4 Селекторы-шаблоны
  299.  
  300. Иногда возникает ситуация, когда несколько элементов на странице используют одинаковую CSS базу, одинаковый набор свойств, характерный только для них. Данные базовые CSS правила можно оформить в виде селектора-шаблона для использования в нескольких местах Sass. Селекторы-шаблоны выводятся посредством директивы @extend.
  301. Sass CSS - готовый результат
  302.  
  303. code
  304. source
  305.  
  306. %item-base
  307. display: inline-block
  308. transition: all .5s ease
  309. max-width: 320px
  310.  
  311. .item-type-one
  312. @extend %item-base
  313. margin-top: 20px
  314.  
  315. .item-type-two
  316. @extend %item-base
  317. margin-top: 10px
  318.  
  319.  
  320.  
  321. code
  322. source
  323.  
  324. .item-type-one, .item-type-two {
  325. display: inline-block;
  326. transition: all .5s ease;
  327. max-width: 320px;
  328. }
  329.  
  330. .item-type-one {
  331. margin-top: 20px;
  332. }
  333.  
  334. .item-type-two {
  335. margin-top: 10px;
  336. }
  337.  
  338. 2. SassScript
  339.  
  340. SassScript позволяет значително расширить возможности Sass за счет использования пользовательских переменых, арифметических и прочих функций. SassScript может быть использован для автоматической генерации новых селекторов и свойств.
  341. 2.1 Переменные в Sass
  342.  
  343. Это действительно замечательная возможность - определять переменные, которые можно использовать в любом месте вашего Sass файла. Цвета, дефолтные значения, единицы, все это можно взять в переменную и использовать в дальнейшем. Переменная определяется так: $название: значение.
  344. Sass CSS - готовый результат
  345.  
  346. code
  347. source
  348.  
  349. $accent: #FF9910
  350.  
  351. .button
  352. background-color: $accent
  353. color: #fff
  354.  
  355.  
  356.  
  357. code
  358. source
  359.  
  360. .button {
  361. background-color: #FF9910;
  362. color: #fff;
  363. }
  364.  
  365. 2.2 Операции с числами и строками + интерполяция
  366.  
  367. Sass дает возможность использовать стандартные арифметические операции над числами, такие как сложение (+), вычитание (-), деление (/) и остаток от деления по модулю (%). Операторы сравнения (<, >, <=, >=, ==, !=) также поддерживаются для чисел.
  368.  
  369. Кроме того, в Sass есть возможность конкатенировать (соединять) строки.
  370. Sass CSS - готовый результат
  371.  
  372. code
  373. source
  374.  
  375. $summ: 10 + 20 / 2
  376. $cn: content
  377.  
  378. .selector
  379. margin:
  380. top: $summ + px
  381. bottom: 12px + 8px
  382. background-color: trans + parent
  383. #{$cn}: "con" + "tent"
  384.  
  385.  
  386.  
  387. code
  388. source
  389.  
  390. .selector {
  391. margin-top: 20px;
  392. margin-bottom: 20px;
  393. background-color: transparent;
  394. content: "content";
  395. }
  396.  
  397. Как видим из примера $summ: 10 + 20 / 2, соблюдается приоритет в выполнении арифметических операций - сначала деление, потом сложение. Для определения порядка действий, можно использовать круглые скобки, как в математике. Обратите внимание, что при сложении 12px + 8px, мы получим 20px.
  398.  
  399. Обратите также внимание на строки 2 и 9, здесь мы используем интерполяцию для размещения динамических значений в любом месте Sass файла, в том числе и в месте, где у нас идет название свойства, название селектора или в любой строке.
  400.  
  401. Интерполяция — это получение нового значения, используя другие.
  402.  
  403. Чаще всего интерполяция в Sass используется для получения нового значения переменной, благодаря "интегрированию" в значение другой переменной, посредством конструкции #{}, например:
  404. Sass CSS - готовый результат
  405.  
  406. code
  407. source
  408.  
  409. $in: интер
  410.  
  411. .interpol
  412. content: "#{$in}поляция"
  413.  
  414.  
  415.  
  416. code
  417. source
  418.  
  419. .interpol {
  420. content: "интерполяция";
  421. }
  422.  
  423. Вы не можете просто взять и вставить в строку переменную, без использования интерполяции, как например, это можно сделать в PHP, в двойных кавычках. Обязательно используйте интерполяцию в переменные.
  424.  
  425. 2.3 Операции с цветами
  426.  
  427. Цвета в Sass можно складывать, вычетать, делить и умножать. Все арифметические операции выполняются для каждого цвета отдельно: красного, зеленого и синего.
  428. Sass color
  429. Sass CSS - готовый результат
  430.  
  431. code
  432. source
  433.  
  434. $color1: #440203 + #550506
  435. $color2: #010203 * 2
  436. $color3: rgba(180, 0, 0, 0.75) + rgba(20, 255, 0, 0.75)
  437.  
  438. body
  439. background-color: $color1
  440. color: $color2
  441. border-color: $color3
  442.  
  443.  
  444.  
  445. code
  446. source
  447.  
  448. body {
  449. background-color: #990709;
  450. color: #020406;
  451. border-color: rgba(200, 255, 0, 0.75);
  452. }
  453.  
  454. Обратите внимание, что при сложении rgba цветов, последний параметр непрозрачности 0.75 не должен отличаться от других в выражении, иначе произойдет ошибка сложения. Вместо этого, можно регулировать альфа-канал rgba, используя opacify и transparentize или управлять непрозрачностью HEX цвета, посредством функции rgba.
  455.  
  456. Sass CSS - готовый результат
  457.  
  458. code
  459. source
  460.  
  461. $translucent-red: rgba(255, 0, 0, 0.5);
  462.  
  463. p
  464. color: opacify($translucent-red, 0.3)
  465. background-color: transparentize($translucent-red, 0.25)
  466.  
  467. .selector
  468. background-color: rgba(#333, 0.75)
  469.  
  470.  
  471.  
  472. code
  473. source
  474.  
  475. p {
  476. color: rgba(255, 0, 0, 0.8);
  477. background-color: rgba(255, 0, 0, 0.25);
  478. }
  479.  
  480. .selector {
  481. background-color: rgba(51, 51, 51, 0.75);
  482. }
  483.  
  484. 3. Директивы и правила
  485. 3.1 @import
  486.  
  487. Вы можете импортировать в ваш Sass файл sass, scss и css файлы с помощью директивы @import, при этом все миксины и переменные будут работать в основном файле, в который происходит импорт.
  488.  
  489. @import сработает как обычный CSS @import, если:
  490.  
  491. в пути к файлу присутствует http://;
  492. файл вызывается через url();
  493. или в импорте присутствуют медиапараметры.
  494.  
  495. Для того, чтобы другой файл был полноценно импортирован в основной Sass файл, необходимо, чтобы расширение файла было *.sass, *.scss или *.css.
  496.  
  497. Давайте рассмотрим некоторые примеры.
  498.  
  499. Следующие файлы импортированы не будут:
  500. Sass CSS - готовый результат
  501.  
  502. code
  503. source
  504.  
  505. @import "foo" screen;
  506. @import "http://foo.com/bar";
  507. @import url(foo);
  508.  
  509.  
  510.  
  511. code
  512. source
  513.  
  514. @import "foo" screen;
  515. @import "http://foo.com/bar";
  516. @import url(foo);
  517.  
  518. Следующие файлы будут импортированы:
  519. Sass CSS - готовый результат
  520.  
  521. code
  522. source
  523.  
  524. @import "foo.css";
  525. @import "media.sass";
  526. @import "media.scss";
  527. @import "media"; // Если импортируем media.css или _media.sass / _media.scss
  528.  
  529.  
  530.  
  531. code
  532. source
  533.  
  534. /* Результат импорта */
  535.  
  536. Внимание! В новых версиях gulp-sass для импорта CSS файлов в Sass необходимо указывать расширение .css
  537.  
  538. Возможен импорт нескольких файлов, через запятую: @import "header", "media".
  539.  
  540. Файлы, которые начинаются с нижнего подчеркивания, называются фрагменты и при импорте не требуют указания подчеркивания и расширения. Например, файл _header.sass можно импортировать так: @import "header".
  541.  
  542. Обратите внимание, что импорт происходит в том месте, где вы указываете директиву @import. Соответственно, есть возможность делать вложенный импорт в том месте, где это необходимо:
  543.  
  544. code
  545. source
  546.  
  547. #main
  548. @import "example"
  549.  
  550. 3.2 @at-root
  551.  
  552. Директива @at-root поднимает содержимые в ней правила в корень, отменяя цепочку от родителя. Тут все просто:
  553. Sass CSS - готовый результат
  554.  
  555. code
  556. source
  557.  
  558. .selector
  559. margin-top: 10px
  560.  
  561. @at-root
  562. .item
  563. background-color: #ccc
  564.  
  565. .item
  566. background-color: #fff
  567.  
  568.  
  569.  
  570. code
  571. source
  572.  
  573. .selector {
  574. margin-top: 10px;
  575. }
  576.  
  577. .item {
  578. background-color: #ccc;
  579. }
  580.  
  581. .selector .item {
  582. background-color: #fff;
  583. }
  584.  
  585. Мы рассмотрели не все директивы, которые есть в Sass, а только самые используемые на практике. Если вас интересует более глубокое изучение Sass директив, обратитесь к документации.
  586. 4. Выражения
  587.  
  588. Sass поддерживает использование выражений и функций для различных условий, реализации циклов и т.д.
  589. 4.1 Директива @if()
  590.  
  591. Директива @if() позволяет осуществить выполнение SassScript с определенными условиями и имеет следующий синтаксис:
  592. Sass CSS - готовый результат
  593.  
  594. code
  595. source
  596.  
  597. $var: 5
  598.  
  599. .selector
  600. @if $var >= 5
  601. content: '>= 5'
  602. @else if $var <= 5
  603. content: '<= 5'
  604. @else
  605. content: ''
  606.  
  607.  
  608.  
  609. code
  610. source
  611.  
  612. .selector {
  613. content: '>= 5';
  614. }
  615.  
  616. 4.2 Директива @for
  617.  
  618. @for выводит блок со стилями определенное количество раз. Во время выполнения можно задать переменную-счетчик.
  619. Sass CSS - готовый результат
  620.  
  621. code
  622. source
  623.  
  624. @for $i from 1 to 11 //through вместо to, если требуется "включительно"
  625. .item-#{$i}
  626. background-image: url(img/#{$i}.jpg)
  627.  
  628.  
  629.  
  630. code
  631. source
  632.  
  633. .item-1 {
  634. background-image: url(img/1.jpg);
  635. }
  636.  
  637. .item-2 {
  638. background-image: url(img/2.jpg);
  639. }
  640.  
  641. .item-3 {
  642. background-image: url(img/3.jpg);
  643. }
  644.  
  645. .item-4 {
  646. background-image: url(img/4.jpg);
  647. }
  648.  
  649. .item-5 {
  650. background-image: url(img/5.jpg);
  651. }
  652.  
  653. .item-6 {
  654. background-image: url(img/6.jpg);
  655. }
  656.  
  657. .item-7 {
  658. background-image: url(img/7.jpg);
  659. }
  660.  
  661. .item-8 {
  662. background-image: url(img/8.jpg);
  663. }
  664.  
  665. .item-9 {
  666. background-image: url(img/9.jpg);
  667. }
  668.  
  669. .item-10 {
  670. background-image: url(img/10.jpg);
  671. }
  672.  
  673. Вы можете указать through вместо to, если требуется пройтись от 1 до 11 включительно, а не только до 10, как в примере.
  674. 4.3 Директива @each
  675.  
  676. Если требуется пройтись по списку значений, а не просто чисел, можно использовать директиву @each:
  677. Sass CSS - готовый результат
  678.  
  679. code
  680. source
  681.  
  682. @each $name in carousel, block, vertical, reviews, footer
  683. .section-#{$name}
  684. background-image: url(img/#{$name}.jpg)
  685.  
  686.  
  687.  
  688. code
  689. source
  690.  
  691. .section-carousel {
  692. background-image: url(img/carousel.jpg);
  693. }
  694.  
  695. .section-block {
  696. background-image: url(img/block.jpg);
  697. }
  698.  
  699. .section-vertical {
  700. background-image: url(img/vertical.jpg);
  701. }
  702.  
  703. .section-reviews {
  704. background-image: url(img/reviews.jpg);
  705. }
  706.  
  707. .section-footer {
  708. background-image: url(img/footer.jpg);
  709. }
  710.  
  711. 4.4 Директива @while
  712.  
  713. @while циклично выводит блоки стилей, пока выражение является true.
  714. Sass CSS - готовый результат
  715.  
  716. code
  717. source
  718.  
  719. $i: 7
  720. @while $i > 0
  721. .item-#{$i}
  722. width: 1em * $i
  723. $i: $i - 3
  724.  
  725.  
  726.  
  727. code
  728. source
  729.  
  730. .item-7 {
  731. width: 7em;
  732. }
  733.  
  734. .item-4 {
  735. width: 4em;
  736. }
  737.  
  738. .item-1 {
  739. width: 1em;
  740. }
  741.  
  742. 5. Миксины
  743.  
  744. Миксины - блоки Sass кода (или примеси-шаблоны), которые могут принимать аргументы (опционально) и позволяют значительно расширить возможности написания стилей и сократить затраты времени на применении однотипных правил и даже целых CSS блоков. Это что-то вроде функции, которая может принять аргумент, выполнить огромный объем работы и выдать результат в зависимости от входного параметра.
  745.  
  746. Миксин объявляется директивой @mixin, после объявления должно быть указано имя миксина. Вызывается миксин директивой @include, которая принимает имя миксина и передаваемые аргументы, если такие имеют место быть.
  747.  
  748. Примеры:
  749. Sass CSS - готовый результат
  750.  
  751. code
  752. source
  753.  
  754. @mixin border($color)
  755. border: $color 1px solid
  756.  
  757. p
  758. @include border(#333)
  759.  
  760.  
  761. @mixin transition($time)
  762. -webkit-transition: all $time ease;
  763. -moz-transition: all $time ease;
  764. -o-transition: all $time ease;
  765. transition: all $time ease;
  766.  
  767. p
  768. @include transition(.25s)
  769.  
  770.  
  771.  
  772. code
  773. source
  774.  
  775. p {
  776. border: #333 1px solid;
  777. }
  778.  
  779. p {
  780. -webkit-transition: all 0.25s ease;
  781. -moz-transition: all 0.25s ease;
  782. -o-transition: all 0.25s ease;
  783. transition: all 0.25s ease;
  784. }
  785.  
  786. Друзья, мы рассмотрели основные возможности Sass, которых достаточно для плодотворной работы с CSS стилями сайта. Некоторые директивы и возмоности не вошли в данное руководство, но если вам интересно узнать обо всех возможностях Sass, почитайте документацию, будет полезно.
  787.  
  788. Сразу отвечу на вопрос - как работать с Sass стилями на готовом сайте, неужели нужно править готовый CSS и заливать по FTP? Нет, так делать нельзя. Вы должны иметь локальную копию ваших Sass стилей или даже целого сайта и после окончания работы деплоить (выгружать) по FTP готовые стили. Для этого, вы можете использовать Gulp пакет vinyl-ftp. Или настроить Sass окружение на вашем сервере для компиляции загружаемых по FTP/sFTP файлов.
  789.  
  790. На сегодня всё. Спасибо за внимание!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement