Sujay U N
Sujay U N

Reputation: 5340

Css target just class name starts with and Ends with string

I want to create certain standard css code for our company and as branding, I want to start all my class names with my company name- and end all with -Cls

<div class="Nam-StdCss-Cls"></div>

<div class="Nam-StdCss-Raduis-Cls"></div>

<div class="Nam-StdCss-Border-Cls"></div>

Also I want to allow users to use their custom css as well

 <div class="Nam-StdCss-Cls menu"></div>

<div class="menu Nam-StdCss-Cls"></div>

I tried to do and This is not allowing to enter the custom class like menu.

[class^="Nam-"][class*="StdCss-1"][class$="-Cls"]{}

I tried and this is not checking starting and ending class name

 [class*="Nam-"][class*="StdCss-1"][class$=*-Cls"]{}

So I want to know, How we can just check starting and ending of the class name and not the entire string?

Upvotes: 13

Views: 17186

Answers (1)

Temani Afif
Temani Afif

Reputation: 272900

Basically we can have 4 situations:

Having only the needed class:

<div class="Nam-StdCss-*-Cls"></div>

Having the needed class at the start

<div class="Nam-StdCss-*-Cls ... more-class"></div>

Having the needed class at the end

<div class="more-class ... Nam-StdCss-*-Cls"></div>

Having the needed class in the middle

<div class="more-class ... Nam-StdCss-*-Cls ... more-class"></div>

You can write a selector for each one like below:

[class^="Nam-"][class*="StdCss-"][class$="-Cls"]{
  color:red;
}
/*note the space after the class name---------v*/
[class^="Nam-"][class*="StdCss-"][class*="-Cls "]{
  color:blue;
}
/*       v---note the space before the class name*/
[class*=" Nam-"][class*="StdCss-"][class$="-Cls"]{
  color:green;
}
/*       v------space before and after---------v */
[class*=" Nam-"][class*="StdCss-"][class*="-Cls "]{
  color:purple;
}
<div class="Nam-StdCss-Cls">aaa</div>
<div class="Nam-StdCss-anything-Cls">aaa</div>
<div class="Nam-StdCss-Cls ... more-class">bbb</div>
<div class="Nam-StdCss-other-Cls more-class ...">bbb</div>
<div class="more-class ... Nam-StdCss-Cls">ccc</div>
<div class="more-class ... Nam-StdCss-radius-Cls">ccc</div>
<div class="more-class ... Nam-StdCss-Cls ... more-class">ddd</div>
<div class="more-class ... Nam-StdCss-radius-Cls ... more-class">ddd</div>
<br>
<div class="more-class  more-class">not !!</div>
<div class="more-class Nam-StdCss  more-class">not !!</div>
<div class="Nam-StdCss  more-class">not !!</div>

You should pay attention as this may target non needed element in some particular cases which is due to the fact that the order doesn't matter for classes.

[class^="Nam-"][class*="StdCss-"][class$="-Cls"]{
  color:red;
}
[class^="Nam-"][class*="StdCss-"][class*="-Cls "]{
  color:blue;
}
[class*=" Nam-"][class*="StdCss-"][class$="-Cls"]{
  color:green;
}
[class*=" Nam-"][class*="StdCss-"][class*="-Cls "]{
  color:purple;
}
<div class="Nam- StdCss- -Cls">aaa</div>

<div class="StdCss- Nam- -Cls">aaa</div>

<div class="-Cls StdCss- Nam-">aaa</div>

Upvotes: 21

Related Questions