Комментарии 34
Что-то шрифт кнопок на картинке плывет, сначала попробовал глаза протереть, нет, правда плывет…
Статья кстати классная, спасибо. Не знал что такое на css можно.
Это же не CSS, а один из препроцессоров — SASS. После компиляции из SASS получается CSS.
Смысл лично мне не очень понятен. В SASS есть примеси, переменные. Их надо использовать. Что ещё можно вынести из статьи?
Смысл лично мне не очень понятен. В SASS есть примеси, переменные. Их надо использовать. Что ещё можно вынести из статьи?
вы же знаете что `butt` по-английски значит, правда?)
А вообще спасибо, сам над чем-то похожим думаем в проекте. Но пока решили сделать несколько базовых миксинов и просто передавать в них цвета
А вообще спасибо, сам над чем-то похожим думаем в проекте. Но пока решили сделать несколько базовых миксинов и просто передавать в них цвета
Хорошо бы вам подучиться нормальному стилю кода или хотя бы использовать IDE с автоформатированием. В свойствах после двоеточего пробел то есть, то нет, вместо табуляции используйте 4 пробела, оступы огромные. несколько extend можно объединять в одной строке
Откуда такие размеры и зачем тут rem если везде px
Эти же классы нельзя будет применить на
Маленький лайфхак
Ну и последнее в этом занудном комментарии — сокращать имя класса
@extend .foo, .bar
. Откуда такие размеры и зачем тут rem если везде px
width: 186rem; margin: 20rem auto;
? По умолчанию 1rem = 16px.Эти же классы нельзя будет применить на
<button>
, будут дефолтные бордеры.Маленький лайфхак
transition:all .3s ease;
можно заменить на transition: .3s ease;
, но если вы меняете только одно свойство, то лучше указать его явно transition: background-color .3s ease;
чтобы избежать ненужных анимаций.Ну и последнее в этом занудном комментарии — сокращать имя класса
button
до butt
странно, коллеги не поймут (butt — анг. задница), общепринято btn
.А еще у вас в классах смесь теплого и мягкого. Если это класс size, зачем там же переопределяется font-size, font-family, text-align, display. Если это цвет, зачем там переопределяется transition. Вынесите все общие для кнопок свойства в общие, и расширяйте для каждой кнопки.
Мне и моим коллегами удобнее делать 2 тихих класса)
Сейчас у вас в тихих классах размеров и тем, куча копипасты про шрифт, танзишен и т.д., если понадобиться менять, вы предлагаете менять те же настройки транзишена в пяти местах, а если цветов еще больше, то в еще большем количестве. Зачем код так жестоко дублировать то?
Если он везде пристуствует его можно вынести в отдельный тихий класс %btn-default и extend делать либо в нужных классах кнопок, либо в сами тихие классы им расширить. Хотя, конечно, стоило просто завести класс btn c свойствами по-умолчанию, не стоит слишком увлекаться extend'ами.
Если он везде пристуствует его можно вынести в отдельный тихий класс %btn-default и extend делать либо в нужных классах кнопок, либо в сами тихие классы им расширить. Хотя, конечно, стоило просто завести класс btn c свойствами по-умолчанию, не стоит слишком увлекаться extend'ами.
Вы правы, нужно все загонять в переменные, но для этой статьи я решил немного упростить)
А так все зависит от конкретного проекта, здесь описаны основные моменты
А так все зависит от конкретного проекта, здесь описаны основные моменты
В данном примере описана система которая обычно используется на больших проектах. Размер кнопки подразумевает подкласс объекта который включает в себя общие свойства для нескольких кнопок. По сути каждый «класс size» это дефолтное состояние для набора кнопок с определенной высотой. Вся система построена на том что бы иметь только один класс в HTML для привязки всех стилей и не завязываться на модификаторы.
вместо табуляции используйте 4 пробела, оступы огромные
О_о, очередной tabs-vs-spaces?
Выше наглядный пример, далеко ходить не надо, по моему мнению тут все очевидно.
Наглядный пример чего? Пример default-го tabSize-а в браузере? Вы серьёзно?
Как один из кейсов. Дефолтный tabSize в браузере у 99% пользователей. Код выше с такими отступами выглядит неаккуратно. Давайте не будем начинать?
PS И кстати при чем тут tabSize браузера, стили для кода — это CSS хабра.
PS И кстати при чем тут tabSize браузера, стили для кода — это CSS хабра.
Дык, какое отношение имеет дефолтный tabSize в браузере к написанию CSS-кода? Вы выше даёте советы использовать вместо табов пробелы… Я могу точно также рекомендовать всем использовать пробелы, вместо табов. НО!
Зачем вы (не конкретно вы, а апологеты пробелов) из раза в раз тащите всю эту вкусовщину на хабр? Вам этого мало?
Зачем вы (не конкретно вы, а апологеты пробелов) из раза в раз тащите всю эту вкусовщину на хабр? Вам этого мало?
Соглашусь с вами, код действительно выглядит не очень аккуратно в моей статье, но мне лень переводить табы в пробелы)
Ответил выше)
Вы правы, в оформлении кода есть косяки, которые образовались во время переноса из редактора в статью).
Надо бы поменять rem на px(где-то изменил, а где-то нет).
transition обычно определяю в тихом классе, для статьи переписал.У меня на проектах 1rem = 10px.
Видимо коллеги находятся на моем уровне грамотности и понимают, что butt — это кнопка, хотя и вправду получается смешно)
Надо бы поменять rem на px(где-то изменил, а где-то нет).
transition обычно определяю в тихом классе, для статьи переписал.У меня на проектах 1rem = 10px.
Видимо коллеги находятся на моем уровне грамотности и понимают, что butt — это кнопка, хотя и вправду получается смешно)
НЛО прилетело и опубликовало эту надпись здесь
Очень удобный велосипед!
Я как не-верстальщик понял только одно: надо пользоваться стандартными кнопками Bootstrap и ничего не трогать :)
Следующим шагом предлагаю посмотреть в сторону БЭМ и не бояться написать для кнопки лишний класс.
Можно сократить итоговый css раза в полтора использовав для кнопки классы размера, и миксины просто станут не нужны.
Можно сократить итоговый css раза в полтора использовав для кнопки классы размера, и миксины просто станут не нужны.
У кнопки делаю один основной класс — мне так удобно, не люблю много презентационных классов)
Вы итак используется модификационные классы для цвета, чем вам помешает еще один класс для размера?
Из плюсов:
и выглядеть это будет примерно так:
Из плюсов:
- почти в 3 раза меньше стилей
- такой код легче сопровождать и поддерживать
и выглядеть это будет примерно так:
Код (656 символов стилей)
Код на вскидку, не проверял идентичность
<a href="#" class="btn btn-blue">Инфраструктура</a>
<a href="#" class="btn btn-red">Квартиры</a>
<a href="#" class="btn btn-yellow">Галерея</a>
<a href="#" class="btn btn-transparent">Архив новостей</a>
<a href="#" class="btn btn-transparent btn-xl">Показать все новости</a>
.btn {
display: block;
height: 50px;
line-height: 50px;
text-align: center;
font-family: 'intro';
font-size: 12px;
text-decoration: none;
background: transparent;
transition: background .3s ease;
&.btn-blue {
background-color: #80B1D3;
&:hover {
background: #80B1D3;
color: #fff;
}
}
&.btn-red {
background-color: #D46C6B;
&:hover {
background: #D46C6B;
color: #fff;
}
}
&.btn-yellow {
background-color: #F3B562;
&:hover {
background: #D46C6B;
color: #fff;
}
}
&.btn-transparent {
box-shadow: inset 0 0 0 2rem $gray_4;
}
&.btn-xl {
height: 70px;
line-height: 70px;
font-size: 16px;
}
}
Ваш код, для сравнения (1458 символов стилей)
.about_butt {
display: block;
height:50px;
line-height: 50px;
text-align: center;
font-family: 'intro';
font-size: 12px;
&.blue_mod {
background: $blue_1;
color: $white;
transition: all .3s ease;
&:hover, &:focus {
text-decoration: none;
}
&:hover {
background: lighten($blue_1, 5%);
}
}
&.red_mod {
background: $red_2;
color: $white;
transition: all .3s ease;
&:hover, &:focus {
text-decoration: none;
}
&:hover {
background: lighten($red_2, 5%);
}
}
&.yellow_mod {
background: $yellow_1;
color: $white;
transition: all .3s ease;
&:hover, &:focus {
text-decoration: none;
}
&:hover {
background: lighten($yellow_1, 5%);
}
}
}
.news_more_butt {
display: block;
height:50px;
line-height: 50px;
text-align: center;
font-family: 'intro';
font-size: 12px;
color: $black_2;
background: transparent;
box-shadow: inset 0 0 0 2rem $gray_4;
transition: all .3s ease;
width: 186px;
margin: 20px auto;
&:hover, &:focus {
text-decoration: none;
}
&:hover {
background: $gray_4;
color: $white;
}
}
.show_news_butt {
display: block;
height:70px;
line-height: 70px;
text-align: center;
font-family: 'intro';
font-size: 16px;
color: $black_2;
background: transparent;
box-shadow: inset 0 0 0 2rem $gray_4;
transition: all .3s ease;
display: inline-block;
&:hover, &:focus {
text-decoration: none;
}
&:hover {
background: $gray_4;
color: $white;
}
}
Прочитайте чуть выше комментарий Glivera
В данном случае БЭМ будет шагом назад так как есть реальный пример после которого и родилась эта система. Представьте себе ситуацию когда у вас на проекте больше ста модификаций кнопок которые разбросаны по всему проекту и при каждом редизайне, который происходит раз в месяц-два, вам приходится пробегать по 20-30 партиалам что бы заменить классы на кнопках на новые. Или конечно есть выбор сделать в определенном случае цвет кнопки для класса "...red..." зеленым))) Так что после такого я предпочитаю отдавать все что связано с кастомизиуемыми повторяющимися элементами на откуп sass с его возможностями… Но я не навязываю свою точку зрения)
А зачем Вы каждой кнопке говорите
?
Задайте это свойство основному классу, а если вдруг потребуется — лучше его изменить для одного стиля, чем тащить везде.
&:hover, &:focus {
text-decoration: none;
}
?
Задайте это свойство основному классу, а если вдруг потребуется — лучше его изменить для одного стиля, чем тащить везде.
Надо посмотреть на БЭМ и CSSComb
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Организация кнопок на сайте с помощью Sass