2015-05-13 4 views
0

я буду брать эту декларацию в Bootstrap CSS в качестве примера:CSS Метода Правила применения - Атрибут Wildcard против Listing Каждого класса

.col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9 { 
    float: left; 
} 

Я заметил эту картину через другие структуры, а также. Я думаю, что это можно было бы легко записать в виде:

[class*='col-xs-'] { 
    float: left; 
} 

При попытке применить правило к набору классов, есть какое-либо преимущество в выписывая каждый класса, а не с помощью метода атрибута подстановочного? В таких ситуациях я предпочитаю использовать последнее в своей работе, но я заметил, что довольно много библиотек CSS выписывают каждый класс.

+1

Я верю в эту конкретную ситуацию, потому что они используют col-xs- в других классах (col-xs-offset-), подстановочные знаки могут вызвать конфликты. – Quintile

+0

Две проблемы с последующим подходом: (i) селектор соответствия подстроки '* =' вызывает непреднамеренное сопоставление, например. '[class * = col-xs-]' соответствует 'xxcol-xs-xx'; в то время как '| =' и '~ =' имеют ограничения (ii) селектор атрибутов имеет меньше специфики, чем селектор классов, поэтому '.foo {float: right;}' beats '[class * = col-xs -] {float: left} '** даже если указано в этом порядке **. Наконец, никто на самом деле не вводит эти длинные правила, как в первом примере. Эти правила генерируются * через предварительные процессоры CSS. –

ответ

0

Подстановочный шаблон атрибута дороже для интерпретатора, чем для написания классов. В большинстве случаев библиотеки, о которых вы упоминаете, не выписывают эти классы вручную, а используют препроцессор, например, sass или less, чтобы про грамматически создавать все возможные варианты.

http://sass-lang.com/ http://lesscss.org/

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS

Кроме того, *= является особенностью CSS3, так что лучше использовать явные имена, где это возможно, чтобы увеличить совместимость.

+1

no Вам не стоит беспокоиться о производительности селектора –

+0

@SalmanA, Почему бы не волноваться об этом? В этом случае его можно легко избежать, поэтому заставьте браузер сделать дополнительную работу. – BillPull

+0

@SalmanA Это потому, что прирост производительности ничтожно мал или потому, что такие претензии необоснованны? –

Смежные вопросы