1. 程式人生 > 其它 >引用JavaScript html css 實現圓的碰撞

引用JavaScript html css 實現圓的碰撞

我們要實現的效果是當紅球碰到黃球時,黃球變黑色。

第一:先通過html 和頭部css實現兩個球,一個是紅球,一個是黃球。

程式碼效果如下:

<style>
        #div1 {
          width: 100px;
          height: 100px;
          background: red;
          position: absolute;
          left:400px;
          top: 50px;
          border-radius: 50%;
        }
        #div2{
          width
: 100px; height: 100px; background: yellow; position: absolute; left: 500px; top: 200px; border-radius: 50%; } </style> </head> <body> <div id="div1"></div> <div id="div2"></div> </body>

第二:通過JavaScript實現效果。

1.定義一下div1 與div2

 var div1 = document.getElementById('div1')
  const div2=document.getElementById('div2')

2.定義一個當滑鼠按下與不點選紅球所能實現的函式。

div1.onmousedown = function (event) {//點選時實現的效果

document.onmouseup=function(){//不點選時的效果 document.onmousemove=null; };

}

3.在函式內實現點選移動紅球顯示紅球相對於黃球當前的top left 和半徑的值

 console.log(event.clientX);
    console.log(div1.offsetLeft); 
    var chaX = event.clientX - div1.offsetLeft;
    var chaY = event.clientY - div1.offsetTop;
    document.onmousemove = function (event) {
      div1.style.left = event.clientX - chaX + "px";
      div1.style.top = event.clientY - chaY + "px";
      console.log(div1.offsetWidth / 2, div2.offsetWidth / 2, "半徑");
      console.log(div2.offsetLeft - div1.offsetLeft, "left");
      console.log(div2.offsetTop - div1.offsetTop, "top");}

4.通過if語句實現如果紅球碰到黃球,黃球變黑要實現的效果。

if (
        (div1.offsetWidth / 2 + div2.offsetWidth / 2) *
          (div1.offsetWidth / 2 + div2.offsetWidth / 2) >
        (div2.offsetLeft - div1.offsetLeft) *
          (div2.offsetLeft - div1.offsetLeft) +
          (div2.offsetTop - div1.offsetTop) * (div2.offsetTop - div1.offsetTop)
      ) {
        div2.style.background = "black";
      } else {
        div2.style.background = "";
      }

最終如下圖: