Skip to main content

Introduction to Sass Selector Functions

Sass Selector Functions

Sass selector functions are functions that allow you to manipulate and create selectors in your Sass code.

Here are some of the most commonly used Sass selector functions:

  • selector-nest($selectors...): This function allows you to nest one or more selectors inside another selector.

As an example:

.my-class {
#{selector-nest(".inner-class", "&")} {
color: red;
}
}

This will compile to:

.my-class .inner-class {
color: red;
}
  • selector-append($selector, $suffix): This function allows you to append a string to the end of a selector.

As an example:

.my-class {
#{selector-append("&", "-suffix")} {
color: red;
}
}

This will compile to:

.my-class-suffix {
color: red;
}
  • selector-replace($selector, $original, $replacement): This function allows you to replace a substring within a selector with another string.

As an example:

.my-class {
#{selector-replace("&", "class", "replaced-class")} {
color: red;
}
}

This will compile to:

.my-replaced-class {
color: red;
}
  • selector-unify($selectors...): This function allows you to unify two or more selectors into a single selector.

As an example:

.class-one, .class-two {
#{selector-unify("&:hover", "&:focus")} {
color: red;
}
}

This will compile to:

.class-one:hover,
.class-one:focus,
.class-two:hover,
.class-two:focus {
color: red;
}
  • selector-extend($selector, $extendee): This function allows you to extend a selector with another selector.

As an example:

.my-class {
color: red;
}

.my-other-class {
#{selector-extend("&", ".my-class")} {
font-weight: bold;
}
}

This will compile to:

.my-class,
.my-other-class {
color: red;
}

.my-other-class.my-class {
font-weight: bold;
}
  • selector-parse($selector): This function allows you to parse a selector into its individual parts (such as tag name, class names, and ID).

As an example:

$selector: selector-parse(".my-class");

// Output: (
// type: null,
// class: (my-class,),
// id: null
// )
  • selector-unquote($string): This function allows you to remove the quotes from a string. This is useful when you want to use a variable as a selector.

As an example:

$selector-name: "my-selector";

.#{$selector-name} {
color: red;
}

This will compile to:

.my-selector {
color: red;
}
  • selector-append-selector($selector, $suffix): This function is similar to selector-append(), but it allows you to append a selector to the end of another selector.

As an example:

.my-class {
#{selector-append-selector("&", ".inner-class")} {
color: red;
}
}

This will compile to:

.my-class .inner-class {
color: red;
}