CSS/JS文字滚动

1、 文字上下滚动(vue)

<template>
  <div class="scroll-temp">
    <img :src="noticePng" alt="" class="scroll-img">
    <div ref="scroll" class="scroll-box">
      <div v-for="item in scrollList" :key="item.id" class="scroll-content">
        {{ item.title }}
      </div>
    </div>
  </div>
</template>

<script>
// 引入滚动提示图片
import noticePng from '@/assets/images/notice.png'
export default {
  props: {
    scrollData: { // 滚动的数据
      type: Array,
      default: () => {
        return []
      }
    }
  },
  data() {
    return {
      noticePng, // 滚动图片
      scrollArea: '', // 滚动的区域
      speed: 10, // 滚动的速度
      timer: null,
      timeObj: null,
      delay: 3000, // 停留的时间
      contentHeight: '',
      scrollList: [] // 滚动的数据
    }
  },
  watch: {
    scrollData: {
      handler(val) {
        this.scrollList = JSON.parse(JSON.stringify(val))
        this.initScroll()
      },
      immediate: true,
      deep: true
    }
  },
  methods: {
    // 滚动初始化
    initScroll() {
      this.$nextTick(() => {
        this.scrollArea = this.$refs.scroll
        // 需要滚动的全部内容
        const content = this.scrollArea.getElementsByClassName('scroll-content')
        // 其中的一个内容高度
        this.contentHeight = content[0].offsetHeight
        // 初始的滚动距离是0
        this.scrollArea.scrollTop = 0
        // 为了无缝滚动,进行拼接
        this.scrollArea.innerHTML += this.scrollArea.innerHTML
        if (this.scrollData.length) { // 数据存在
          // 循环数据滚动
          this.timeObj = setTimeout(this.scrollStart, this.delay)
        }
      })
    },
    // 开始循环滚动
    scrollStart() {
      this.timer = setInterval(this.scroll, this.speed)
      this.scrollArea.scrollTop++
    },
    scroll() {
      // 当滚动的距离和单个内容的可见区域的高度相等时
      if (this.scrollArea.scrollTop % this.contentHeight === 0) {
        // 暂停循环
        clearInterval(this.timer)
        clearTimeout(this.timeObj)
        // 重新开始循环数据滚动
        this.timeObj = setTimeout(this.scrollStart, this.delay)
      } else {
        this.scrollArea.scrollTop++
        // 当滚动的高度大于等于 内容的全部高度时
        if (this.scrollArea.scrollTop >= this.scrollArea.scrollHeight / 2) {
          this.scrollArea.scrollTop = 0
        }
      }
    }
  }
}
</script>

<style lang="stylus" scoped>
.scroll-temp {
  overflow: hidden;
  height: 44px;
  border-radius: 4px;
  margin: 0 20px;
  padding: 12px 16px;
  background: #fff;
  font-size: 14px;
  color: #1d76f1;
  box-shadow: 0 0 6px rgba(29,118,241,0.5) inset;
  white-space: nowrap;
  display: flex;
  .scroll-img {
    display: inline-block;
    width: 16px;
    height: 16px;
    margin: 2px 10px 0 0;
  }
  .scroll-box, .scroll-content{
    height: 44px;
    overflow: hidden;
  }
}
</style>

2、 文字走马灯左右滚动(css)

html
<div class="td-style">
  <span class="td-text">内容1内容1内容1内容1内容1内容1</span>
</div>
css
<style>
	.td-style {
      width: 160px;
      height: 72px;
      overflow: hidden;
      white-space: nowrap;
      font-size: 26px;
      line-height: 72px;
    }
	.td-text {
	  display: inline-block;
	  white-space: nowrap;
	  animation: scrollLeft 3s linear infinite;
	}
	.td-text:hover {
	  animation-play-state: paused;
	}
	 /* 定义动画 */
	@keyframes scrollLeft {
	  0% {
	    transform: translateX(0);
	  }
	  100% {
	    transform: translateX(calc(-90% - 0px)); /* 加上一些额外的空白,以便滚动到最后一个元素时不会立即切换 */
	  }
	}
</style>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用CSSJavaScript来实现文字滚动效果。以下是一种简单的实现方法: HTML代码: ``` <div class="scroll-text"> <p>这是要滚动文字。</p> </div> ``` CSS代码: ``` .scroll-text { overflow: hidden; } .scroll-text p { white-space: nowrap; animation: scroll 10s linear infinite; } @keyframes scroll { 0% { transform: translateX(0%); } 100% { transform: translateX(-100%); } } ``` JavaScript代码: ``` // 如果需要停止滚动,可以调用该函数 function stopScroll() { var scrollText = document.querySelector('.scroll-text'); var scrollP = document.querySelector('.scroll-text p'); scrollText.removeChild(scrollP); scrollText.innerHTML += '<p>' + scrollP.innerText + '</p>'; } ``` 解释: - `.scroll-text` 元素的 `overflow` 属性设置为 `hidden`,表示超出它的部分会被隐藏。 - `.scroll-text p` 元素的 `white-space` 属性设置为 `nowrap`,表示它的文本不会自动换行。 - `.scroll-text p` 元素的 `animation` 属性设置了一个名为 `scroll` 的动画,它会在 10 秒内沿着 X 轴向左滚动,重复播放。 - `@keyframes` 规则定义了名为 `scroll` 的动画,它有两个关键帧。在第一帧(0%)中,元素的 `transform` 属性设置为 `translateX(0%)`,表示文本不偏移。在第二帧(100%)中,元素的 `transform` 属性设置为 `translateX(-100%)`,表示文本向左偏移 100% 的距离。 - `stopScroll` 函数会将 `.scroll-text p` 元素从 `.scroll-text` 中移除并重新添加它,这会导致动画停止。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值