【uniapp小程序样式穿透】

有时候用样式穿透的时候h5是好好的,但是到了小程序这里就会发现没有效果,加上这句话就行了
 

<template>
  <view class="wai">
    <u-popup :show="isShow" :round="10" mode="bottom">
      <view class="popup">
        <text>人生若只如初见,何事秋风悲画扇 {{ isShow }}</text>
      </view>
    </u-popup>
  </view>
</template>

<script>
export default {
  options: { styleIsolation: 'shared' }, //加上这句小程序样式穿透也会有效果
  props: ['isShow']
};
</script>

<style scoped lang="scss">
::v-deep .u-popup__content {
  margin: 0 20rpx;
}
.popup {
  height: 500rpx;
}
</style>

效果图

### 如何在 UniApp 开发的微信小程序中实现样式穿透UniApp 的微信小程序开发过程中,如果需要对子组件内部的样式进行修改,则需要用到深度作用选择器 `::v-deep` 或其他类似的机制来实现样式穿透。以下是关于如何正确使用这些工具以及注意事项的内容。 #### 使用 `::v-deep` 进行样式穿透 当在一个具有 `scoped` 属性的 `<style>` 块中定义样式时,默认情况下该样式的范围仅限于当前组件及其模板中的 HTML 结构[^3]。为了使样式能够影响到子组件内的 DOM 节点,可以借助深度作用选择器 `::v-deep` 来突破这一限制。 例如,在以下场景下: ```html <template> <view class="parent"> <child-component></child-component> </view> </template> <style scoped> .parent ::v-deep .child-class { color: red; } </style> ``` 上述代码通过 `.parent ::v-deep .child-class` 定义了一个规则,使得即使目标节点位于子组件内部,也能被成功应用红色字体颜色[^2]。 需要注意的是,在某些特定环境下(比如微信小程序),仅仅依赖 `::v-deep` 可能无法正常工作。这是因为微信小程序本身对于 CSS 的处理方式存在差异,因此还需要额外注意一些细节配置。 #### 关键点分析 1. **父级类名绑定** 在实际项目里发现单纯依靠 `::v-deep` 并不足以让样式生效的情况下,尝试给外部容器添加明确的类名并将其作为前缀的一部分。如下所示: ```html <template> <view class="container"> <sub-component></sub-component> </view> </template> <style scoped> .container ::v-deep .internal-element { background-color: yellow; } </style> ``` 此处强调了`.container`的选择器声明,从而提高了匹配精度。 2. **预处理器支持情况** 如果正在使用的 CSS 预处理器像 SCSS、SASS 或 Less 等技术栈的话,那么采用 `::v-deep` 是相对稳定的做法之一。下面给出一段基于 SCSS 的实例演示: ```scss <style lang="scss" scoped> .wrapper { ::v-deep .nested-item { font-size: 18px; text-align: center; } } </style> ``` 3. **替代方案探索** 尽管官方文档建议优先选用 `::v-deep` 替代已废弃的 `/deep/`语法结构[^1],但在特殊需求面前仍可考虑调整策略或者查阅最新框架版本更新日志确认是否有新的解决方案推出。 #### 示例总结 综合以上讨论可知,在 Vue3 和 UniApp 构建的小程序环境中实施有效的样式渗透操作并非难事,只需遵循正确的书写规范即可达成目的。具体而言就是合理运用 `::v-deep` 同时兼顾平台特性带来的约束条件。 ```javascript // JavaScript 示例片段展示逻辑控制部分 export default { data() { return {}; }, }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值