js实现文字横向滚动与纵向滚动(支持手动滑动距离)

js实现横向滚动

 

1.布局

<div id="scroll_div" class="fl"> 
        <div id="scroll_begin">
            恭喜793765***获得 <span class="pad_right">50元巨人点卡奖励</span>
            恭喜793765***获得 <span class="pad_right">50元巨人点卡奖励</span>
            恭喜793765***获得 <span class="pad_right">50元巨人点卡奖励</span>
            恭喜793765***获得 <span class="pad_right">50元巨人点卡奖励</span>
            恭喜793765***获得 <span class="pad_right">50元巨人点卡奖励</span>
            恭喜793765***获得 <span class="pad_right">50元巨人点卡奖励</span>
            恭喜793765***获得 <span class="pad_right">50元巨人点卡奖励</span>
        </div> 
        <div id="scroll_end"></div>
    </div> 

2.样式

.pad_right{ padding-right:2em;}
#scroll_div {height:26px;overflow: hidden;white-space: nowrap;width:535px;margin-left:10px;}
#scroll_begin,#scroll_end {display: inline;}

3.js代码:

//文字横向滚动
      ScrollImgLeft() {
        var speed = 50;
        var MyMar = null;
        var scroll_begin = document.getElementById("scroll_begin");
        var scroll_end = document.getElementById("scroll_end");
        var scroll_div = document.getElementById("scroll_div");
        scroll_end.innerHTML = scroll_begin.innerHTML;

        function Marquee() {
          if (scroll_end.offsetWidth - scroll_div.scrollLeft <= 0)
            scroll_div.scrollLeft -= scroll_begin.offsetWidth;
          else
            scroll_div.scrollLeft++;
          // console.log(scroll_end.offsetWidth - scroll_div.scrollLeft <= 0)
        }
        MyMar = setInterval(Marquee, speed);
        scroll_div.onmousedown = function () {
          clearInterval(MyMar);
        }
        scroll_div.onmouseover = function () {
          clearInterval(MyMar);
        }
        scroll_div.onmouseout = function () {
          MyMar = setInterval(Marquee, speed);
        }
      }

ScrollImgLeft();

js实现纵向滚动

1.布局

<div class="box" id="box" @mousedown="mousedown" @mousemove="mousemove" @mouseup="mouseup">
		    <div class="text" id="text">1</div>
		    <div class="text" id="text">2</div>
		    <div class="text" id="text">3</div>
		    <div class="text" id="text">4</div>
		    <div class="text" id="text">5</div>
		    <div class="text" id="text">6</div>
		    <div class="text" id="text">7</div>
		    <div class="text" id="text">8</div>
		    <div class="text" id="text">9</div>
		    <div class="text" id="text">10</div>
		    <div class="text" id="text">11</div>
		    <div class="text" id="text">12</div>
		    <div class="text" id="text">13</div>
		    <div class="text" id="text">14</div>
		    <div class="text" id="text">15</div>
		    <div class="text" id="text">16</div>
		    <div class="text" id="text">17</div>
		    <div class="text" id="text">18</div>
		    <div class="text" id="text">19</div>
		    <div class="text" id="text">20</div>
		  </div>

2.样式

.box {
	      width: 300px;
	      height: 300px;
	      border: 2px solid skyblue;
	      overflow: hidden;
	    }
	
	    .box:hover {
	      overflow-y: auto;
	    }
	
	    .text {
	      width: 100%;
	      height: 100px;
	      border: 1px solid greenyellow;
	    }

3.js代码:

export default {
		data() {
			return {
				flag: true,
				timer: '',
				time: '',
				scrollTop: 0,
				margin: 0,
				lastPointY: 0,
				isTouch: false,
			}
		},
		onLoad() {
		},
		mounted() {
			this.onscroll()
		},
		methods: {
			onscroll(){
				const dom = document.getElementById('box')
				const scpDom = document.getElementsByClassName('text')
				  let time = null
				  console.log(dom.scrollHeight, dom.offsetHeight);
				  time = setInterval(() => {
				    dom.scrollTop++
				    if (dom.scrollTop >= dom.scrollHeight - dom.offsetHeight) {
				      console.log("111");
				      dom.scrollTop = 0
				    }
				  }, 10)
			},
			mousedown(e){
				this.isTouch = true;
				this.lastPointY = e.pageY;
				console.log('鼠标按下',e.pageY)
				clearInterval(this.timer)
			},
			mousemove(e){
				const dom = document.getElementById('box')
				if (this.isTouch) {
					this.margin = e.pageY - this.lastPointY;
					dom.scrollTop -= this.margin;
					console.log(this.margin,e.pageY);
					this.lastPointY = e.pageY;
				}
			},
			mouseup(){
				const dom = document.getElementById('box')
				clearTimeout(this.time);
				this.isTouch = false;
				console.log('鼠标离开')
				this.time = setTimeout(()=>{
					this.timer = setInterval(() => {
					  dom.scrollTop ++;
					},this.speed);
				},1000)
			}
		},
		computed: {}
	}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

韩召华

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

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

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

打赏作者

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

抵扣说明:

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

余额充值