×
=0) { let js = text.slice(pos1, pos2); + '<\/' + "script" + '>'; arrText.push(js); // next pos1 = pos2; continue; } } } break; } return arrText; } function OpenDialog(parentDiv, urlContent) { parentDiv = document.getElementById('modal-background'); // new !!!!!!! parentDiv.appendChild(document.getElementById('modal-template')); document.getElementById('modal-background').style.display = "block"; document.getElementById('modal-template').style.display = "flex"; // !!!!! document.getElementById('modal-body').innerHTML = ""; post_url(urlContent, "", function(text_from_server) { var element = document.getElementById('modal-body'); element.innerHTML = text_from_server; // add scripts var arrJSText = get_scripts(text_from_server); for (var i=0; i
dir.by
Search
Programming, development, testing
→
SCSS файл (с помощью компилятора SASS получаем CSS файл)
→
Что такое SCSS файл ?
Looked at
3729
times
Что такое SCSS файл ?
last updated: 17 June 2020
Все стили хранятся в
.css
файле.
Когда
.css
файл большой, то становится сложно менять стили в этом файле. Потому что их много.
Чтобы привести стили в порядок, как-то их сгрупировать используется конвертация Sass (препроцессор).
То есть вы создаете
.scss
файл.
В
.scss
файле вы можете использовать:
• переменные
• вложенности
• миксины
• наследование
и другие приятные вещи
Запускаете конвертацию Sass (препроцессор) и ваш
.scss
файл конверитруется в
.css
файл.
На заметку!
scss
часто сравнивают с
less
.
scss
более старый.
less
относительно новый компилятор, ему около 4 лет.
В настоящее время
less
основан на
Javascript
.
Переменные в файле .scss
Чтобы создать переменную нужно использовать символ
$
В переменных Вы можете хранить цвета, стеки шрифтов или любые другие значения.
Файл
my.scss
$font-stack
: Helvetica;
$primary-color
: #333;
body
{
font-family:
$font-stack
;
color:
$primary-color
;
}
Запускаем конвертацию Sass (препроцессор) →
Файл
my.css
body
{
font-family: Helvetica;
color: #333;
}
Переменные с математическими операциями в файле .scss
Файл
my.scss
.button
{
$unit
: 3px;
border:
$unit
solid #ddd;
padding:
$unit * 3
;
margin:
$unit * 2
;
}
.box
{
$base_unit
: 1px;
border:
$base_unit
$base_unit + 1
$base_unit + 2
$base_unit + 3
}
Запускаем конвертацию Sass (препроцессор) →
Файл
my.css
.button
{
border: 3px solid #ddd;
padding: 9px;
margin: 6px;
}
.box
{
border: 1px 2px 3px 4px;
}
Вложенности в файле .scss
Sass
позволит вам вкладывать CSS селекторы таким же образом, как и в визуальной иерархии HTML. Но помните, что чрезмерное количество вложенностей делает ваш документ менее читабельным и воспринимаемым, что считается плохой практикой.
Файл
my.scss
nav
{
ul
{
margin: 0;
padding: 0;
list-style: none;
}
li
{
display: inline-block;
}
a
{
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
Запускаем конвертацию Sass (препроцессор) →
Файл
my.css
nav ul
{
margin: 0;
padding: 0;
list-style: none;
}
nav li
{
display: inline-block;
}
nav a
{
display: block;
padding: 6px 12px;
text-decoration: none;
}
Импорт scss в scss файл
Вы можете создавать фрагменты
Scss
-файла, которые будут содержать в себе небольшие отрывки
CSS
, которые можно будет использовать в других
Sass
-файлах.
Это отличный способ сделать ваш
CSS
модульным, а также облегчить его обслуживание.
Фрагмент — это простой Sass-файл, имя которого начинается с нижнего подчеркивания
, например,
_partial.scss
.
Нижнее подчеркивание
в имени
Scss-файла
говорит компилятору о том, что это только фрагмент и он не должен компилироваться в
CSS
.
Фрагменты Scss
подключаются при помощи директивы
@import
.
Директива
@import
импортирует указанный в директиве файл в тот, где он вызывается, т.е. на выходе получается один
CSS
-файл, скомпилированный из нескольких фрагментов.
Например
, у вас есть несколько фрагментов
Scss
-файлов:
_reset.scss
и
base.scss
Мы хотим импортировать
_reset.scss
в
base.scss
.
Обратите внимание на то, что мы используем
@import 'reset'
; в
base.scss
файле. Когда вы импортируете файл, то не нужно указывать расширение
.scss
.
Sass
— умный язык и он сам догадается.
Файл
_reset.scss
html,
body,
ul,
ol
{
margin: 0;
padding: 0;
}
Файл
base.scss
@import 'reset'
;
body
{
font: 100% Helvetica, sans-serif;
background-color: #efefef;
}
Запускаем конвертацию Sass (препроцессор) →
Файл
base.css
html,
body,
ul,
ol
{
margin: 0;
padding: 0;
}
body
{
font: 100% Helvetica, sans-serif;
background-color: #efefef;
}
Миксины (примеси)
Миксины
позволяют создавать группы деклараций
CSS
, которые вам придется использовать по нескольку раз на сайте.
Вы даже можете передавать
переменные
в
миксины
, чтобы сделать их более гибкими. Так же хорошо использовать миксины для вендорных префиксов.
Пример для transform:
Файл
base.scss
@mixin
transform
($property)
{
-webkit-transform: $property;
-ms-transform: $property;
transform: $property;
}
.box
{
@include
transform
(rotate(30deg));
}
Запускаем конвертацию Sass (препроцессор) →
Файл
base.css
.box
{
-webkit-transform: rotate(30deg);
-ms-transform: rotate(30deg);
transform: rotate(30deg);
}
Расширение/Наследование
Используя директиву
@extend
можно наследовать наборы свойств
CSS
от одного селектора другому. Это позволяет держать ваш
Scss
-файл в «чистоте». В нашем примере мы покажем вам как сделать стили оповещений об ошибках, предупреждениях и удачных исходах, используя другие возможности
Sass
, которые идут рука-об-руку с расширением, классами-шаблонами.
Класс-шаблон
- особый тип классов, который выводится только при использовании расширения - это позволит сохранить ваш скомпилированный
CSS
чистым и аккуратным.
В примере обратите внимание что
%equal-heights
не попадает в
CSS
, так как ни разу не был использован.
Файл
base.scss
// This CSS will print because %message-shared is extended.
%message-shared
{
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
// This CSS won't print because %equal-heights is never extended.
%equal-heights
{
display: flex;
flex-wrap: wrap;
}
.message
{
@extend
%message-shared
;
}
.success
{
@extend
%message-shared
;
border-color: green;
}
.error
{
@extend
%message-shared
;
border-color: red;
}
.warning
{
@extend
%message-shared
;
border-color: yellow;
}
Запускаем конвертацию Sass (препроцессор) →
Файл
base.css
.message, .success, .error, .warning
{
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
.success
{
border-color: green;
}
.error
{
border-color: red;
}
.warning
{
border-color: yellow;
}
Математические операторы
Sass
имеет несколько стандартных математических операторов, таких как
+
, -, *, / и %.
В нашем примере мы совершаем простые математические вычисления для расчета ширины
aside
и
article
.
Мы создали простую адаптивную модульную сетку, с шириной в 960 пикселей. Используя математические операторы, мы использовали полученные данные с пиксельными значениями и конвертировали их в процентные, причем без особых усилий.
Файл
base.scss
.container
{
width: 100%;
}
article[role="main"]
{
float: left;
width: 600px / 960px * 100%;
}
aside[role="complementary"]
{
float: right;
width: 300px / 960px * 100%;
}
Запускаем конвертацию Sass (препроцессор) →
Файл
base.css
.container
{
width: 100%;
}
article[role="main"]
{
float: left;
width: 62.5%;
}
aside[role="complementary"]
{
float: right;
width: 31.25%;
}
Next topic →
Конвертируем файл .SCSS в файл .CSS (в командной строке выполним: "sass 1.scss:1.css") | node.js
Your feedback ... Comments ...
Your Name
Your comment
(www links can only be added by a logged-in user)
+ Picture
Объявления
Объявления
•
Что такое SCSS файл ?
Вариант 1. Конвертируем файл .SCSS в файл .CSS (вариант очень простой)
•
Конвертируем файл .SCSS в файл .CSS (в командной строке выполним: "sass 1.scss:1.css") | node.js
Вариант 2. Конвертируем файл .SCSS в файл .CSS (используем файл package.json)
•
Конвертируем файл .SCSS в файл .CSS (в командной строке выполним: "npm run EvgenConvertCSS" . EvgenConvertCSS это скрипт конвертирует файл 1.scss в файл 1.css. Скрипт EvgenConvertCSS находится в файле package.json) | npm, node.js
Ваши вопросы присылайте по почте:
info@dir.by