基于JavaScript實現(xiàn)粒子流動效果
這是一個HTML文件,主要包含了一些CSS樣式和JavaScript代碼,用于創(chuàng)建一個動畫效果。
在CSS部分,定義了一些基本的樣式,包括頁面的背景顏色、位置、大小等。特別的,定義了兩種球形元素(.ball_A 和 .ball_B)的樣式,以及它們的動畫效果。
在JavaScript部分,定義了一個名為Ball的類,用于創(chuàng)建球形元素,并控制它們的運動。Ball類有一些方法,如random用于生成隨機數(shù),render用于渲染球形元素,update用于更新球形元素的位置。
在頁面加載時,會調(diào)用creatBall函數(shù)創(chuàng)建一系列的球形元素,并將它們添加到頁面中。然后,調(diào)用render函數(shù),使這些球形元素按照預(yù)定的動畫效果進(jìn)行運動。
總的來說,這個HTML文件的主要功能是創(chuàng)建一個動畫效果,其中包含一系列的球形元素在頁面上進(jìn)行運動。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> body,html{ width: 100%; height: 100%; background: #222; overflow: hidden; position: relative; --m-x:51px; --m-y:51px } .playground{ position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); width: 600px; height: 300px; display: flex; justify-content: space-around; align-items: center; } .ball{ width: 100px; height: 100px; border-radius: 50%; /*border: 1px solid #FFFFFF;*/ position: relative; } .ball_A{ /*border: 1px solid #a101f6;*/ color: #FFFFFF; background: #a101f6; cursor: pointer; animation: scaleBall 0.5s forwards; } .ball_B{ /*border: 1px solid #FFFFFF;*/ color: #FFFFFF; } .ball_B1{ border: none; width: 20px; height: 20px; background:#0d84ff; transform: scale(0); left: -20px; border-radius: 10px 30px 20px 20px / 15px 10px 25px 25px; animation: transBall 0.8s 1.2s forwards; } .text{ display: inline-block; width: 100px; line-height: 100px; color: white; text-align: center; } @keyframes scaleBall { 0%{ transform: scale(1.0); } 100%{ transform: scale(1.3); background: none; /*border: 1px solid #fff;*/ } } .small-ball{ width: 10px; height: 10px; background: #0d84ff; border-radius: 50%; position: absolute; /*animation: moveBall 0.5s forwards;*/ } @keyframes transBall { 0%{ transform: scale(0); border-radius: 5px 10px 15px 5px / 8px 7px 6px 15px; } 50%{ border-radius: 10px 30px 20px 20px / 15px 10px 25px 25px; } 100%{ transform: scale(6); border-radius: 50px } } </style> </head> <body> <div class="playground"> <div class="ball ball_A"> <span class="text">A</span> </div> <div class="ball ball_B"> <span class="text">B</span> </div> </div> <div class="playground"> <div class="ball" style="opacity: 0"> <span class="text">a</span> </div> <div class="ball ball_B1"> <!-- <span class="text">B</span>--> </div> </div> <script> const playground = document.querySelector('.playground') const ctx = document.querySelector('.ball_A') const ctx_b = document.querySelector('.ball_B') const play = playground.getBoundingClientRect() const rect = ctx.getBoundingClientRect() const rect_b = ctx_b.getBoundingClientRect() const list = [] const pox = { y: rect.height, x: rect.width, bx: rect_b.left - play.left, by: rect_b.top - play.top } class Ball{ constructor(con,x,y) { this.x = x; this.y = y; this.width = con.x; this.height = con.y; this.ex = this.random(-20,con.x) this.ey = this.random(-20,con.y) this.dx = this.random(-5, 6); // -5~5 this.dy = this.random(-5, 6); // -5~5 this.dom = '' } random(min,max){ return Math.random()* (max - min) + min; } render(index,step){ const move = `@keyframes moveBall_${index} { 0%{ top:${this.y}px; left: ${this.x}px; } 50%{ top:${this.ey}px; left: ${this.ex}px; } 100%{ top:${this.y}px; left: ${pox.bx - 100}px; } }` const sheet = document.styleSheets[0]; sheet.insertRule(move, 0) const div = document.createElement("div") div.className = 'small-ball' div.style.transform = `scale(${Math.random() + 0.5})` div.style.opacity = Math.random() + 0.5 div.style.animation = `moveBall_${index} ${step}s cubic-bezier(0.23, 1, 0.32, 1) forwards` ctx.appendChild(div) this.dom = div } } creatBall() function creatBall(){ let step = 2 const x = pox.x / 2 const y = pox.y / 2 for (let i = 0; i< 50; i++){ step += 0.01 const ball = new Ball(pox,x,y) ball.render(i,step) list.push(ball) } } </script> </body> </html>
到此這篇關(guān)于基于JavaScript實現(xiàn)粒子流動效果的文章就介紹到這了,更多相關(guān)JavaScript粒子流動效果內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
原生javascript實現(xiàn)獲取指定元素下所有后代元素的方法
這篇文章主要介紹了原生javascript實現(xiàn)獲取指定元素下所有后代元素的方法,在進(jìn)行web程序設(shè)計時是非常實用的技巧,需要的朋友可以參考下2014-10-10javascript實現(xiàn)獲取瀏覽器版本、瀏覽器類型
這篇文章主要介紹了javascript實現(xiàn)獲取瀏覽器版本,javascript實現(xiàn)獲取瀏覽器類型兩大方面,對這方面感興趣的朋友可以參考一下2015-12-12