亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

原生Js實(shí)現(xiàn)按的數(shù)據(jù)源均分時(shí)間點(diǎn)幻燈片效果(已封裝)

 更新時(shí)間:2010年12月28日 23:14:00   作者:  
騰訊新聞詳情頁(yè)有一個(gè)事件進(jìn)展效果, 覺(jué)得挺有意思. 于是, 就有了本文的效果: 按數(shù)據(jù)源均分時(shí)間點(diǎn)幻燈. 花了三個(gè)多小時(shí)寫(xiě)的, 當(dāng)然, 包括樣式與調(diào)試. 兼容主流。
建議在Chrom,Firefox,Opera,Safari等標(biāo)準(zhǔn)瀏覽器中查看. Ie下沒(méi)有陰影及圓角.

實(shí)現(xiàn)了根據(jù)源數(shù)據(jù)(樣例中是一個(gè)JSON數(shù)據(jù)組)總條數(shù), 均分出時(shí)間點(diǎn)以平滑向右動(dòng)畫(huà)方式顯示在時(shí)間線(xiàn)上, 當(dāng)鼠標(biāo)劃過(guò)時(shí)間點(diǎn)時(shí), 顯示對(duì)應(yīng)的日期及標(biāo)題. 鼠標(biāo)劃過(guò)事件, 充分考慮了用戶(hù)體驗(yàn), 當(dāng)用戶(hù)快速(無(wú)意識(shí)移動(dòng))從時(shí)間點(diǎn)上劃過(guò)時(shí), 并不觸發(fā)相應(yīng)事件.

相關(guān)的方法說(shuō)明及使用, 請(qǐng)參見(jiàn)下面的注釋或發(fā)評(píng)論, 同時(shí)也歡迎大家找bug并提交.
原生Js實(shí)現(xiàn)按數(shù)據(jù)源均分時(shí)間點(diǎn)幻燈效果
Js核心代碼點(diǎn)此查看樣例
復(fù)制代碼 代碼如下:

var JSONData=[{...},{...},...];//數(shù)據(jù)源,一切皆因它而生,因它而滅

