sass:selector
- Dart Sass
- since 1.23.0
- LibSass
- ✗
- Ruby Sass
- ✗
Only Dart Sass currently supports loading built-in modules with @use
. Users
of other implementations must call functions using their global names instead.
选择器值选择器值 permalink
此模块中的函数检查和操作选择器。每当它们返回选择器时,它总是一个逗号分隔的列表(选择器列表),其中包含空格分隔的列表(复杂选择器),这些列表又包含未加引号的字符串(复合选择器)。例如,选择器 .main aside:hover, .sidebar p
将返回为:
@debug ((unquote(".main") unquote("aside:hover")),
(unquote(".sidebar") unquote("p")));
// .main aside:hover, .sidebar p
传递给这些函数的选择器参数可以采用相同的格式,但也可以是普通字符串(带引号或不带引号),或者两者的组合。例如,".main aside:hover, .sidebar p"
是一个有效的选择器参数。
selector.is-superselector($super, $sub)
is-superselector($super, $sub) //=> boolean
返回选择器 $super
是否匹配选择器 $sub
匹配的所有元素。
即使 $super
匹配更多元素,也返回 true。
$super
和 $sub
选择器可以包含占位选择器,但不能包含父选择器。
SCSS Syntax
@use "sass:selector";
@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
@use "sass:selector"
@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
在不使用后代组合器的情况下组合 $selectors
,即不在它们之间添加空格。
如果 $selectors
中的任何选择器是选择器列表,则单独组合每个复杂选择器。
$selectors
可以包含占位选择器,但不能包含父选择器。
另请参见 selector.nest()
。
SCSS Syntax
@use "sass:selector";
@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
@use "sass:selector"
@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
使用 @extend
规则扩展 $selector
。
返回 $selector
的副本,并按照以下 @extend
规则进行修改:
#{$extender} {
@extend #{$extendee};
}
换句话说,将 $selector
中的所有 $extendee
实例替换为 $extendee, $extender
。如果 $selector
不包含 $extendee
,则按原样返回。
$selector
、$extendee
和 $extender
选择器可以包含占位选择器,但不能包含父选择器。
另请参见 selector.replace()
。
SCSS Syntax
@use "sass:selector";
@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
@use "sass:selector"
@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
将 $selectors
组合得就像它们在样式表中相互嵌套一样。
$selectors
可以包含占位选择器。与其他选择器函数不同,除第一个外的所有选择器还可以包含父选择器。
另请参见 selector.append()
。
SCSS Syntax
@use "sass:selector";
@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
@use "sass:selector"
@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
以选择器值格式返回 $selector
。
SCSS Syntax
@use "sass:selector";
@debug selector.parse(".main aside:hover, .sidebar p");
// ((unquote(".main") unquote("aside:hover")),
// (unquote(".sidebar") unquote("p")))
Sass Syntax
@use "sass:selector"
@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
返回 $selector
的副本,其中所有 $original
实例都被 $replacement
替换。
这使用 @extend
规则的智能统一来确保 $replacement
无缝地集成到 $selector
中。如果 $selector
不包含 $original
,则按原样返回。
$selector
、$original
和 $replacement
选择器可以包含占位选择器,但不能包含父选择器。
另请参见 selector.extend()
。
SCSS Syntax
@use "sass:selector";
@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
@use "sass:selector"
@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
返回仅匹配 $selector1
和 $selector2
都匹配的元素的选择器。
如果 $selector1
和 $selector2
不匹配任何相同的元素,或者无法表达它们的重叠部分,则返回 null
。
与 @extend
规则生成的选择器类似,如果 $selector1
和 $selector2
都是复杂选择器,则返回的选择器不保证匹配它们所有匹配的元素。
SCSS Syntax
@use "sass:selector";
@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
@use "sass:selector"
@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
返回 $selector
中的简单选择器列表。
The $selector
must be a single string that contains a compound selector.
This means it may not contain combinators (including spaces) or commas.
The returned list is comma-separated, and the simple selectors are unquoted strings.
SCSS Syntax
@use "sass:selector";
@debug selector.simple-selectors("a.disabled"); // a, .disabled
@debug selector.simple-selectors("main.blog:after"); // main, .blog, :after
Sass Syntax
@use "sass:selector"
@debug selector.simple-selectors("a.disabled") // a, .disabled
@debug selector.simple-selectors("main.blog:after") // main, .blog, :after