jQuery 動態雲端標籤外掛程式_jquery
前言:
最近對js的插件封裝特別感興趣,無耐就目前的技術想做到js的完全封裝,還是有一定困難,就基於jQuery封裝了一個小的插件,而且是基於對象級開發的,不是添加全域方法。高深的語法幾乎沒有,就有一個return:foreach()方法來返回物件實例本身,還有一個extend()函數,用來擴展參數物件的屬性,這也是為了物件在調完我這個方法後方便鏈式操作。
外掛程式打包下載位址:點我下載
外掛程式名稱:動態雲標籤
插件特色:
在指定區塊級元素內動態產生a標籤
a標籤的高度、寬度、位置、層數、背景顏色隨機可控制
a標籤漸隱顯示和漸隱消失,可改變初始化的透明度
a標籤所建立的速度和移動速度可控制(計時器)
a標籤移動的步長可控制(每次循環移動的距離)
滑鼠懸浮停止動畫且透明度最大,層數最高,滑鼠離開,恢復前狀態
遇到問題:
目前插件是可以正常運行,但如果切換瀏覽器標籤,不把插件頁顯示,過一會兒再切換回來,會有卡頓的現象,這個現在還不知道什麼情況,請了解的給予指點,裡面也有很多需要優化的地方,有好的點子希望提出來,我好及時給予更正。
動畫效果:
汗:gif圖片可能有點大,等一下就動了。耐心哦
JS程式碼片段:
(function($){
$.fn.activiTag = function(opts) {
opts = $.extend({
move_step:2, // 元素移動步長--px
move_speed:40, // 元素移動速度--ms
init_speed:1000,// 元素創造速度--ms
min_opacity:0, // 元素最低透明度--0-1小數
max_grain: 10, // 最大粒徑
// a標籤陣列
a_List: ["請加元素哦","Spring Jpa詳解","javamail郵箱"], // a標籤字串陣列
// 背景顏色陣列
color_List: ['#CD2626','#8b4513','#696969','#ff8c00','#6495ED'] 標籤顏色陣列 },opts||{});
var aTag = $(this); // 目前容器物件
var T_width = aTag.width(), T_height = aTag.height(); // 容器高度、寬度
return this.each(function(){
function setATagCss() { // 設定容器對應css
aTag.css({position:'relative',overflow:'hidden'});
}
function getRandomNum(Min, Max){ // 取得兩個區間內隨機數
Min = new Number(Min);Max = new Number(Max);
var Range = Max - Min 1;
var Rand = Math.random();
return Min Math.floor(Rand * Range);
}
function getRandomXY(num) { // 隨機回傳一個 正/負參數
num = new Number(num);
if(Math.random() num = -num;
return num;
}
/**
* 隨機建立a標籤,寬度為容器寬度的三分之一,然後在自身基礎上 -五分之一寬度
* 較自體寬度的三分之一,則為 -三分之一為
*/
function createATag() {
var i = getRandomNum(0,opts.a_List.length-1);
var a = $(opts.a_List[i]); // 每個標籤元素
aTag.append(a);
return a;
}
/**設定a標籤css樣式 **/
function setCss(a) {
var w = Math.ceil(T_width/3) getRandomXY(T_width/60);
var h = Math.ceil(w/3) getRandomXY(w/36); // 行高
var zIndex = Math.ceil(Math.random()*400); // 層數
var rdmOpcy = getRandomNum(new Number(opts.min_opacity),0);
// 行高、層數、透明化
a.css({
opacity:rdmOpcy,
zIndex: zIndex,
lineHeight:h 'px',
position: 'absolute',
textDecoration:'none',
textAlign:'center',
borderRadius: '3px',
color:'#FFFFFF',
whiteSpace: 'nowrap',
});
return a;
}
/**計算標籤相對於容器的初始化位置(X_Y 座標) **/
function setXY(a) {
var x = getRandomNum(0,(T_width-a.width()));
var y = getRandomNum(0,T_height/10);
a.css({left:x 'px', bottom:y 'px'});
return a;
}
/**設定隨機背景顏色 **/
function setColor(a) {
var i = Math.ceil(Math.random()*opts.color_List.length -1);
a.css({backgroundColor:opts.color_List[i]})
}
/**構造函數入口 **/
function construct() {
var a = createATag();
setCss(a); // css
setColor(a); // color
setXY(a); // 座標位置
return a;
}
/**動畫定時器函數 **/
function interVal(a,s_opcy,botm,n,space,s) {
var opcy = a.css('opacity'); // 透明度
var botm_ = a.css('bottom').replace('px',''); // 即時底部距離
var opcy_ = parseFloat(new Number(a.css('opacity'))) s_opcy; // 透明度
var _opcy_ = parseFloat(new Number(a.css('opacity'))) - s_opcy; // --透明度
var fall = botm_ - botm; // 已移動的距離
botm_ = new Number(botm_) 新 Number(opts.move_step);
a.css({
display: 'block',
bottom: botm_,
});
if(fall { a.css({opacity: opcy_}) }
else if(2*n { a.css({opacity: _opcy_}) }
if (botm_ >= space)
{
clearInterval(s);
a.remove();
}
}
function init() {
if(aTag.children('a').length >= new Number(opts.max_grain))
return;
var a = construct();
var opcy = a.css('opacity'); // 透明度
var zInx = a.css('zIndex'); // 層數
var botm = a.css('bottom').replace('px',''); //初始到底部距離
var space = T_height - a.height() - a.css('bottom').replace('px',''); // 要移動的距離
var n = space/3; // 轉換透明度距離
var step = 1-opcy; // 若要變動透明度值
var sec = n/opts.move_step*opts.move_speed/1000; // 距離/單步長 * 單步長秒數 = 需秒數
var s_opcy = opts.move_speed/1000/sec * step; // 每次循環中需要轉換的透明度值
var speed_ = getRandomNum(new Number(opts.move_speed)-30,new Number(opts.move_speed) 30);
;
;
;
;
;
;
; var currOpcy; // 記錄滑鼠移入時以透明度為
// console.log(opts.move_speed '....' speed_)
/**元素移動循環 **/
var s = setInterval(function(){
interVal(a,s_opcy,botm,n,space,s);
}, speed_)
a.mouseover(function(){ // 滑鼠移入
currOpcy = a.css('opacity');
clearInterval(s);
$(this).css({
zIndex: 401,
opacity: 1
});
});
a.mouseout(function(){ // 滑鼠移出
$(this).css({
zIndex: zInx,
opacity: currOpcy
});
s= setInterval(function(){
interVal(a,s_opcy,botm,n,space,s);
},speed_);
});
}
});
}})(jQuery)
複製程式碼 程式碼如下:ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
http://www.w3.org/1999/xhtml">
"type="text/javascript" charset="utf-8">
$(函數(){
$('#tag').activiTag({});
});
腳本>
#標籤{
邊框:1px 灰色虛線;
寬度:250px;
高度:250px;
上方:50px;
左:300px;
}
一個{
內邊距:0px 3px;
字體大小:12px;
空白:nowrap;
顯示:無;
}
風格>
頭>
身體>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在建立虛擬機器時,系統會要求您選擇磁碟類型,您可以選擇固定磁碟或動態磁碟。如果您選擇了固定磁碟,後來意識到需要動態磁碟,或者相反,該怎麼辦?好!你可以把一種轉換成另一種。在這篇文章中,我們將看到如何將VirtualBox固定磁碟轉換為動態磁碟,反之亦然。動態磁碟是一種虛擬硬碟,它最初具有較小的大小,隨著您在虛擬機器中儲存數據,其大小會相應增長。動態磁碟在節省儲存空間方面非常高效,因為它們只佔用所需的主機儲存空間。然而,隨著磁碟容量的擴展,可能會稍微影響電腦的效能。固定磁碟和動態磁碟是虛擬機器中常用的

jQuery引用方法詳解:快速上手指南jQuery是一個受歡迎的JavaScript庫,被廣泛用於網站開發中,它簡化了JavaScript編程,並為開發者提供了豐富的功能和特性。本文將詳細介紹jQuery的引用方法,並提供具體的程式碼範例,幫助讀者快速上手。引入jQuery首先,我們需要在HTML檔案中引入jQuery函式庫。可以透過CDN連結的方式引入,也可以下載

jQuery中如何使用PUT請求方式?在jQuery中,發送PUT請求的方法與發送其他類型的請求類似,但需要注意一些細節和參數設定。 PUT請求通常用於更新資源,例如更新資料庫中的資料或更新伺服器上的檔案。以下是在jQuery中使用PUT請求方式的具體程式碼範例。首先,確保引入了jQuery庫文件,然後可以透過以下方式發送PUT請求:$.ajax({u

jQuery如何移除元素的height屬性?在前端開發中,經常會遇到需要操作元素的高度屬性的需求。有時候,我們可能需要動態改變元素的高度,而有時候又需要移除元素的高度屬性。本文將介紹如何使用jQuery來移除元素的高度屬性,並提供具體的程式碼範例。在使用jQuery操作高度屬性之前,我們首先需要了解CSS中的height屬性。 height屬性用於設定元素的高度

標題:jQuery小技巧:快速修改頁面所有a標籤的文字在網頁開發中,我們經常需要對頁面中的元素進行修改和操作。使用jQuery時,有時候需要一次修改頁面中所有a標籤的文字內容,這樣可以節省時間和精力。以下將介紹如何使用jQuery快速修改頁面所有a標籤的文本,同時給出具體的程式碼範例。首先,我們需要引入jQuery庫文件,確保在頁面中引入了以下程式碼:<

標題:使用jQuery修改所有a標籤的文字內容jQuery是一款受歡迎的JavaScript庫,被廣泛用於處理DOM操作。在網頁開發中,經常會遇到需要修改頁面上連結標籤(a標籤)的文字內容的需求。本文將介紹如何使用jQuery來實現這個目標,並提供具體的程式碼範例。首先,我們需要在頁面中引入jQuery庫。在HTML檔案中加入以下程式碼:

如何判斷jQuery元素是否具有特定屬性?在使用jQuery操作DOM元素時,常會遇到需要判斷元素是否具有某個特定屬性的情況。在這種情況下,我們可以藉助jQuery提供的方法來輕鬆實現這項功能。以下將介紹兩種常用的方法來判斷一個jQuery元素是否具有特定屬性,並附上具體的程式碼範例。方法一:使用attr()方法和typeof運算子//判斷元素是否具有特定屬

jQuery是一種流行的JavaScript庫,被廣泛用於處理網頁中的DOM操作和事件處理。在jQuery中,eq()方法是用來選擇指定索引位置的元素的方法,具體使用方法和應用場景如下。在jQuery中,eq()方法選擇指定索引位置的元素。索引位置從0開始計數,即第一個元素的索引是0,第二個元素的索引是1,依此類推。 eq()方法的語法如下:$("s
