sass:selector
- Sass de Dart
- since 1.23.0
- LibSass
- ✗
- Sass de Ruby
- ✗
Atualmente apenas a Sass de Dart suporta carregar módulos embutidos com a @use
. Os utilizadores de outras implementações devem chamar as funções usando os seus nomes globais.
Valores de SeletorValores de Seletor permalink
As funções neste módulo inspecionam e manipulam os seletores. Sempre que retornam um seletor, é sempre uma lista separada por vírgula (a lista de seletor) que contém listas separadas por espaço (os seletores complexos) que contém sequências de caracteres sem aspas (os seletores compostos). Por exemplo, o seletor .main aside:hover, .sidebar p
seria retornado como:
@debug ((unquote(".main") unquote("aside:hover")),
(unquote(".sidebar") unquote("p")));
// .main aside:hover, .sidebar p
Os argumentos de seletor para estas funções podem estar no mesmo formato, mas também podem apenas ser sequências de caracteres normais (com aspas ou sem aspas), ou uma combinação. Por exemplo, ".main aside:hover, .sidebar p"
é um argumento de seletor válido.
selector.is-superselector($super, $sub)
is-superselector($super, $sub) //=> boolean
Retorna verdadeiro se o seletor $super
corresponder todos os elementos que o seletor $sub
corresponder.
Continua a retornar verdadeiro mesmo se $super
corresponder mais elementos do que $sub
.
Os seletores $super
e $sub
podem conter seletores de espaço reservado, mas não seletores de pai:
SCSS Syntax
@debug selector.is-superselector("a", "a.disabled"); // true
@debug selector.is-superselector("a.disabled", "a"); // false
@debug selector.is-superselector("a", "sidebar a"); // true
@debug selector.is-superselector("sidebar a", "a"); // false
@debug selector.is-superselector("a", "a"); // true
Sass Syntax
@debug selector.is-superselector("a", "a.disabled") // true
@debug selector.is-superselector("a.disabled", "a") // false
@debug selector.is-superselector("a", "sidebar a") // true
@debug selector.is-superselector("sidebar a", "a") // false
@debug selector.is-superselector("a", "a") // true
selector.append($selectors...)
selector-append($selectors...) //=> selector
Combina $selectors
sem os combinadores de descendente — que está, sem espaço em branco entre eles.
Se qualquer seletor em $selectors
for uma lista de seletor, cada seletor complexo é combinado separadamente.
O $selectors
pode conter seletores de espaço reservado, mas não seletores de pai.
Consulte também selector.nest()
.
SCSS Syntax
@debug selector.append("a", ".disabled"); // a.disabled
@debug selector.append(".accordion", "__copy"); // .accordion__copy
@debug selector.append(".accordion", "__copy, __image");
// .accordion__copy, .accordion__image
Sass Syntax
@debug selector.append("a", ".disabled") // a.disabled
@debug selector.append(".accordion", "__copy") // .accordion__copy
@debug selector.append(".accordion", "__copy, __image")
// .accordion__copy, .accordion__image
selector.extend($selector, $extendee, $extender)
selector-extend($selector, $extendee, $extender) //=> selector
Estende $selector
de acordo com a [regra @extend
].
Retorna uma cópia de $seletor
modificado com a seguinte regra @extend
:
#{$extender} {
@extend #{$extendee};
}
Em outras palavras, substitui todas as instâncias de $extendee
no $selector
com $extendee, $extender
. Se $selector
não contém $extendee
, retorna-o como está.
Os seletores $selector
, $extendee
, e $extender
podem conter seletores de espaço reservado , mas não seletores de pai.
Consulte também selector.replace()
.
SCSS Syntax
@debug selector.extend("a.disabled", "a", ".link"); // a.disabled, .link.disabled
@debug selector.extend("a.disabled", "h1", "h2"); // a.disabled
@debug selector.extend(".guide .info", ".info", ".content nav.sidebar");
// .guide .info, .guide .content nav.sidebar, .content .guide nav.sidebar
Sass Syntax
@debug selector.extend("a.disabled", "a", ".link") // a.disabled, .link.disabled
@debug selector.extend("a.disabled", "h1", "h2") // a.disabled
@debug selector.extend(".guide .info", ".info", ".content nav.sidebar")
// .guide .info, .guide .content nav.sidebar, .content .guide nav.sidebar
selector.nest($selectors...)
selector-nest($selectors...) //=> selector
Combina $selectors
como se estivessem encaixados dentro dum do outro na folha de estilo.
O $selectors
pode conter seletores de espaço reservado. Ao contrário de outras funções de seletor, todas elas exceto a primeira também podem conter seletores de pai.
Consulte também selector.append()
.
SCSS Syntax
@debug selector.nest("ul", "li"); // ul li
@debug selector.nest(".alert, .warning", "p"); // .alert p, .warning p
@debug selector.nest(".alert", "&:hover"); // .alert:hover
@debug selector.nest(".accordion", "&__copy"); // .accordion__copy
Sass Syntax
@debug selector.nest("ul", "li") // ul li
@debug selector.nest(".alert, .warning", "p") // .alert p, .warning p
@debug selector.nest(".alert", "&:hover") // .alert:hover
@debug selector.nest(".accordion", "&__copy") // .accordion__copy
selector.parse($selector)
selector-parse($selector) //=> selector
Retorna $selector
no formato do valor do seletor:
SCSS Syntax
@debug selector.parse(".main aside:hover, .sidebar p");
// ((unquote(".main") unquote("aside:hover")),
// (unquote(".sidebar") unquote("p")))
Sass Syntax
@debug selector.parse(".main aside:hover, .sidebar p")
// ((unquote(".main") unquote("aside:hover")),
// (unquote(".sidebar") unquote("p")))
selector.replace($selector, $original, $replacement)
selector-replace($selector, $original, $replacement) //=> selector
Retorna uma cópia de $selector
com todas as instâncias de $original
substituídas pelo $replacement
.
Isto usa a unificação inteligente da regra @extend
para garantir que $replacement
é integrado de maneira transparente ao $selector
. Se $selector
não contiver $original
, retorna-o como está.
Os seletores $selector
, $original
, e $replacement
podem conter seletores de espaço reservado, mas nao seletores de pai.
Consulte também selector.extend()
.
SCSS Syntax
@debug selector.replace("a.disabled", "a", ".link"); // .link.disabled
@debug selector.replace("a.disabled", "h1", "h2"); // a.disabled
@debug selector.replace(".guide .info", ".info", ".content nav.sidebar");
// .guide .content nav.sidebar, .content .guide nav.sidebar
Sass Syntax
@debug selector.replace("a.disabled", "a", ".link") // .link.disabled
@debug selector.replace("a.disabled", "h1", "h2") // a.disabled
@debug selector.replace(".guide .info", ".info", ".content nav.sidebar")
// .guide .content nav.sidebar, .content .guide nav.sidebar
selector.unify($selector1, $selector2)
selector-unify($selector1, $selector2) //=> selector | null
Retorna um seletor que corresponde apenas os elementos correspondidos por ambos $selector1
e $selector2
.
Retorna null
se $selector1
e $selector2
não correspondem nenhum dos mesmos elementos, ou se não existir seletor que pode expressar suas sobreposições.
Tal como os seletores gerados pela regra @extend
, o seletor retornado não dá garantia de corresponder todos os elementos correspondidos por ambos $selector1
e $selector2
se forem ambos seletores complexos:
SCSS Syntax
@debug selector.unify("a", ".disabled"); // a.disabled
@debug selector.unify("a.disabled", "a.outgoing"); // a.disabled.outgoing
@debug selector.unify("a", "h1"); // null
@debug selector.unify(".warning a", "main a"); // .warning main a, main .warning a
Sass Syntax
@debug selector.unify("a", ".disabled") // a.disabled
@debug selector.unify("a.disabled", "a.outgoing") // a.disabled.outgoing
@debug selector.unify("a", "h1") // null
@debug selector.unify(".warning a", "main a") // .warning main a, main .warning a
selector.simple-selectors($selector)
simple-selectors($selector) //=> list
Retorna uma lista de seletores simples no $selector
.
O $seletor
deve ser uma única sequência de caracteres que contém um seletor composto. Isto significa que não pode conter combinadores (incluindo espaços) ou vírgulas.
A lista retornada é separada por vírgula, e os seletores simples são sequências de caracteres sem aspas:
SCSS Syntax
@debug selector.simple-selectors("a.disabled"); // a, .disabled
@debug selector.simple-selectors("main.blog:after"); // main, .blog, :after
Sass Syntax
@debug selector.simple-selectors("a.disabled") // a, .disabled
@debug selector.simple-selectors("main.blog:after") // main, .blog, :after