简体中文
html
、body
、:root
等选择器。由于页面的css样式隔离,且html节点并未添加data-xxx属性,html
、:root
写在页面style内无效,只能写在App.uvue内。名称 | 示例 | Web | Android | iOS | 描述 |
---|---|---|---|---|---|
通配选择器 | * {} | 4.0 | x | x | - |
类选择器 | .class {} | 4.0 | 3.9 | 4.11 | - |
元素选择器 | [tag]{} | 4.0 | x | x | - |
ID 选择器 | #[id]{} | 4.0 | x | x | - |
属性选择器 | [attr]{} | 4.0 | x | x | - |
分组选择器 | .a, .b {} | 4.0 | 3.9 | 4.11 | - |
直接子代选择器 | .a > .b {} | 4.0 | 3.9 | 4.11 | - |
后代选择器 | .a .b {} | 4.0 | 3.9 | 4.11 | - |
一般兄弟选择器 | .a ~ .b {} | 4.0 | 3.9 | 4.11 | - |
紧邻兄弟选择器 | .a + .b {} | 4.0 | 3.9 | 4.11 | - |
伪类选择器 | :active {} | 4.0 | x | x | - |
伪元素选择器 | ::before {} | 4.0 | x | x | - |
注意
选择器声明的变化可能会导致元素重新绘制。为了减少选择器变化引起的 DOM 更新数量,当前只支持:CSS 声明的多个选择器中最后一个规则的变更对 DOM 的更新。
<template>
<div :class="{{docBody}}">
<text :class="{{rowDesc}}">描述内容</text>
</div>
</template>
<style>
.doc-body1 .row-desc1 {
color: #ff0000;
}
.doc-body1 .row-desc2 {
color: #0000ff;
}
.doc-body2 .row-desc1 {
color: #00ff00;
}
</style>
<script lang="uts">
export default {
data() {
return {
rowDesc: 'row-desc1',
docBody: 'doc-body1'
}
}
}
</script>
以上代码示例,当我们把 rowDesc
变量从 row-desc1
变为 row-desc2
时,会更新 text
节点样式,但是如果把 docBody
变量从 doc-body1
变为 doc-body2
,是不会更新 text
节点样式的。
因为 doc-body
不是最后一个选择器,非末尾的选择器变更有可能影响很多 DOM 元素,从而影响到渲染性能。
注意
App端相邻选择器暂不支持动态新增或删减节点,为了优化性能减少一些重新渲染工作,示例 https://issues.dcloud.net.cn/pages/issues/detail?id=1452