近期笔者使用Vue3 + TS写项目的时候,使用深度选择器发现如下提示
[@vue/compiler-sfc] the >>> and /deep/ combinators have been deprecated. Use :deep() instead.
一、深度选择器淘汰
>>>
/deep/
和如下的写法在vue3.x中被淘汰了
<style lang="less" scoped>
/deep/ .ant-table-tbody > tr > td,
/deep/ .ant-table-thead > tr > th {
vertical-align: middle !important;
}
::v-deep .ant-table-tbody > tr > td,
::v-deep .ant-table-thead > tr > th {
vertical-align: middle !important;
}
:deep .ant-table-tbody > tr > td,
:deep .ant-table-thead > tr > th {
vertical-align: middle !important;
}
</style>
二. 解决办法
以下四种写法均不会报出警告。
<style lang="less" scoped>
// 第一种
:v-deep .ant-table-tbody > tr > td,
:v-deep .ant-table-thead > tr > th {
vertical-align: middle !important;
}
// 第二种
::v-deep(.ant-table-tbody > tr > td),
::v-deep(.ant-table-thead > tr > th) {
vertical-align: middle !important;
}
// 第三种
:v-deep(.ant-table-tbody > tr > td),
:v-deep(.ant-table-thead > tr > th) {
vertical-align: middle !important;
}
// 第四种
:deep(.ant-table-tbody > tr > td),
:deep(.ant-table-thead > tr > th) {
vertical-align: middle !important;
}
</style>
但是使用了 :deep () 之后发现部分IDE工具会报出如下错误
unknown pseudo selector ‘deep’