function iTimePoint(iTimeSlideId, dateId, timeLineId, titleTop, titleId, defaultShow){
/* 傳入?yún)?shù)說(shuō)明:
* iTimeSlideId: 外圍ID名. 本樣例DOM中#itimeslide;
* dateId: 日期ID名. 本樣例DOM中#date;
* timeLineId: 時(shí)間點(diǎn)分布ID名. 本樣例DOM中#timeline;
* titleTop: 標(biāo)題容器上方小三角ID名. 本樣例DOM中#titletop;
* titleId: 標(biāo)題容器ID名. 本樣例DOM中#title;
* defaultShow: 設(shè)定初始顯示的時(shí)間點(diǎn), 默認(rèn)為0, 可不傳值
*/

//參數(shù)判斷,測(cè)試用,成功運(yùn)行后可刪除
if (arguments.length < 5 || arguments.length>6) {
alert('參數(shù)傳入錯(cuò)誤,請(qǐng)傳入5或6個(gè)值! :)');
return false;
}

//通用方法
var iBase = {
//document.getElementById
Id: function(name){
return document.getElementById(name);
},
//時(shí)間點(diǎn)動(dòng)畫(huà)顯示
PointSlide: function(elem, val){
//可通過(guò)修改i+=5中的5控制滑動(dòng)速度
for (var i = 0; i <= 100; i += 5) {
(function(){
//這個(gè)pos定義很重要,若直接使用閉包獲取到的不是上面的i
var pos = i;
//平滑移動(dòng)
setTimeout(function(){
elem.style.left = pos * val / 100 + 'px';
}, (pos + 1) * 10);
})();
}
},
//為元素添加樣式
AddClass: function(elem, val){
//若元素?zé)oclass,直接賦值
if (!elem.className) {
elem.className = val;
}else {
//否則通過(guò)添加空格新增一個(gè)class
var oVal = elem.className;
oVal += ' ';
oVal += val;
elem.className = val;
}
},
//獲取元素索引
Index: function(cur, obj){
for (var i = 0; i < obj.length; i++) {
if (obj[i] == cur) {
return i;
}
}
}
}
//整個(gè)函數(shù)變量定義區(qū)
var dataLen = JSONData.length;
var iTimeSilde = iBase.Id(iTimeSlideId);
var date = iBase.Id(dateId);
var timeLine = iBase.Id(timeLineId);
var titletop = iBase.Id(titleTop);
var title = iBase.Id(titleId);
var iTimeSildeW = iTimeSilde.offsetWidth;//幻燈區(qū)實(shí)際寬度
var timePoint = document.createElement('ul');//用來(lái)存儲(chǔ)時(shí)間點(diǎn)的ul
var timePointLeft = null;//時(shí)間點(diǎn)相對(duì)于父元素左邊距離
var timePointLeftCur = null;//每?jī)蓚€(gè)時(shí)間點(diǎn)間距
var pointIndex = 0;//時(shí)間點(diǎn)在隊(duì)列中的索引值
var defaultShow = defaultShow || 0;//默認(rèn)顯示的時(shí)間
var clearFun=null;//當(dāng)用戶(hù)無(wú)意識(shí)的劃過(guò)時(shí)中止執(zhí)行
var that=null;
//根據(jù)數(shù)據(jù)條數(shù)生成對(duì)應(yīng)的時(shí)間點(diǎn)html
for (var i = 0; i < dataLen; i++) {
timePoint.innerHTML += '<li></li>';
}
//將時(shí)間點(diǎn)插入到時(shí)間線(xiàn)DIV中
timeLine.appendChild(timePoint)
var timePoints = timeLine.getElementsByTagName('li');
//時(shí)間點(diǎn)平滑顯示
for (var i = 0; i < timePoints.length; i++) {
//每?jī)蓚€(gè)時(shí)間點(diǎn)間間距
timePointLeftCur = parseInt(iTimeSildeW / (dataLen + 1));
//計(jì)算對(duì)應(yīng)時(shí)間點(diǎn)左邊距
timePointLeft = (i + 1) * timePointLeftCur;
//時(shí)間點(diǎn)動(dòng)畫(huà)形式初始化
iBase.PointSlide(timePoints[i], timePointLeft);
//初始顯示時(shí)間點(diǎn)
setTimeout(function(){
timePoints[defaultShow].onmouseover();
}, 1200);
//獲取時(shí)間點(diǎn)默認(rèn)class值,為鼠標(biāo)事件做準(zhǔn)備
timePoints[i].oldClassName = timePoints[i].className;
timePoints[i].onmouseover = function(){
that = this;//確保clearFun中的this是當(dāng)前的this
//提升用戶(hù)體驗(yàn),當(dāng)用戶(hù)無(wú)意識(shí)地劃過(guò)時(shí)不執(zhí)行函數(shù)
clearFun=setTimeout(function(){
//計(jì)算出當(dāng)前時(shí)間點(diǎn)索引值,為鼠標(biāo)劃出做準(zhǔn)備
pointIndex = iBase.Index(that, timePoints);
//去除上一個(gè)時(shí)間點(diǎn)高亮樣式
for (var m = 0; m < timePoints.length; m++) {
if (m != pointIndex) {
timePoints[m].className = timePoints[m].oldClassName
}
}
//為當(dāng)前時(shí)間點(diǎn)加載高亮樣式
iBase.AddClass(that, 'hover');
//切換日期及標(biāo)題值
date.innerHTML = '<span>' + (JSONData[pointIndex]['date'] || '') + '</span><EM></EM>';
title.innerHTML = '<a href="' + (JSONData[pointIndex]['href'] || '') + '">' + (JSONData[pointIndex]['title'] || '') + '</a>';
//改變?nèi)掌诩皹?biāo)題的位置,此處減去的數(shù)字,可根據(jù)實(shí)際樣式調(diào)整
date.style.left = ((pointIndex + 1) * timePointLeftCur - 25) + 'px';
titletop.style.left = ((pointIndex + 1) * timePointLeftCur + 6) + 'px';
//當(dāng)標(biāo)題框左邊距與標(biāo)題框?qū)挾戎痛笥谕鈬鷮挾葧r(shí),以右邊為絕對(duì)點(diǎn)
if ((title.offsetWidth + (pointIndex + 1) * timePointLeftCur) < iTimeSildeW) {
title.style.left = ((pointIndex + 1) * timePointLeftCur - timePointLeftCur) + 'px';
}else {
title.style.left = (iTimeSildeW - title.offsetWidth) + 'px';
}
//顯示日期/時(shí)間點(diǎn)/標(biāo)題
date.style.display = 'block';
titletop.style.display = 'block';
title.style.display = 'block';
},200);//200為認(rèn)定無(wú)意識(shí)劃過(guò)的時(shí)間,可自行調(diào)節(jié)
}
timePoints[i].onmouseout = function(){
//若停留時(shí)間低于200ms,認(rèn)定為無(wú)意識(shí)劃過(guò),中止函數(shù)
clearTimeout(clearFun);
}
}
}

相關(guān)文章

最新評(píng)論