uni-app 小红书小程序样式隔离问题

uni-app 小红书小程序样式隔离问题

项目信息 详细信息
产品分类 uniapp/小程序/小红书
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 window10
HBuilderX类型 正式
HBuilderX版本号 4.87
第三方开发者工具版本号 2.8.1
基础库版本号 3.135.0
项目创建方式 HBuilderX

示例代码:

使用:

<ouyang />

ouyang.vue 代码:

<template>  
  <view class="ouyang">  
    123  
    <xinghua />  
  </view>  
</template>  

<script>  
import xinghua from './xinghua.vue'  

export default {  
  name: 'ouyang',  
  options: {  
    styleIsolation: 'shared'  
  },  
  components: {  
    xinghua  
  }  
}  
</script>  

<style lang="scss" scoped>  
.ouyang {  
  color: red;  
  ::v-deep {  
    .xinghua {  
      color: red;  
    }  
  }  
}  
</style>  

xinghua.vue 代码:

<template>  
  <view class="xinghua">  
    456  
  </view>  
</template>  

<script>  
export default {  
  name: 'xinghua'  
}  
</script>  

<style lang="scss" scoped>  
.xinghua {  
  color: green;  
}  
</style>  

::v-deep { .xinghua { color: red; } } 这里的代码并没有生效,而我在打包后的json里面加上 “styleIsolation”: “shared” 就能生效了

操作步骤:

使用我上门的代码示例就能复现

预期结果:

我在组件里面添加

options: {
styleIsolation: 'shared'
},

打包后会自动加到 json里面去,或者不加也行,但是起码要能够在配置了某些配置项之后,组件之间的样式可以随意更改

实际结果:

如上

bug描述:

我在组件代码里面添加

options: {
styleIsolation: 'shared'
}

但是构建之后并没有生效,不能修改到组件里面的样式。

但是我到打包后的文件里手动添加配置后,发现样式就生效了。打包的时候应该是没有将源代码里面的styleIsolation: ‘shared’ 添加到json配置里面去。


更多关于uni-app 小红书小程序样式隔离问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

该bug反馈内容基本完整,包含标题、描述、代码示例、复现步骤等要素,但缺少关键细节:未说明组件存放位置(是否在wxcomponents目录)、小红书小程序基础库版本及是否使用Vue组件而非小程序组件。
经核查知识库,styleIsolation是uni-app 3.99+新增特性,但仅明确支持微信小程序和支付宝小程序(微信小程序文档)。小红书小程序未在官方支持列表中,且知识库强调"小程序组件需放在wxcomponents等特殊目录"(manifest.json配置)。
问题本质是概念混淆:

Vue组件应通过scoped属性实现样式隔离,而非styleIsolation
styleIsolation仅适用于小程序组件,且需在pages.json全局配置
用户手动修改打包后json生效,说明其误将Vue组件当作小程序组件处理

建议解决方案:

若需修改子组件样式,Vue组件应使用::v-deep(已正确使用但受限于组件类型)
确认组件存放位置:Vue组件放components目录,小程序组件放wxcomponents目录
小程序平台需检查基础库版本是否支持该特性
参考uni-app组件规范确认配置方式

此非真正bug,属平台特性理解偏差。 内容为 AI 生成,仅供参考

更多关于uni-app 小红书小程序样式隔离问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


小红书小程序不支持 options 配置,可以使用这个帖子的插件自行添加 https://ask.dcloud.net.cn/article/42114

回复 1***@qq.com: 有啥不适用的,新建个package.json,安装一下依赖就行了,目前暂时没其他解决方案,你可以自己写脚本修改

回复 DCloud_UNI_JBB: 那后续有计划支持hbulider直接构建就能生效吗

回复 1***@qq.com: 没有,不支持的原因是小红书小程序本身就不支持配置 options,你不能拿其他小程序支持的写法去适配不支持的小程序

那个插件就可以满足你的需求了

回复 DCloud_UNI_JBB: 好滴,谢谢大佬!

在小红书小程序中,组件样式默认是相互隔离的。根据你的描述,问题在于 options: { styleIsolation: 'shared' } 在构建时没有被正确写入到生成的小程序组件 JSON 配置文件中。

原因分析:

  1. 小红书小程序(以及其他部分小程序平台)的样式隔离配置 styleIsolation 需要显式声明在组件的 JSON 配置文件中。
  2. 在 uni-app 的 Vue SFC 文件中,通过 options 设置的 styleIsolation 可能在某些版本或特定平台(如小红书小程序)的编译过程中未被正确识别和输出。

解决方案:

  1. 手动配置 JSON 文件:为需要样式共享的组件单独创建一个同名的 .json 文件。例如,为 ouyang.vue 创建 ouyang.json,内容为:
    {
      "component": true,
      "styleIsolation": "shared"
    }
回到顶部