網頁隨處點選出現小火花簡約特效 html+css+js
先看效果,效果是比較簡約的:
原理:
效果就是在網頁的任何地方滑鼠點選後都出現一個小火花~原理並不複雜,就是滑鼠點選後生成一個盒子,盒子裡放字型圖示或文字,然後操控它們的屬性變化,最後再讓它們消失就好。(還有小火花是我本地的字型圖示,可以用自己的方式引入圖示,或只寫文字也可)
實現:
1.寫body屬性,目的是這樣就能獲取點選的位置:
body{
height: 100vh;
}
2.定義一個小火花第一次出現的初始樣式:
.tx{
font-family: 'icomoon';
position: absolute;
color: #000;
font-size: 15px;
user-select: none;
}
注意:一些屬性用處
font-family: ‘icomoon’; 引入字型圖示,也可自己方式引入~
user-select: none; 文字不可選中~
3.js獲取body這個元素,繫結點選事件(執行tianJia(e)這個函式):
var baba = document.querySelector('body');
baba.addEventListener('click',function(e){
tianJia(e);
})
4.建立一個陣列,用來儲存點選後生成的盒子:
var erZi =[];
5.tianJia(e)函式:
function tianJia(e){
var sunZi = document.createElement('div');
sunZi.className = 'tx';
sunZi.innerHTML = '<span></span>';
baba.appendChild(sunZi);
erZi.push({
el:sunZi,
top: e.clientY - 20,
left: e.clientX - 20,
opacity: 1,
scale: 1,
color: `rgb(${255*Math.random()},${255*Math.random()},${255*Math.random()})`
});
move();
};
注意:一些屬性用處
push() 方法可向陣列的末尾新增一個或多個元素,並返回新的長度。
color: “…” 返回隨機生成的一個顏色~
步驟說明:
var sunZi…新增一個div盒子叫sunZi,
sunZi.className…給它新增 css初始的樣式‘tx’,
sunZi.innerHTML… 新增字型圖示,也可以寫文字,
baba.appendChild(sunZi); …向body裡新增這個盒子,
erZi.push({… 向陣列新增這個盒子,還有它的距離頂部距離在加上20,距離它左邊距離再往上20,(加多少自己看哪個出現的初始位置好而定),透明度為1,scale是transform屬性裡的代表縮放的值,定義為1;
move();執行函式;
6.move函式:
function move(){
for(var i=0;i<erZi.length;i++)
{
if(erZi[i].opacity<=0){
baba.removeChild(erZi[i].el);
erZi.splice(i,1);
return;
}
erZi[i].top--;
erZi[i].opacity=erZi[i].opacity-0.01;
erZi[i].scale= erZi[i].scale+0.02;
erZi[i].el.style.cssText = `
top: ${erZi[i].top}px;
left: ${erZi[i].left}px;
color: ${erZi[i].color};
opacity: ${erZi[i].opacity};
transform: scale(${erZi[i].scale});`
}
window.requestAnimationFrame(move);
}
注意:一些屬性用處
erZi.splice(i,1);方法可刪除從 index 處開始的零個或多個元素,
window.requestAnimationFrame(); //自帶的,為請求動畫幀,以螢幕重新整理為準,一般是每秒60幀,每重新整理會自動呼叫一次move。
步驟說明:
for(var i=0;i<erZi.length;i++)…遍歷陣列,看裡面有幾個盒子,目的改他們的樣式;
if(erZi[i].opacity<=0){…}判斷盒子(小火花)的透明度為0了嗎,就是消失沒,消失了就body刪除掉前面建立的節點,刪除陣列裡的盒子;
erZi[i].top–; 讓他慢慢向上走;
erZi[i].opacity…慢慢變透明直到0,
erZi[i].scale…慢慢變大,
(上面這些改變數值是多少可以自己調),
erZi[i].el.style.cssText…就是新增css樣式了;
完整程式碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?wr5es');
src: url('fonts/icomoon.eot?wr5es#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?wr5es') format('truetype'),
url('fonts/icomoon.woff?wr5es') format('woff'),
url('fonts/icomoon.svg?wr5es#icomoon') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
}
/* 上面是我引入我的字型圖示庫 */
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
body{
height: 100vh;
}
.tx{
font-family: 'icomoon';
position: absolute;
color: #000;
font-size: 15px;
user-select: none;
}
</style>
<body>
<script>
var baba = document.querySelector('body');
baba.addEventListener('click',function(e){
tianJia(e);
})
var erZi =[];
function tianJia(e){
var sunZi = document.createElement('div');
sunZi.className = 'tx';
sunZi.innerHTML = '<span></span>';
baba.appendChild(sunZi);
erZi.push({
el:sunZi,
top: e.clientY - 20,
left: e.clientX - 20,
opacity: 1,
scale: 1,
color: `rgb(${255*Math.random()},${255*Math.random()},${255*Math.random()})`
});
move();
};
function move(){
for(var i=0;i<erZi.length;i++)
{
if(erZi[i].opacity<=0){
baba.removeChild(erZi[i].el);
erZi.splice(i,1);
return;
}
erZi[i].top--;
erZi[i].opacity=erZi[i].opacity-0.01;
erZi[i].scale= erZi[i].scale+0.02;
erZi[i].el.style.cssText = `
top: ${erZi[i].top}px;
left: ${erZi[i].left}px;
color: ${erZi[i].color};
opacity: ${erZi[i].opacity};
transform: scale(${erZi[i].scale});`
}
window.requestAnimationFrame(move);
}
</script>
</body>
</html>
總結:
哈哈哈,
更多:
炫彩流光按鈕~
相關文章
- 寫一個網頁點選的特效網頁特效
- 網頁佈局-----input點選時出現黑色邊框網頁
- .滑鼠點選愛心特效的實現特效
- WKWebView 獲取網頁高度,圖片點選檢視,網頁連結點選WebView網頁
- 網頁黑夜模式白天模式切換 html+css+js網頁模式HTMLCSSJS
- 網頁特效,網頁模板,pdf下載 - IT書包網頁特效
- 極簡網頁設計技巧,打造簡約之美網頁
- 如何實現一個 滑鼠點選特效的 chrome外掛特效Chrome
- jQuery點選彈出側邊欄提示資訊皮膚特效jQuery特效
- android簡單的圖形特效處理Android特效
- 如何實現婚戀app原始碼移動端網頁特效?APP原始碼網頁特效
- 接入[一言]的API實現網頁隨機首頁文字API網頁隨機
- 簡單實現點選回到頂部
- django 網站實現簡單分頁Django網站
- 點選就能設計出活動海拔的方法,線上網頁一鍵出圖!網頁
- javascript js WebGL WebGL2 後期處理特效之點選水波紋漣漪例子JavaScriptJSWeb特效
- 網頁出現404頁面,是什麼問題?網頁
- Codepen 每週精選:展現 WEB 魅力的 26 個頁面特效(2018-6-4)Web特效
- jQuery實現簡單點選隱藏和點選顯示列表的功能jQuery
- HTML+CSS+JS實現趣味相簿HTMLCSSJS
- 直播特效的實現原理與難點特效
- HTML網頁根據座標模擬滑鼠點選HTML網頁
- 織夢點選圖片實現下一頁功能
- 簡單網頁網頁
- ffmpeg特效處理特效
- 網頁,網站點選qq圖示,加qq,開啟對方qq的網頁程式碼網頁網站
- 運用JS 實現隨機點名 (隨機點名)JS隨機
- Codepen 每週精選:22個頁面特效(2018-5-2)特效
- javascript實現網頁截圖匯出方案JavaScript網頁
- 網頁直播/點播播放器EasyPlayer.js網頁web無外掛播放器渲染頁面出現倒掛的原因排查網頁播放器JSWeb
- 點選頁面愛心效果
- 記錄---前端實現畫中畫超簡單,讓網頁飛出瀏覽器前端網頁瀏覽器
- 影像處理--影像特效特效
- 簡單實現UILabel之協議類點選事件UI協議事件
- 可以隨心所欲的canvas粒子特效Canvas特效
- 寫一個滑鼠跟隨的特效特效
- 關於黑馬旅遊網的實現 --- 分頁查詢功能,點選分頁碼不顯示資料
- 頁面點選頻次是如何影響網站排名呢?網站