一、说明
-
vue组件编译后,会将 template 中的每个元素加入
[data-v-xxxx]属性来确保style scoped仅本组件的元素而不会污染全局 -
横向排列不换行,如下

-
增加样式
flex-wrap: wrap;,成功换行

二、解决
1、在class前面 加入deep
- 如果你期待通过如修改其子class的样式。来影响展示效果,直接增加class是没有任何效果的
- 需要在修改指定的组件样式class前面 加入deep才可以
<style lang="scss" scoped>
/deep/ .u-checkbox-group--row{
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
</style>
2、在vue-cli3编译时,用 ::v-deep
- 在vue-cli3编译时,deep的方式会报错或者警告,我们用
::v-deep
<style lang="scss" scoped>
::v-deep .u-checkbox-group--row{
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
</style>
3、编辑前,编辑好 截图对比
- 编辑前

- 编辑后

本文介绍了在vue-cli3环境下,如何处理组件样式只作用于本组件而不污染全局的方法。通过在 scoped 样式中使用 /deep/ 或 ::v-deep 选择器,可以穿透组件的 scoped 属性,修改子组件的样式。同时,文章展示了在修改uView的Checkbox复选框样式时的具体应用,并提供了编辑前后的效果对比。这为开发者在uni-app或vue项目中更改默认组件样式提供了解决方案。
226

被折叠的 条评论
为什么被折叠?



