You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+41-41Lines changed: 41 additions & 41 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@
5
5
## Навигация
6
6
7
7
1.[Терминология](#Терминология)
8
-
-[Объявление правила](#Объявление-правила)
8
+
-[Объявление правил](#Объявление-правил)
9
9
-[Селекторы](#Селекторы)
10
10
-[Свойства](#Свойства)
11
11
2.[CSS](#css)
@@ -26,9 +26,9 @@
26
26
27
27
## Терминология
28
28
29
-
### Объявление правила
29
+
### Объявление правил
30
30
31
-
Правило это имя селектора (или группы селекторов) с определенной группой свойств.
31
+
Правило — это имя селектора (или группы селекторов) с определённой группой свойств.
32
32
Пример:
33
33
```css
34
34
.listing {
@@ -39,7 +39,7 @@
39
39
40
40
### Селекторы
41
41
42
-
В объявлении правила, "селекторы" означают элементы в DOM, к которым будут применены объявленные свойства. Селекторы могут соответствовать HTML-тэгам, классам элементов, id или атрибутам.
42
+
В объявлении правила «селекторы» означают элементы в DOM, к которым будут применены объявленные свойства. Селекторы могут соответствовать HTML-тэгам, классам элементов, id или атрибутам.
43
43
Пример использования селекторов:
44
44
45
45
```css
@@ -54,7 +54,7 @@
54
54
55
55
### Свойства
56
56
57
-
Наконец, свойства это то, что описывает стиль выбранных элементов. Свойства указываются в виде `ключ:значение`. Правила могут содержать один или более объявленных свойств.
57
+
Наконец, свойства — это то, что описывает стиль выбранных элементов. Свойства указываются в виде `ключ:значение`. Правила могут содержать одно или более объявленных свойств.
58
58
Выглядит это так:
59
59
60
60
```css
@@ -70,14 +70,14 @@
70
70
71
71
### Форматирование
72
72
73
-
* Используйте табы (2 пробела) для отступов
73
+
* Используйте мягкую табуляцию (2 пробела) для отступов.
74
74
* Kebab-case предпочтительнее camelCase в названии классов.
75
75
- Snake_case и PascalCase можно использовать при работе с BEM (подробнее [OOCSS и BEM](#oocss-и-bem)).
76
-
* Не используйте селекторы #id
77
-
* При использовании нескольких селекторов для одного правила - каждое начинается с новой строки.
78
-
* Перед `{` ставим пробел в объявлении правила
79
-
* В свойства после `:` добавляем пробел.
80
-
* В конце объявления правила символ - `}`, должен переносится на новую строку.
76
+
* Не используйте селекторы #id.
77
+
* При использовании нескольких селекторов для одного правила каждое начинается с новой строки.
78
+
* Перед `{` ставим пробел в объявлении правила.
79
+
* В свойствах после `:` добавляем пробел.
80
+
* В конце объявления правила символ `}` должен переноситься на новую строку.
81
81
* Между объявлениями правил добавляйте пустую строку.
82
82
83
83
**Плохо**
@@ -112,31 +112,31 @@
112
112
### Комментарии
113
113
114
114
* Предпочитайте однострочные комментарии (`// в Sass`) многострочным.
115
-
* Комментарий должен находится на отдельной строке. Избегайте комментариев в конце строки.
115
+
* Комментарий должен находиться на отдельной строке. Избегайте комментариев в конце строки.
116
116
* Пишите детальные комментарии для неочевидных вещей:
117
-
-Для z-index
118
-
- CSS-хаков для отдельных браузеров и совместимости
117
+
-для z-index;
118
+
- CSS-хаков для отдельных браузеров и совместимости.
119
119
120
120
### OOCSS и BEM
121
121
122
-
Мы поощеряем некоторые комбинации OOCSS и BEM, вот почему:
122
+
Мы поощряем некоторые комбинации OOCSS и BEM, вот почему:
123
123
124
-
*Это позволяет создавать чистую и строгую связь между CSS и HTML
125
-
*Это помогает нам создавать многоразовые, составные компоненты
*это помогает создавать масштабируемые таблицы стилей.
128
128
129
-
**OOCSS**, или "Объектно-ориентированный CSS" - это подход к написанию CSS, который призывает думать о таблице стилей как о коллекции "объектов": многоразовых, повторяемых фрагментах кода, которые могут использоваться независимо друг от друга на всём сайте.
129
+
**OOCSS**, или «Объектно-ориентированный CSS» — это подход к написанию CSS, который призывает думать о таблице стилей как о коллекции «объектов»: многоразовых, повторяемых фрагментах кода, которые могут использоваться независимо друг от друга на всём сайте.
* Smashing Magazine's [Introduction to OOCSS](http://www.smashingmagazine.com/2011/12/12/an-introduction-to-object-oriented-css-oocss/)
133
133
134
-
**BEM**, или "Блок-Элемент-Модификатор" - это соглашение об именовании классов в HTML и CSS. Разработано Яндексом с прицелом на большие объёмы кода и масштабируемость. Может послужить как солидный набор правил для использования OOCSS.
134
+
**BEM**, или «Блок-Элемент-Модификатор» - это соглашение об именовании классов в HTML и CSS. Разработано Яндексом с прицелом на большие объёмы кода и масштабируемость. Может послужить как солидный набор правил для использования OOCSS.
* Harry Roberts' [introduction to BEM](http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/)
138
138
139
-
Мы рекомендуем вариант БЭМ, в котором используются PascalCased "блоки", отлично работающие в связке с компонентами (например React). Подчеркивания и тире по-прежнему используются для модификаторов и элементов.
139
+
Мы рекомендуем вариант БЭМ, в котором используются PascalCased «блоки», отлично работающие в связке с компонентами (например, React). Подчёркивания и тире по-прежнему используются для модификаторов и элементов.
140
140
141
141
**Пример**
142
142
@@ -165,21 +165,21 @@ function ListingCard() {
165
165
.ListingCard__content { }
166
166
```
167
167
168
-
*`.ListingCard` — это "блок" и он представляет из себя компонент верхнего уровня.
169
-
*`.ListingCard__title` — это "элемент" и он является дочерним компонентом `.ListingCard`. Из "элементов" состоит "блок".
170
-
*`.ListingCard--featured` — это "модификатор" и он предствляет различные состояния "блока"`.ListingCard`.
168
+
*`.ListingCard` — это «блок» и он представляет из себя компонент верхнего уровня.
169
+
*`.ListingCard__title` — это «элемент» и он является дочерним компонентом `.ListingCard`. Из «элементов» состоит «блок».
170
+
*`.ListingCard--featured` — это «модификатор» и он предствляет различные состояния «блока»`.ListingCard`.
171
171
172
172
### Селекторы id
173
173
174
-
Хоть в CSS и можно находить элемент по ID, это является плохой практикой. Селекторы ID вводят излишне высокий уровень [специфичности](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity) для ваших правил, и лишает возможности их реиспользовать.
174
+
Хоть в CSS и можно находить элемент по ID, это является плохой практикой. Селекторы ID вводят излишне высокий уровень [специфичности](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity) для ваших правил и лишают возможности их переиспользовать.
175
175
176
-
Более подробная статья на эту тему -[CSS Wizardry's article](http://csswizardry.com/2014/07/hacks-for-dealing-with-specificity/)
176
+
Более подробная статья на эту тему:[CSS Wizardry's article](http://csswizardry.com/2014/07/hacks-for-dealing-with-specificity/)
177
177
178
-
### JavaScriptхуки
178
+
### JavaScript-хуки
179
179
180
-
Избегайте привязки к одному классу одновременно в CSS и Javascript. Это может привести как минимум, к трате времени при рефакторинге, а так же боязни разработчика сломать функционал вводом новых изменений.
180
+
Избегайте привязки к одному классу одновременно в CSS и Javascript. Это может привести как минимум к трате времени при рефакторинге, а также боязни разработчика сломать функционал вводом новых изменений.
181
181
182
-
Мы рекомендуем использовать префикс `.js-`, для тех элементов которые будут задействованы в Javascript:
182
+
Мы рекомендуем использовать префикс `.js-`, для тех элементов, которые будут задействованы в Javascript:
183
183
184
184
```html
185
185
<buttonclass="btn btn-primary js-request-to-book">Request to Book</button>
* Используйте синтаксис `.scss` вместо оригинального `.sass` синтаксиса.
214
214
* Упорядочивайте обычный CSS и `@include`-объявления логически.
215
215
216
216
### Сортировка свойств
@@ -229,7 +229,7 @@ function ListingCard() {
229
229
230
230
2. Объявление `@include`
231
231
232
-
Группировка `@include` в конце правила - делает код более читаемым.
232
+
Группировка `@include` в конце правила делает код более читаемым.
233
233
234
234
```scss
235
235
.btn-green {
@@ -242,7 +242,7 @@ function ListingCard() {
242
242
243
243
3. Вложенные селекторы
244
244
245
-
Вложенные селекторы, (_если они небходимы_), идут в самом конце, и ничего не должно идти после них. Добавляйте пустую строку между свойствами правила и вложенными селекторами, а также между смежными вложенными селекторами. Применяйте эти правила ко всем вложенным селекторам.
245
+
Вложенные селекторы (_если они небходимы_) идут в самом конце, и ничего не должно идти после них. Добавляйте пустую строку между свойствами правила и вложенными селекторами, а также между смежными вложенными селекторами. Применяйте эти правила ко всем вложенным селекторам.
246
246
247
247
```scss
248
248
.btn {
@@ -258,11 +258,11 @@ function ListingCard() {
258
258
259
259
### Переменные
260
260
261
-
Предпочитайте kebab-case именование переменных (напр. `$my-variable`) camelCase или snake_cased именованию. Допускается использовать знак нижнего подчеркивания для обозначения переменной используемой в пределах одного файла (напр. `$_my-variable`).
261
+
Предпочитайте kebab-case именование переменных (напр. `$my-variable`) camelCase или snake_cased именованию. Допускается использовать знак нижнего подчеркивания для обозначения переменной, используемой в пределах одного файла (напр. `$_my-variable`).
262
262
263
263
### Миксины
264
264
265
-
Миксины делают ваш код более чистым и понятным и позволяют поддерживать абстрактную сложность, так же как и хорошо названные функции. Миксины не принимающие аргументов могут быть полезны для этого, но нужно помнить, что если вы не сжимаете свои файлы (например gzip), то это может привести к лишнему повторению кода.
265
+
Миксины делают ваш код более чистым и понятным и позволяют поддерживать абстрактную сложность, так же как и хорошо названные функции. Миксины, не принимающие аргументов, могут быть полезны для этого, но нужно помнить, что если вы не сжимаете свои файлы (например, gzip), то это может привести к лишнему повторению кода.
266
266
267
267
### Директива @extend
268
268
@@ -282,16 +282,16 @@ function ListingCard() {
282
282
}
283
283
```
284
284
285
-
Когда вы пишите такие длинные селекторы, вы вероятно пишите CSS который:
285
+
Когда вы пишите такие длинные селекторы, вы, вероятно, пишите CSS, который:
286
286
287
-
*Слишком сильно привязан к HTML (хрупкий) *—или—*
288
-
*Чрезмерно специфичный *—или—*
289
-
*Не реиспользуемый
287
+
*слишком сильно привязан к HTML (хрупкий);*—или—*
288
+
*чрезмерно специфичный;*—или—*
289
+
*не переиспользуемый.
290
290
291
291
292
-
Еще раз: **никаких вложенных ID селекторов!**
292
+
Ещё раз: **никаких вложенных ID селекторов!**
293
293
294
-
Если все-таки пришлось использовать селекторы ID (а этого на самом деле лучше избегать), они никогда не должны быть вложенными. Если такое происходит, вам требуется пересмотреть свою разметку и выяснить, зачем нужна такая сильная специфика. Если у вас правильно структурирован HTML-код и CSS-стили, вам **никогда** не придется это делать.
294
+
Если всё-таки пришлось использовать селекторы ID (а этого на самом деле лучше избегать), они никогда не должны быть вложенными. Если такое происходит, вам требуется пересмотреть свою разметку и выяснить, зачем нужна такая сильная специфика. Если у вас правильно структурирован HTML-код и CSS-стили, вам **никогда** не придётся это делать.
0 commit comments