Reputation: 5340
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
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