jquery 步驟進(jìn)度軸插件的實(shí)現(xiàn)代碼
每天一個(gè)jquery插件-步驟進(jìn)度軸 步驟進(jìn)度軸
很多工具型的網(wǎng)站入門(mén)教程或者注冊(cè)賬號(hào)走流程的時(shí)候會(huì)有這個(gè)結(jié)構(gòu)存在,所以做了一個(gè)來(lái)嘗試一下,回調(diào)動(dòng)作也能用吧
效果如下

代碼部分
*{
margin: 0;
padding: 0;
}
#div{
width: 90%;
height: 50px;
margin: 10px auto;
display: flex;
justify-content: center;
align-items: center;
}
#box{
width: 90%;
height: 100px;
border: 1px solid lightgray;
margin: 10px auto;
display: flex;
justify-content: center;
align-items: center;
position: relative;
}
.box{
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
display: flex;
justify-content: center;
align-items: center;
background-color: black;
color: white;
}
.tbar{
width: 90%;
height: 6px;
border-radius: 5px;
background-color: lightgray;
display: flex;
align-items: center;
position: absolute;
}
.bar{
width: 100%;
height: 50%;
border-radius: 5px;
background-color: #1abc9c;
transition: all 0.2s linear;
}
.dot{
position: absolute;
width: 12px;
height: 12px;
border-radius: 50%;
background-color: lightgray;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
}
.dot:hover{
transition: all 0.5s linear;
background-color: #1abc9c;
}
.dot.check{
background-color: #1abc9c;
}
.dot .txt{
top: 100%;
font-size: 12px;
position: absolute;
width: 100px;
text-align: center;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>步驟進(jìn)度軸</title>
<script src="js/jquery-3.4.1.min.js"></script>
<script src="js/bzjdz.js"></script>
<link href="css/bzjdz.css" rel="external nofollow" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="div">
</div>
<div id="box">
<div class="box" id="box1" style="background-color: #1abc9c;">步驟1</div>
<div class="box" id="box2" style="background-color: #3498db;">步驟2</div>
<div class="box" id="box3" style="background-color: #f1c40f;">步驟3</div>
<div class="box" id="box4" style="background-color: #e74c3c;">步驟4</div>
<div class="box" id="box5" style="background-color: #9b59b6;">步驟5</div>
</div>
</body>
</html>
<script>
$(function(){
$("#div").timeline({
data:[
{name:'步驟1',id:'#box1',click:hide},
{name:'步驟2',id:'#box2',click:hide},
{name:'步驟3',id:'#box3',click:hide},
{name:'步驟4',id:'#box4',click:hide},
{name:'步驟5',id:'#box4',click:hide},
]
})
})
function hide(item){
$(".box").hide();
$(item.id).show();
}
</script>
$.prototype.timeline =function(op){
console.log(op.data);
var $that = $(this);
var $tbar =$("<div class='tbar'></div>");
var $bar =$("<div class='bar'></div>");
$bar.appendTo($tbar)
$tbar.appendTo($that);
var length = op.data.length;//元素長(zhǎng)度
var index = 0;//當(dāng)前進(jìn)行到哪個(gè)步驟
op.data.forEach((item,index)=>{
var per = getper(index,length)
var $dot = $("<div class='dot' data-index='"+index+"'><div class='txt'>"+item.name+"</div></div>");
$dot.appendTo($tbar);
$dot.css('left',"calc("+per+"% - 6px)")
})
//點(diǎn)擊事件
$that.find('.dot').click(function(){
index = parseInt($(this).attr('data-index'));
//執(zhí)行對(duì)應(yīng)的方法
click();
})
click();
function click(){
//回調(diào)
var item = op.data[index];
item.click(item);
//動(dòng)畫(huà)樣式
var per = getper(index,length)
$bar.css('width',per+'%')
//按鈕選中的控制
op.data.forEach((item,i)=>{
if(i<=index){
$tbar.find(".dot[data-index='"+i+"']").addClass('check');
}else{
$tbar.find(".dot[data-index='"+i+"']").removeClass('check');
}
})
}
function getper(i,l){
var temp = 0;
if(i!=0&&i!=l-1){
temp = i/(l-1)*100//算出大概的距離
}else if(i==l-1){
temp = 100
}
return temp;
}
}
思路解釋
要做的內(nèi)容很簡(jiǎn)單,畫(huà)出時(shí)間軸,標(biāo)記對(duì)應(yīng)的點(diǎn),然后在觸發(fā)對(duì)應(yīng)事件的時(shí)候正確調(diào)用回調(diào)
時(shí)間軸畫(huà)的時(shí)候就那樣,百分比一填滿就沒(méi)啥了,然后里面把會(huì)變化進(jìn)度的和校園點(diǎn)分開(kāi)繪制
小圓點(diǎn)點(diǎn)擊的時(shí)候改變當(dāng)前結(jié)構(gòu)標(biāo)記,然后觸發(fā)一個(gè)事件,把動(dòng)畫(huà)效果和回調(diào)一并執(zhí)行、
完事,休息
以上就是jquery 步驟進(jìn)度軸插件的實(shí)現(xiàn)代碼的詳細(xì)內(nèi)容,更多關(guān)于jQuery步驟進(jìn)度軸的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 基于jquery步驟進(jìn)度條源碼分享
- jquery+ajax實(shí)現(xiàn)上傳圖片并顯示上傳進(jìn)度功能【附php后臺(tái)接收】
- jQuery實(shí)現(xiàn)的手動(dòng)拖動(dòng)控制進(jìn)度條效果示例【測(cè)試可用】
- jQuery NProgress.js加載進(jìn)度插件的簡(jiǎn)單使用方法
- jquery-file-upload 文件上傳帶進(jìn)度條效果
- jQuery實(shí)現(xiàn)可拖動(dòng)進(jìn)度條實(shí)例代碼
- jquery網(wǎng)頁(yè)加載進(jìn)度條的實(shí)現(xiàn)
相關(guān)文章
騰訊與新浪的通過(guò)IP地址獲取當(dāng)前地理位置(省份)的接口
通過(guò)IP地址獲取當(dāng)前地理位置(省份)的接口,方便大家可以直接使用結(jié)合自己的系統(tǒng)。2010-07-07
jQuery多個(gè)版本和其他js庫(kù)沖突的解決方法
jQuery多個(gè)版本或和其他js庫(kù)沖突主要是常用的$符號(hào)的問(wèn)題,該怎么解決呢?下面小編給大家?guī)?lái)了jQuery多個(gè)版本和其他js庫(kù)沖突的解決方法,一起看下吧2016-08-08
jQuery實(shí)現(xiàn)點(diǎn)擊滾動(dòng)到指定元素上的方法分析
這篇文章主要介紹了jQuery實(shí)現(xiàn)點(diǎn)擊滾動(dòng)到指定元素上的方法,結(jié)合實(shí)例形式分析了jQuery響應(yīng)鼠標(biāo)事件動(dòng)態(tài)操作頁(yè)面元素屬性的相關(guān)相關(guān)使用技巧,需要的朋友可以參考下2020-03-03
JQuery獲取可視區(qū)尺寸和文檔尺寸及制作懸浮菜單示例
這篇文章主要介紹了JQuery獲取可視區(qū)尺寸和文檔尺寸及制作懸浮菜單,涉及jQuery針對(duì)頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05
JQuery 應(yīng)用 JQuery.groupTable.js
在以往的項(xiàng)目中,數(shù)據(jù)瀏覽用的都table 的形式展現(xiàn)。如下圖1, 這是一個(gè)很常見(jiàn)的表格。通常對(duì)分類的字段先進(jìn)行排序。為了讓分類表現(xiàn)的更直觀。2010-12-12
jQuery模擬html下拉多選框的原生實(shí)現(xiàn)方法示例
這篇文章主要介紹了jQuery模擬html下拉多選框的原生實(shí)現(xiàn)方法,結(jié)合完整實(shí)例形式分析了jQuery動(dòng)態(tài)操作頁(yè)面元素實(shí)現(xiàn)select下拉框效果的相關(guān)操作技巧,需要的朋友可以參考下2019-05-05
JQuery Ajax通過(guò)Handler訪問(wèn)外部XML數(shù)據(jù)的代碼
JQuery是一款不錯(cuò)的Javascript腳本框架,相信園子里的很多朋友對(duì)它都不陌生,我們?cè)陂_(kāi)發(fā)Web應(yīng)用程序時(shí)難免會(huì)使用到Javascript腳本,而使用一款不錯(cuò)的腳本框架將會(huì)大大節(jié)省我們的開(kāi)發(fā)時(shí)間, 并可以毫不費(fèi)力地實(shí)現(xiàn)很多非??岬男Ч?。2010-06-06

