uni-app nvue中swiper在子组件里宽高不生效 bug报告 vue3中出现问题 vue2.0及在page里面写宽高正常
uni-app nvue中swiper在子组件里宽高不生效 bug报告 vue3中出现问题 vue2.0及在page里面写宽高正常
| 项目信息 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Mac |
| PC开发环境操作系统版本号 | 14.4 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 4.24 |
| 手机系统 | 全部 |
| 手机厂商 | 华为 |
| 页面类型 | nvue |
| vue版本 | vue3 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
测试过的手机:
- 华为mate20pro
- 苹果15plus
操作步骤:
- 在子组件里面写宽高样式无效 总是定值
预期结果:
- 可以改变宽高
实际结果:
- 不能
bug描述:
- 迁移到vue3.0中 ,发现 nvue中swiper在子组件里面写宽高不生效 总是定值 在vue2.0和page里面写是可以的 demo在附件
更多关于uni-app nvue中swiper在子组件里宽高不生效 bug报告 vue3中出现问题 vue2.0及在page里面写宽高正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好,可以详细说一下,你代码的区别是什么吗?在哪里不生效?
更多关于uni-app nvue中swiper在子组件里宽高不生效 bug报告 vue3中出现问题 vue2.0及在page里面写宽高正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
代码一模一样的 但是在vue中和nvue中显示不一样 vue3.0中在子组件使用swiper 然后在vue和nvue界面中使用 但是在nvue中swiper的高度永远是定值 上图红色是swiper 这个只在vue3.0中且是子组件且nvue才有 vue2.0中都是好的
回复 海角: 我们会检查是什么原因导致的,暂时你把高度设置为swiper的高度可以满足你的需求吗?
回复 DCloud_UNI_yuhe: 现在swiper 不论设置多大的高度 都无效 class写的样式无效 我发现了一个解决办法 就是class写的属性都无效 但是:style="{‘height’;’80rpx}"这种就可以了
回复 海角: 好的,感谢反馈
在 uni-app 中使用 nvue 页面时,确实可能会遇到一些组件样式不生效的问题,尤其是像 swiper 这样的组件在子组件中的宽高设置。这通常是由于 nvue 使用了 Weex 渲染引擎,与 Vue 渲染机制有所不同,导致一些 CSS 样式表现不一致。
以下是一个可能的解决方案,通过代码示例展示如何在 nvue 子组件中正确设置 swiper 的宽高。
父组件 (index.nvue)
<template>
<div>
<child-swiper :height="swiperHeight"></child-swiper>
</div>
</template>
<script>
import ChildSwiper from './components/ChildSwiper.nvue';
export default {
components: {
ChildSwiper
},
data() {
return {
swiperHeight: '300px' // 设置swiper的高度
};
}
};
</script>
<style>
/* nvue样式 */
</style>
子组件 (ChildSwiper.nvue)
<template>
<swiper :style="{height: swiperHeight}">
<swiper-item v-for="(item, index) in items" :key="index">
<div class="swiper-content">
{{ item }}
</div>
</swiper-item>
</swiper>
</template>
<script>
export default {
props: {
height: {
type: String,
default: '100px' // 默认高度
}
},
computed: {
swiperHeight() {
return this.height;
}
},
data() {
return {
items: ['Slide 1', 'Slide 2', 'Slide 3']
};
}
};
</script>
<style>
.swiper-content {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
background-color: #f0f0f0;
}
</style>
注意事项
-
样式传递:在
nvue中,直接通过style属性绑定动态样式可能不如 Vue 页面灵活,因此我们通过props传递高度值,并在子组件中使用计算属性来接收。 -
默认样式:为
swiper设置一个默认高度,以防父组件未传递高度值导致样式问题。 -
使用
nvue样式:确保在nvue页面中使用的是 Weex 支持的样式语法,避免使用 Vue 页面中的某些 CSS 特性。
通过上述方法,我们可以在 nvue 子组件中正确地设置 swiper 的宽高,从而避免样式不生效的问题。如果问题依然存在,建议检查 uni-app 和相关依赖的版本,确保使用的是最新稳定版本。


