Js 特效案例-移动的盒子

366 阅读1分钟

这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战

今天分享一句看到的清醒文案:“人不能太闲,闲久了,努力一下就以为自己在拼命”,这不就是我嘛,这不就是你嘛!!!

好了进入正题,这篇文章利用javascript实现盒子往返移动的特效,继续往下看吧。

一、HTML布局

实现设计好相关需要的区域,html布局如下:

1、盒子和盒子移动区域

2、开始移动和停止移动按钮区域

布局核心html代码如下:

    <div class="movebox">
      <div class="box">
        <div class="content"></div>
      </div>
      <div class="btn">
        <button class="start">开始移动</button>
        <button class="stop">停止移动</button>
      </div>
    </div>

二、CSS样式

因为主要是为了练习一下javascript的代码,html布局的样式信息怎么方便怎么来,样式如下:

image.png

加完样式信息后的布局如下图:

image.png

三、Javascript特效

1、获取相关标签对象:开始移动按钮对象,停止移动按钮对象,移动的盒子div标签对象,盒子移动区域标签对象。

let startBtn = document.getElementsByClassName('start')[0];
let stopBtn = document.getElementsByClassName('stop')[0];
let moveBox = document.getElementsByClassName('content')[0];
let box = document.getElementsByClassName('box')[0];

2、设置相关参数机器2默认值或初始值:盒子移动的速度、定时器、盒子移动的像素。

let moveSpeed = 10;
let timer = null;
let num = 0;

3、为开始移动按钮标签对象设置鼠标响应事件。 点击该按钮时,盒子开始时以设置的movespeed速度左右移动,即盒子到达边界时会往反方向移动。

startBtn.addEventListener('click', () => {
  if (!timer) {
    timer = setInterval(() => {
      if (num >= box.offsetWidth - moveBox.offsetWidth || num < 0) {
        moveSpeed = -moveSpeed;
      }
      num += moveSpeed;
      moveBox.style.left = num + 'px';
    }, 100);
  }
});

4、为开始移动按钮标签对象设置鼠标响应事件。 点击该按钮时,清空定时器,使盒子不再移动。

stopBtn.addEventListener('click', () => {
  clearInterval(timer);
  timer = null;
});

至此,盒子移动特效就完成啦!撒花,嘻嘻嘻★,°:.☆( ̄▽ ̄)/$:  .°★ 。

B站视频网址:www.bilibili.com/video/BV1Yb…