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>
相关推荐
wuxia211824 分钟前
微信小程序单击元素切换元素的显示和隐藏
javascript·微信小程序·setdata
sulikey1 小时前
个人Linux操作系统学习笔记6 - 操作系统与进程初识
linux·笔记·学习·操作系统·进程
一起学开源1 小时前
一文读懂 ReAct 范式:让 AI Agent 真正学会“思考+行动“
java·javascript·react.js·ecmascript·react·alibaba·智能体开发
unicorn311 小时前
学习学习学习
学习
XGeFei2 小时前
【Fastapi学习笔记(3)】——资源的层级关系、安全性-幂等性、Field、工厂函数
笔记·学习·fastapi
游九尘3 小时前
JavaScript 实现三段式版本号对比函数(app升级用)
javascript·uni-app
zhiSiBuYu05173 小时前
Claude-Code 新手极速上手指南
javascript·node.js
星恒随风3 小时前
Python 基础语法详解(一):从表达式、变量到数据类型
开发语言·笔记·python·学习
2501_916007473 小时前
前端开发常用软件与工具全面指南
android·ios·小程序·https·uni-app·iphone·webview
罗超驿4 小时前
18.Web API 实战:元素与表单属性的获取和修改
开发语言·前端·javascript