选择器
CSS 选择器规定了 CSS 规则会被应用到哪些元件上。严格来说,CSS 选择器是一个涵盖选择器、组合器、伪元素和伪类的总称。
选择器(Selectors)
类型选择器(Type selector)
CSS 类型选择器通过节点名称匹配元件。换句话说,它选择一个文件中所有给定类型的 元件。
语法
element { property declarations }
使用示例
/* 匹配所有 <input> 元件 */
input {
...
}
通过 page
来选择根节点
与 Web 不同,Lynx 里使用 page
来选择根节点,而非 body
。
类选择器(Class selector)
按照给定的 class
属性的值,选择所有匹配的元件。
语法
.className { property declarations }
使用示例
/* 匹配任何 class 属性中含有 "index" 的元件 */
.index{
...
}
多类选择器 (Multiple Class Selectors)
使用多个类名来选择元件,通过将多个类名连在一起的方法来指定一个元件必须同时包含这些类
语法
.className1.className2 { property declarations }
element.className1.className2 { property declarations }
使用示例
/* 匹配任何 input元件且同时 class 中含有 "a b" 的元件 */
input.a.b{
...
}
/* element */
<input className="a b" /> /* 被选中 */
ID 选择器(ID selector)
按照 id
属性选择一个与之匹配的元件。需要注意的是,一个文档中,每个 ID
属性都应当是唯一的。
语法
#idName { property declarations }
通配符选择器(Universal selector)
星号(*)就是一个通配选择器,它可以匹配任意类型的元件。
语法
* { property declarations }
组合器 (Combinator)
后代选择器 (descendant Combinator)
通过空格组合了两个选择器,如果第二个选择器匹配的元件具有与第一个选择器匹配的祖先(父母,父母的父母,父母的父母的父母等)元件,则它们将被选择。
语法
selector1 selector2 selector3 {
property declarations
}
使用示例
/* 匹配任何祖先满足 view.a 且自身是 b 的元件 */
view.a .b{
...
}
/* element */
<view className="a" >
<text className="b">hello</text> /*selected*/
</view>
子代组合器 (Child Combinator)
子组合器(>
)被放在两个 CSS 选择器之间。它只匹配那些被第二个选择器匹配的元件,这些元件是被第一个选择器匹配的元件的直接子元件。
语法
element1 > element2 {
property declarations
}
使用示例
/* 选择属于“a”类的 view 元件的直接子元件(text) */
view.a > text {
...
}
/* element */
<view className="a" >
<text>hello</text> /* 被选中 */
</view>
后续兄弟组合器 (Subsequent-sibling Combinator)
后续兄弟选择器(~
)将两个选择器分开,并匹配第二个选择器的所有迭代元件,位置无须紧邻于第一个元件,只须有相同的父级元件。
语法
former_element ~ target_element { property declarations }
使用示例
/* 选择 view 后续的所有 text 兄弟元件 */
view ~ text {
...
}
/* element */
<view className="a" />
<text /> /* 被选中 */
...
<text /> /* 被选中 */
紧邻兄弟组合器 (Next-sibling Combinator)
接续兄弟选择器(+
)介于两个选择器之间,当第二个元件紧跟在第一个元件之后,并且两个元件都是属于同一个父元件的子元件,则第二个元件将被选中。
语法
former_element + target_element { property declarations }
使用示例
/* view 紧邻的 text 兄弟元件被选中 */
view + text {
...
}
/* element */
<view className="a" />
<text /> /* 被选中 */
<text /> /* 未被选中 */