1. 程式人生 > >【前端】js 在瀏覽器視窗飄來飄去的div

【前端】js 在瀏覽器視窗飄來飄去的div

實現以下功能:

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);
    }

以上。