uniapp学习6,滚动字幕播报


setting.vue

html 复制代码
<template>
  <view class="container">
    <view class="box">
      <text class="title">滚动字幕设置</text>

      <view class="item">
        <text>字幕内容</text>
        <textarea v-model="text" placeholder="请输入滚动文字"></textarea>
      </view>

      <view class="item">
        <text>背景颜色</text>
        <input v-model="bgColor" type="text" placeholder="默认黑色" />
      </view>

      <view class="item">
        <text>字体颜色</text>
        <input v-model="color" type="text" placeholder="默认红色" />
      </view>
	  
      <!-- 加了字体大小设置 -->
      <view class="item">
        <text>字体大小(默认48rpx)</text>
        <input v-model="fontSize" type="text" placeholder="例如:48rpx、60rpx" />
      </view>

      <button class="btn" @click="start">开始运行</button>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      text: '欢迎使用滚动字幕播报',
      bgColor: '#000',
      color: '#ff0000',
	  fontSize: '60rpx' // 默认大小
    }
  },
  methods: {
    start() {
      if (!this.text) return uni.showToast({ title: '请输入内容' })
      uni.navigateTo({
        url: `/pages/scroll/player?text=${this.text}&bg=${this.bgColor}&color=${this.color}&fontSize=${this.fontSize}`
      })
    }
  }
}
</script>

<style scoped>
.container {
  padding: 30rpx;
  background: #f5f5f5;
  min-height: 100vh;
}
.box {
  background: #fff;
  padding: 30rpx;
  border-radius: 16rpx;
}
.title {
  font-size: 36rpx;
  font-weight: bold;
  margin-bottom: 30rpx;
  display: block;
  text-align: center;
}
.item {
  margin-bottom: 30rpx;
}
.item text {
  font-size: 28rpx;
  margin-bottom: 10rpx;
  display: block;
}
input, textarea {
  border: 1px solid #ddd;
  border-radius: 8rpx;
  padding: 20rpx;
  font-size: 28rpx;
}
.btn {
  background: #42b983;
  color: #fff;
  border-radius: 10rpx;
  padding: 20rpx;
}
</style>

player.vue

html 复制代码
<template>
  <view
    class="player"
    :style="{ background: bgColor }"
    @dblclick="togglePause"
  >
    <!-- 滚动文字 -->
    <view
      v-if="showText"
      class="text-wrap"
      :style="{ top: `${top}px`, color: color,fontSize: fontSize  }"
    >
      {{ text }}
    </view>

    <!-- 无边框透明返回按钮 -->
    <view class="back-btn" @click="goBack">返回</view>
  </view>
</template>

<script>
export default {
  onLoad(options) {
    this.text = options.text || '欢迎'
    this.bgColor = options.bg || '#000'
    this.color = options.color || '#ff0000'
	this.fontSize = options.fontSize || '60rpx' // 接收字体大小
    this.startScroll()
  },
  onUnload() {
    clearInterval(this.timer)
  },
  data() {
    return {
      text: '',
      bgColor: '',
      color: '',
      top: 0,
      showText: true,
      paused: false,
      timer: null,
      speed: 1.5
    }
  },
  methods: {
    startScroll() {
      const screenHeight = uni.getSystemInfoSync().windowHeight
      this.top = screenHeight

      this.timer = setInterval(() => {
        if (this.paused) return

        this.top -= this.speed
        const end = -200

        if (this.top <= end) {
          this.showText = false
          clearInterval(this.timer)

          setTimeout(() => {
            this.showText = true
            this.startScroll()
          }, 2000)
        }
      }, 10)
    },
    togglePause() {
      this.paused = !this.paused
    },
    goBack() {
      uni.navigateBack()
    }
  }
}
</script>

<style scoped>
.player {
  width: 100vw;
  height: 100vh;
  position: relative;
  overflow: hidden;
}
.text-wrap {
  position: absolute;
  left: 50%;
  transform: translateX(-50%) rotate(90deg);
  white-space: nowrap;
  font-size: 48rpx;
  font-weight: bold;
}
.back-btn {
  position: fixed;
  right: 20rpx;
  bottom: 20rpx;
  font-size: 24rpx;
  color: rgba(255,255,255,0.3);
  padding: 10rpx;
}
</style>
相关推荐
幸运小猿8 分钟前
模拟慢上传-处理超时重试image 丢失线上问题
前端·javascript·html
视觉小萌新27 分钟前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
速易达网络3 小时前
ECharts 图表制作完全指南:从零到可视化实战
前端·javascript·echarts
paopaokaka_luck3 小时前
灾害应急物资管理系统(AI应急助手、Echarts可视化数据看板、捐赠入库联动、 物资全流程管理、库存变动追溯、灾情资讯与互动反馈、物资发放公示)
java·前端·javascript·spring boot·mysql·tomcat·echarts
kyriewen3 小时前
我验了 7 种 sticky 失效说法:3 种根本不成立
前端·javascript·程序员
yyyang883 小时前
蓝牙系统整体架构详解
学习·信息与通信
Linux-lucky4 小时前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
ModyQyW5 小时前
vite-plugin-uni-manifest 0.7:在 uni-app 读取之前生成
前端·uni-app
我命由我123455 小时前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
Momo__6 小时前
你写的 import 重试,从来没生效过
前端·javascript·typescript