2015-08-10 2 views
3

Предположим, что у меня есть два элемента с несколькими классами:CSS селектор труб с несколькими классами

<p class="fruit-apple something">First</p> 
<p class="whatever fruit-banana">Second</p> 

Как я могу использовать «трубу» селектор (|=), чтобы выбрать fruit- классы?

Я пробовал что-то вроде следующего, но это, похоже, не сработает.

p[class|=fruit] { 
 
    color: red; 
 
}
<p class="fruit-apple something">First</p> 
 
<p class="whatever fruit-banana">Second</p>

Это, очевидно, потому, что во втором случае, строка класс не начинается с fruit-, а селектор соответствия наивности.

+0

возможно дубликат [Есть ли селектор CSS классом префиксом?] (Http://stackoverflow.com/questions/3338680/is-there-a-css-selector-by -class-prefix) – dotnetom

+0

@dotnetom Не совсем, но почти - ответ @ SBUJOLD, однако, представляется релевантным. – Manngo

ответ

4

Селектор |= выбирает только starting portion указанного атрибута.

Вместо этого вам понадобится оператор *=.

p[class*=fruit-]

Он будет искать классы, которые содержат фразу fruit-x где x все, что вы хотите.

p[class*=fruit-] { 
 
    color: red; 
 
}
<p class="fruit-apple something">First</p> 
 
<p class="whatever fruit-banana">Second</p> 
 
<p class="whatever fruit">Third (No selection)</p> 
 
<p class="fruit noselect">Fourth (No selection)</p>

+1

Спасибо, вот как это выглядит, что я считаю слабым в доступных селекторах. Единственная проблема с этим решением заключается в том, что этот селектор также будет удовлетворен частичными совпадениями, такими как 'not-fruit-donut', но, возможно, это становится разборчивым. – Manngo

+0

@Manngo В CSS-селекторах есть определенные недостатки. В ситуации, подобной той, которую вы предложили с помощью 'not-fruit-donut', вы можете дублировать CSS и менять цвет:' p [class * = - fruit] {color: black; } '. Это далеко не изящно, но это практическое решение этой конкретной проблемы. – Singular1ty

+0

@Manngo: Вот почему кто-то еще порекомендовал мой ответ на связанный вопрос ранее - он объясняет большинство, если не все, возможных сценариев, в том числе тот, который вы упомянули, не требуя главного правила. – BoltClock