Selects elements based on the value of the given attribute. Syntax:[attr][attr=value][attr~=value][attr|=value][attr^=value][attr$=value][attr*=value] Example:[autoplay] will match all elements that have the autoplay attribute set (to any value).
The + combinator selects adjacent siblings. This means that the second element directly follows the first, and both share the same parent. Syntax:A + B Example:h2 + p will match all <p> elements that directly follow an <h2>.
The ~ combinator selects siblings. This means that the second element follows the first (though not necessarily immediately), and both share the same parent. Syntax:A ~ B Example:p ~ span will match all <span> elements that follow a <p>.