NoticeBar 通告栏文字不滚动显示

原因1:组件的animationDuration属性值为'0s'导致

解决:重新initSize即可

1、布局

<block v-if="laba.remark">
      <uni-notice-bar color="#F85550"
        ref="notice"
        :text="laba.remark"
        showClose="true" 
        single="true" 
        scrollable="true"
        show-icon="true" 
        :speed='30'  
        :showGetMore="laba.id?true:false"
        @getmore="getMore" />
</block>

2、在onShow方法中判断并重置

// 坑:小喇叭不显示滚动文字
this.timeIDNotice=setTimeout(()=>{
        if (this.$refs.notice.animationDuration=='0s') {
          this.$refs.notice.initSize();
        }
},1000)

原因2:组件完全加载出来,animationDuration有值,但就是不滚动

debugger页面布局,发现通过在下面红色框中添加display:flex;文字会滚动出现

在uni-notice-bar.vue中修改样式

/* #ifndef APP-NVUE */
.uni-noticebar__content-wrapper--scrollable {
    position: relative;
    height: 18px;
    display: flex;
}
/* #endif */

还是不可用,每次在加载完毕之后,修改这个属性才会出现文字滚动,这样的话需要在加载完毕之后,再修改样式

解决:

1、保持上面的样式修改

2、在uni-notice-bar.vue中增加一个prop delay用于在组件加载完之后再设置样式

delay: {
      	// 是否延迟显示
      	type: Boolean,
      	default: false
},

3、在第17行增加样式

4、在 使用notice组件的页面的onShow方法中增加延时

 <!-- 小喇叭通知-->
    <block v-if="laba.remark">
      <uni-notice-bar color="#F85550"
        ref="notice"
        :text="laba.remark"
        showClose="true" 
        single="true" 
        scrollable="true"
        show-icon="true" 
        :speed='30'  
        :showGetMore="laba.id?true:false"
        :delay="delay"
        @getmore="getMore" />
    </block>
data() {
      return { 
        delay:false
      };
},
onShow() {

      // 坑:小喇叭不显示滚动文字
      this.timeIDNotice=setTimeout(()=>{
        if (this.$refs.notice.animationDuration=='0s') {
          this.$refs.notice.initSize();
        }
        this.delay=true
      },1000)
      
},

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要实现微信小程序自动滚动通告,可以使用小程序原生的scroll-view组件,然后通过定时器和动态修改scroll-view的scrollTop属性来实现。 具体步骤如下: 1. 在wxml文件中,使用scroll-view组件,并设置固定高度和滚动方向: ``` <scroll-view class="scroll-view" scroll-y="true" style="height: 70rpx;"> <!-- 在这里放置通告内容 --> </scroll-view> ``` 2. 在js文件中,获取scroll-view组件的节点对象,并定义一个变量用于保存当前滚动的距离: ``` Page({ data: { scrollTop: 0 }, onLoad: function () { // 获取scroll-view组件的节点对象 this.scrollView = this.selectComponent('.scroll-view') } }) ``` 3. 使用定时器,每隔一定时间修改scrollTop属性值,实现自动滚动。 ``` Page({ data: { scrollTop: 0 }, onLoad: function () { // 获取scroll-view组件的节点对象 this.scrollView = this.selectComponent('.scroll-view') // 定时器,每隔1秒滚动一次 setInterval(() => { // 滚动速度,每次滚动5px const speed = 5 // 获取当前scrollTop的值 const scrollTop = this.data.scrollTop // 计算新的scrollTop的值 const newScrollTop = scrollTop + speed // 设置新的scrollTop的值 this.setData({ scrollTop: newScrollTop }) // 如果滚动到了最底部,就回到顶部重新滚动 if (newScrollTop >= this.scrollView.scrollHeight - this.scrollView.height) { this.setData({ scrollTop: 0 }) } }, 1000) } }) ``` 这样就可以实现微信小程序自动滚动通告了。需要注意的是,scroll-view组件的高度和通告内容的高度需要根据实际情况进行调整,以确保能够正常滚动

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佛佛ง

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值