CSS Giude v1.0
CSS Giude v1.0
CSS
CSS синтаксис
/* Плохо */
.heading {
∙∙∙∙font-size: 32px;
}
/* Хорошо */
.heading {
―font-size: 32px;
}
/* Плохо */
.header, .main, .footer {
margin-left: auto;
margin-right: auto;
}
/* Хорошо */
.header,
.main,
.footer {
margin-left: auto;
margin-right: auto;
}
/* Плохо */
.heading{
font-size: 32px;
}
/* Хорошо */
.heading {
font-size: 32px;
}
/* Плохо */
.heading {
font-size: 32px;}
.heading {
font-size: 32px;
}
/* Хорошо */
.heading {
font-size: 32px;
}
/* Плохо */
.heading {
font-size: 32px;
}
.highlight {
background-color: #f00;
}
/* Хорошо */
.heading {
font-size: 32px;
}
.highlight {
background-color: #f00;
}
- 1 пробел после `:`
/* Плохо */
.heading {
font-size:32px;
}
/* Хорошо */
.heading {
font-size: 32px;
}
/* Плохо */
.heading {
font-size: 32px
}
/* Хорошо */
.heading {
font-size: 32px;
}
/* Плохо */
.header {
background-color: rgba(0,0,0,.5);
}
/* Хорошо */
.header {
background-color: rgba(0, 0, 0, .5);
}
/* Плохо */
.transparent {
opacity: 0.5;
}
/* Хорошо */
.transparent {
opacity: .5;
}
/* Плохо */
.white {
background-color: #FFF;
}
/* Хорошо */
.white {
background-color: #fff;
}
- `'` для значений атрибутов внутри селектора, вокруг url, в значении свойства
content
/* Плохо */
input[type=text] {
/* ... */
}
/* Хорошо */
input[type='text'] {
/* ... */
}
```
/* Плохо */
.header {
margin-top: 0px;
}
/* Хорошо */
.header {
margin-top: 0;
}
Порядок объявления
Небольшой пример:
.declaration-order {
/* Позиционирование */
position: absolute;
z-index: 100;
top: 0;
right: 0;
left: 0;
bottom: 0;
/* Расположение */
margin-top: 20px;
margin-left: auto;
margin-right: auto;
padding: 8px 16px;
/* Блочная модель */
display: block;
float: left;
width: 100px;
height: 100px;
/* Отображение */
color: #333;
background-color: #f5f5f5;
border: 1px solid #e5e5e5;
border-radius: 3px;
opacity: 1;
/* Типографика */
font-family: 'Helvetica Neue', sans-serif;
font-size: 14px;
line-height: 24px;
text-align: center;
/* Прочее */
transition: .25s ease-out;
transform: scale(.75);
}
Не используйте @import
.element { /* ... */ }
.element-avatar { /* ... */ }
.element-selected { /* ... */ }
В случаях, когда набор правил включает в себя только одно объявление, рекомендуется
оставить переносы строк, иначе в будущем при добавлении новых свойств потребуется
добавлять переносы. Любой набор правил с несколькими объявлениями должен быть
разделен на отдельные строки.
/* Плохо */
.sprite { display: inline-block; width: 16px; height: 16px; background-image:
url(../images/sprite.png); }
.sprite-home { background-position: 0 -20px; }
.sprite-account { background-position: 0 -40px; }
/* Хорошо */
.sprite {
display: inline-block;
width: 16px;
height: 16px;
background-image: url(../img/sprite.png);
}
.sprite-home {
background-position: 0 -20px;
}
.sprite-account {
background-position: 0 -40px;
}
Сокращенная запись
На сайте Mozilla Developer Network есть отличная статья о сокращенной записи свойств
для тех кто не знаком с такой формой записи.
/* Плохо */
.element {
margin: 0 0 10px;
background: red;
background: url(../img/image.jpg);
border-radius: 3px 3px 0 0;
}
/* Хорошо */
.element {
margin-bottom: 10px;
background-color: red;
background-image: url(../img/image.jpg);
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
Комментарии
Селекторы
/* Плохо */
span { /* ... */ }
a.link { /* ... */ }
#logo { /* ... */ }
.page-container #stream .stream-item .tweet .tweet-header .username { /* ... */ }
.user { /* ... */ }
/* Хорошо */
.link {
/* ... */
}
.user {
/* ... */
}
.user:hover .user__name {
/* ... */
}
Организация кода
Глобальные стили
1. шрифты (global/fonts.less)
2. переменные (global/vars.less)
3. сброс браузерных стилей (bootstrap/bootstrap-reboot.less)
4. общие стили для всего проекта (global/global.less)
Стили Bootstrap
5. сетка (bootstrap/bootstrap-grid.less)
6. стили отдельных плагинов (bootstrap/bootstrap-modals.less, ...)
Стили плагинов
7. стили плагинов (plugins/swiper.less, ...)