【前端】js 在浏览器窗口飘来飘去的div

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bw_yyziq/article/details/84729943

实现以下功能:

1.div自动飘来飘去 + 触及窗口边界反弹

基本思想就是在window.onload方法内使用setInterval()函数,用:

var windowWidth = window.innerWidth;

var windowHeight = window.innerHeight;

获取当前的窗口大小。

此部分js代码如下:

//调用下面的飘动方法,此句写在window.onload()中
var interval = setInterval("move()", 18);
  //move方法的具体实现
  var x_dir = 1;
  var y_dir = 1;
  var speed = 1;
  var secret = document.getElementById("secret");

  function move() {

    // console.log(window.innerWidth + "x" + window.innerHeight);
    var windowWidth = window.innerWidth;
    var windowHeight = window.innerHeight;
    // console.log(secret.style.left + "x" + secret.style.top);

    //此时向右
    if (x_dir == 1) {

      //即将撞墙
      if (Number(secret.style.left.replace("px", "")) + speed > windowWidth - 100) {
        secret.style.left = windowWidth - 100 + "px";
        x_dir = 0;
      }
      //没撞墙
      else {
        secret.style.left = Number(secret.style.left.replace("px", "")) + speed + "px";
      }
    }
    //此时向左
    else {
      //即将撞墙
      if (Number(secret.style.left.replace("px", "")) - speed < 0) {
        secret.style.left = "0px";
        x_dir = 1;
      }
      //没撞墙
      else {
        secret.style.left = Number(secret.style.left.replace("px", "")) - speed + "px";
      }
    }

    //此时向下
    if (y_dir == 1) {
      //即将撞墙
      if (Number(secret.style.top.replace("px", "")) + speed > windowHeight - 100) {
        secret.style.top = windowHeight - 100 + "px";
        y_dir = 0;
      }
      //没撞墙
      else {
        secret.style.top = Number(secret.style.top.replace("px", "")) + speed + "px";
      }
    }
    //此时向上
    else {
      //即将撞墙
      if (Number(secret.style.top.replace("px", "")) - speed < 0) {
        secret.style.top = "0px";
        y_dir = 1;
      }
      //没撞墙
      else {
        secret.style.top = Number(secret.style.top.replace("px", "")) - speed + "px";
      }
    }
  }

2.div内背景图片轮播

  //轮播背景图
  var backImg = 1;
  function changeImage() {
    backImg + 1 > 13 ? backImg = 1 : backImg++;
    secret.style.backgroundImage = "url('./static/" + backImg + ".jpg')";
    console.log("url('./static/" + backImg + ".jpg')");
  }

3.轮播图式样

效果图:

  #secret {
    /*fixed使位置不随着窗口滚动而变化*/
    position: fixed;
    background-color: #40a0ff00;
    /*border-radius切出圆*/
    border-radius: 50px;
    height: 100px;
    width: 100px;
    left: 0px;
    top: 0px;
    /*浮于最上层*/
    z-index: 10000;
    /*背景图片占满div*/
    background-image: url("./static/1.jpg");
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    /*阴影*/
    box-shadow: -20px 20px 10px #88888846;
    cursor:pointer;
  }

4.鼠标悬停停止移动,同时停止轮播

    var interval = setInterval("move()", 18);
    var interval_img = setInterval("changeImage()", 5000);

    document.getElementById("secret").onmouseover = function () {
      clearInterval(interval);
      clearInterval(interval_img);
    }

    document.getElementById("secret").onmouseout = function () {
      interval = setInterval("move()", 18);
      interval_img = setInterval("changeImage()", 5000);
    }

以上。

猜你喜欢

转载自blog.csdn.net/bw_yyziq/article/details/84729943
今日推荐