You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3中::v-deep已废弃,如何定义组件基础样式?

Vue3 Scoped样式下无需父类名设置组件基础样式的解决方案

方法1:直接使用全局选择器(Scoped内)

在scoped样式中直接用*选择器,会自动作用于当前组件内的所有元素(不会污染全局,因为scoped会给元素添加专属属性):

<style lang="less" scoped>
* {
  font-size: 16px;
  color: #333;
  // 其他基础样式
}
</style>

方法2:使用:scope选择器明确作用域

:scope代表当前组件的根作用域,用它配合后代选择器,可以精准作用于组件内所有元素,语义更清晰:

<style lang="less" scoped>
:scope * {
  font-size: 16px;
  line-height: 1.5;
}
</style>

方法3:带选择器的::v-deep(适用于需要穿透到子组件的场景)

如果你的基础样式需要影响组件内部的子组件,可使用Vue3推荐的带参数::v-deep写法(替代废弃的无参数用法):

<style lang="less" scoped>
::v-deep * {
  font-size: 16px;
}
</style>

注:如果仅设置当前组件自身元素的样式,前两种方法更合适,无需使用::v-deep。

关键说明

原来的无参数::v-deep写法在Vue3中已被废弃,必须搭配具体选择器使用。而针对组件自身的基础样式,其实不需要依赖::v-deep——scoped样式本身会限制作用域在当前组件内,直接使用普通选择器即可生效。

内容的提问来源于stack exchange,提问作者Zelter Ady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 16:55:04