最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

相關(guān)的方法說明及使用, 請參見下面的注釋或發(fā)評論, 同時(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ù)說明:
* 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ù)判斷,測試用,成功運(yùn)行后可刪除
if (arguments.length < 5 || arguments.length>6) {
alert('參數(shù)傳入錯(cuò)誤,請傳入5或6個(gè)值! :)');
return false;
}

//通用方法
var iBase = {
//document.getElementById
Id: function(name){
return document.getElementById(name);
},
//時(shí)間點(diǎn)動畫顯示
PointSlide: function(elem, val){
//可通過修改i+=5中的5控制滑動速度
for (var i = 0; i <= 100; i += 5) {
(function(){
//這個(gè)pos定義很重要,若直接使用閉包獲取到的不是上面的i
var pos = i;
//平滑移動
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 {
//否則通過添加空格新增一個(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');//用來存儲時(shí)間點(diǎn)的ul
var timePointLeft = null;//時(shí)間點(diǎn)相對于父元素左邊距離
var timePointLeftCur = null;//每兩個(gè)時(shí)間點(diǎn)間距
var pointIndex = 0;//時(shí)間點(diǎn)在隊(duì)列中的索引值
var defaultShow = defaultShow || 0;//默認(rèn)顯示的時(shí)間
var clearFun=null;//當(dāng)用戶無意識的劃過時(shí)中止執(zhí)行
var that=null;
//根據(jù)數(shù)據(jù)條數(shù)生成對應(yīng)的時(shí)間點(diǎn)html
for (var i = 0; i < dataLen; i++) {
timePoint.innerHTML += '<li></li>';
}
//將時(shí)間點(diǎn)插入到時(shí)間線DIV中
timeLine.appendChild(timePoint)
var timePoints = timeLine.getElementsByTagName('li');
//時(shí)間點(diǎn)平滑顯示
for (var i = 0; i < timePoints.length; i++) {
//每兩個(gè)時(shí)間點(diǎn)間間距
timePointLeftCur = parseInt(iTimeSildeW / (dataLen + 1));
//計(jì)算對應(yīng)時(shí)間點(diǎn)左邊距
timePointLeft = (i + 1) * timePointLeftCur;
//時(shí)間點(diǎn)動畫形式初始化
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
//提升用戶體驗(yàn),當(dāng)用戶無意識地劃過時(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í),以右邊為絕對點(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)定無意識劃過的時(shí)間,可自行調(diào)節(jié)
}
timePoints[i].onmouseout = function(){
//若停留時(shí)間低于200ms,認(rèn)定為無意識劃過,中止函數(shù)
clearTimeout(clearFun);
}
}
}

相關(guān)文章

  • 解決ie11 SCRIPT5011:不能執(zhí)行已釋放Script的代碼問題

    解決ie11 SCRIPT5011:不能執(zhí)行已釋放Script的代碼問題

    這篇文章主要介紹了ie11 SCRIPT5011:不能執(zhí)行已釋放Script的代碼 ,需要的朋友可以參考下
    2019-05-05
  • 原生JS實(shí)現(xiàn)圖片輪播切換效果

    原生JS實(shí)現(xiàn)圖片輪播切換效果

    這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)圖片輪播切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • BootStrap3使用錯(cuò)誤記錄及解決辦法

    BootStrap3使用錯(cuò)誤記錄及解決辦法

    這篇文章主要介紹了BootStrap3使用錯(cuò)誤記錄及解決辦法,需要的朋友可以參考下
    2016-12-12
  • 前端頁面在移動設(shè)備上顯示不正常的原因及解決方案

    前端頁面在移動設(shè)備上顯示不正常的原因及解決方案

    當(dāng)頁面在移動設(shè)備上顯示不正常時(shí),通常是由于布局、樣式或響應(yīng)式設(shè)計(jì)設(shè)置不當(dāng)所引起的,移動設(shè)備的屏幕尺寸、分辨率和交互方式與桌面設(shè)備有很大的不同,本文將詳細(xì)介紹常見的導(dǎo)致頁面在移動設(shè)備上顯示不正常的原因,以及如何解決這些問題,需要的朋友可以參考下
    2024-09-09
  • js在ie下打開對話窗口的方法小結(jié)

    js在ie下打開對話窗口的方法小結(jié)

    下面小編就為大家?guī)硪黄猨s在ie下打開對話窗口的方法小結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • 微信小程序如何獲取用戶手機(jī)號

    微信小程序如何獲取用戶手機(jī)號

    這篇文章主要為大家詳細(xì)介紹了微信小程序如何獲取用戶手機(jī)號,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • es6函數(shù)之尾遞歸用法實(shí)例分析

    es6函數(shù)之尾遞歸用法實(shí)例分析

    這篇文章主要介紹了es6函數(shù)之尾遞歸用法,結(jié)合實(shí)例形式分析了es6函數(shù)尾遞歸原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • JS基于VUE組件實(shí)現(xiàn)城市列表效果

    JS基于VUE組件實(shí)現(xiàn)城市列表效果

    這篇文章主要為大家詳細(xì)介紹了JS基于VUE組件實(shí)現(xiàn)城市列表效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • javascript document.referrer 用法

    javascript document.referrer 用法

    document對象的referrer屬性,返回導(dǎo)航到當(dāng)前網(wǎng)頁的超鏈接所在網(wǎng)頁的URL。
    2009-04-04
  • js模擬F11頁面全屏顯示

    js模擬F11頁面全屏顯示

    這篇文章主要為大家詳細(xì)介紹了js模擬實(shí)現(xiàn)F11使頁面全屏顯示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評論

林甸县| 清原| 右玉县| 澳门| 左贡县| 兰考县| 孟村| 青阳县| 隆林| 鄱阳县| 巧家县| 明光市| 凤凰县| 峨眉山市| 晋城| 古交市| 无棣县| 玉环县| 苍山县| 修武县| 峡江县| 丰顺县| 紫金县| 聂拉木县| 康马县| 陕西省| 永城市| 镶黄旗| 玛曲县| 廉江市| 邵武市| 锡林郭勒盟| 西吉县| 田阳县| 临泉县| 拉萨市| 莱州市| 尉犁县| 松滋市| 寿阳县| 土默特右旗|