iiiBird
@iiiBird
Пока ты спишь - твой конкурент совершенствуется

Какое решение более верное (задание классов для иконок)?

в общем вопрос такой. после популяризации sass частенько вижу 2 вида стилизации иконок:
первый:
<i class="icon icon-first"></i>
<i class="icon icon-second"></i>

.icon {
	display: inline-block;
	vertical-align: middle;
	width: 40px;
	height: 40px;
}
.icon-first {
	background: url('icon-url');
}
.icon-second {
	background: url('icon-url-2');
}


второй:
<i class="icon-first"></i>
<i class="icon-second"></i>

.icon {
	display: inline-block;
	vertical-align: middle;
	width: 40px;
	height: 40px;
}
.icon-first {
    @extend .icon;
	background: url('icon-url');
}
.icon-second {
    @extend .icon;
	background: url('icon-url-2');
}


ну и собственно вопрос: кто как считает какой вариант правильнее? ну и ответ обосновать.
p.s. и ответ "вон glyphicon и font awesome используют первый вариант - значит он правильный" - не подходит.
  • Вопрос задан
  • 268 просмотров
Решения вопроса 2
AMar4enko
@AMar4enko
Во втором случае получится следующий css
.icon, .icon-first, .icon-second {
  display: inline-block;
  vertical-align: middle;
  width: 40px;
  height: 40px;
}
.icon-first {
  background: url('icon-url-1');
}
.icon-second {
  background: url('icon-url-2');
}

Если у вас будет 200 классов, использующих extend, то первый селектор будет включать 200 уникальных имен классов и результирующий css получится более длинным.
Ответ написан
dom1n1k
@dom1n1k
Есть еще третий вариант:
[class^="icon-"],
[class*="icon-"] {
    display: inline-block;
    vertical-align: middle;
    width: 40px;
    height: 40px;
}

Но на мой вкус 1-ый вариант всё же лучший и самый однозначный.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
kot_mapku3
@kot_mapku3
Ответ выше говорит, что весить файл будет больше. К тому же понимать два класса лучше и правильнее, чем 1.
Правильнее был бы первый вариант.
Ответ написан
loratokareva
@loratokareva
html верстальщик
На LESS вот такой вариант можно использовать Посмотреть в редакторе
<i class="icon icon-first"></i>
<i class="icon icon-second"></i>

.icon {  
  display: inline-block;
  vertical-align: middle;
  width: 40px;
  height: 40px;
  
  &&-first {    
  background: url('icon-url.gif');
  }
  &&-second { 
  background: url('icon-url-2.gif');
  } 
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы