At the end let us think of any attr value as a string.that string is made of one string value (like attr="value") or space seprated number of values (like attr=" more and more values").we will be picking markup elements using attr selectors like so: element[attr] will select according to attr name, element[attr="value"] selects the exact value, element[attr~="value"] will select if value exists in a space seprated number of values.the selectors [attr^="value"] and [attr$="value"] will select if attr string is prefixed ^= with "value" and suffixed $ with "value".finally [attr*="value"] will select if "value" matches wether "value" was seprated or part of a one string.[attr operator i denotes thatattr value is case insensetive and something like "VALUE","value" or "VAlue" are similar.