电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

原生JavaScript實現(xiàn)幻燈片效果

瀏覽:6日期:2023-06-08 15:26:39

當(dāng)我們制作一個頁面時,尤其是制作一個首頁時,通常會設(shè)計一個可以鏈接到整個網(wǎng)站的其他主體頁面的導(dǎo)航欄,或者一段網(wǎng)站的介紹文字中會包含這頁面的跳轉(zhuǎn),通常情況會使用title屬性為這些跳轉(zhuǎn)鏈接添加一些解釋性的文字,但是我們可以通過制作一個幻燈片的demo,加強用戶的體驗性。當(dāng)用戶的鼠標(biāo)移動到某一鏈接時,下方會出現(xiàn)對應(yīng)的圖片預(yù)覽,這樣即美化頁面,又大大增加了整個網(wǎng)站的交互性,下面就讓我們一起制作一個漂亮的幻燈片腳本吧。

準(zhǔn)備:在制作腳本之前,需要制作一張圖片,這張圖片應(yīng)該展示了所有預(yù)覽效果,如下圖:

原生JavaScript實現(xiàn)幻燈片效果

index.html

制作有序列表,添加一些頁面鏈接

<body> <h1>簡單動畫制作</h1> <p>連接跳轉(zhuǎn)目標(biāo)展示</p> <ol id='list'> <li> <a href='http://www.hdgsjgj.cn/bcjs/list1.html' >First</a> </li> <li> <a href='http://www.hdgsjgj.cn/bcjs/list2.html' >Second</a> </li> <li> <a href='http://www.hdgsjgj.cn/bcjs/list3.html' >Third</a> </li> </ol> <!--動態(tài)添加的圖片展示區(qū)域>--><script src='http://www.hdgsjgj.cn/bcjs/script.js'></script></body>

style.css

為這個導(dǎo)航欄添加一些樣式

ol{ padding-left: 20px;}ol li{ display: inline; margin-right: 10px;}#view{ width: 600px; height: 200px; position: absolute;}#slideShow{ width: 200px; height: 200px; overflow: hidden; position: relative;}

script.js

實現(xiàn)思路:

在建立腳本之前,我們先整理一下思路,確定我們要做什么?1. 新建一些節(jié)點用來展示預(yù)覽圖片2. 為a標(biāo)簽添加onmouseover事件3. 通過setTimeout()函數(shù),和對圖片元素left、top偏移量(獲取設(shè)置的left top屬性時 要轉(zhuǎn)換稱整型)的移動完成動畫效果

/*共享load*/function addLoadEvent(fun){ var oldLoad = window.onload; if(typeof oldLoad != 'function'){ window.onload = fun; }else{ window.onload = function(){ oldLoad(); fun(); } }}/*insertAfter*/function insertAfter(newNode,oldNode){ var parent = oldNode.parentNode; if(parent.lastChild == oldNode){ parent.appendChild(newNode); }else{ parent.insertBefore(newNode,oldNode.nextSibling); }}function show(){ /*向后兼容*/ if(!document.getElementById) return false; if(!document.getElementsByTagName) return false; if(!document.createElement) return false; /*獲取列表清單*/ var list = document.getElementById('list'); /*創(chuàng)建圖片展示區(qū)域*/ /*外層div*/ var div = document.createElement('div'); div.setAttribute('id','slideShow'); /*img*/ var img = document.createElement('img'); img.setAttribute('id','view'); img.setAttribute('src','image.jpg'); img.setAttribute('alt','圖片預(yù)覽'); /*添加 使用insertAfter()函數(shù) 保證div緊跟在list列表之后*/ insertAfter(div,list); div.appendChild(img); /*綁定事件*/ var a = list.getElementsByTagName('a'); a[0].onmouseover =function(){ moveElement('view',0,0,10); }; a[1].onmouseover = function(){ moveElement('view',-200,0,10); }; a[2].onmouseover = function(){ moveElement('view',-400,0,10); };}/*移動*參數(shù)的含義:圖片所在元素的id;圖片應(yīng)該向左移動的偏移量;上偏移量;時間*/function moveElement(elementID,left,top,interval){ /*向后兼容*/ if(!document.getElementById) return false; if(!document.getElementById(elementID)) return false; /*獲取圖片*/ var img = document.getElementById(elementID); /*判斷當(dāng)前元素是否已經(jīng)處在一個動畫函數(shù)中 *防止動畫堆積 */ if(img.moveNow){ /*清楚堆棧中的動畫*/ clearTimeout(img.moveNow); } /*判斷元素是否設(shè)置了left和top*/ if(!img.style.left){ img.style.left = '0px'; } if(!img.style.top){ img.style.top = '0px'; } /*獲取圖片當(dāng)前位置 *此時獲取的值是字符串格式,使用parseInt()強制轉(zhuǎn)化為字符串*/ var oldLeft = parseInt(img.style.left); var oldTop = parseInt(img.style.top); /*將當(dāng)前位置與目標(biāo)位置做比較*/ if(oldLeft == left && oldTop == top){ return true; } /*為了保證用戶體驗,當(dāng)移動的距離較大時應(yīng)該移動的快一些 *當(dāng)移動的距離比較小時,可以適當(dāng)慢一些 *根據(jù)相差的距離判斷移動的距離,每次移動相差距離的1/10 */ /*dist變量用于存儲當(dāng)前偏移量與目標(biāo)偏移量的距離*/ var dist = 0; if(oldLeft < left){ /*ceil()向上取整 防止小數(shù) 以及小于1的情況*/ dist = Math.ceil((left-oldLeft)/10); oldLeft = oldLeft+dist; } if(oldLeft > left){ dist = Math.ceil((oldLeft-left)/10); oldLeft = oldLeft - dist; } if(oldTop < top){ dist = Math.ceil((top-oldTop)/10); oldTop = oldTop+dist; } if(oldTop > top){ dist = Math.ceil((oldTop-top)/10); oldTop = oldTop - dist; } /*移動*/ img.style.left = oldLeft+'px'; img.style.top = oldTop+'px'; /*調(diào)用函數(shù)*/ var result = 'moveElement(’'+elementID+'’,'+left+','+top+','+interval+')'; /*將執(zhí)行動畫的函數(shù),設(shè)置成這個元素的一個屬性*/ img.moveNow = setTimeout(result,interval);}addLoadEvent(show);

最后執(zhí)行效果

原生JavaScript實現(xiàn)幻燈片效果

此時,當(dāng)我們將鼠標(biāo)移動到不同列表項時,列表下的圖片就會移動到對應(yīng)的預(yù)覽圖位置。

到此,一個簡單的幻燈片demo就制作完成了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 德州网站制作 - 网站建设设计 - seo排名优化 -「两山建站」 | 氢氧化钙设备_厂家-淄博工贸有限公司 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 博博会2021_中国博物馆及相关产品与技术博览会【博博会】 | 浙江筋膜枪-按摩仪厂家-制造商-肩颈按摩仪哪家好-温州市合喜电子科技有限公司 | 注浆压力变送器-高温熔体传感器-矿用压力传感器|ZHYQ朝辉 | 2025黄道吉日查询、吉时查询、老黄历查询平台- 黄道吉日查询网 | 油冷式_微型_TDY电动滚筒_外装_外置式电动滚筒厂家-淄博秉泓机械有限公司 | 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | 黑龙江「京科脑康」医院-哈尔滨失眠医院_哈尔滨治疗抑郁症医院_哈尔滨精神心理医院 | 首页 - 张店继勇软件开发工作室 兰州UPS电源,兰州山特UPS-兰州万胜商贸 | 耐火浇注料-喷涂料-浇注料生产厂家_郑州市元领耐火材料有限公司 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 环压强度试验机-拉链拉力试验机-上海倾技仪器仪表科技有限公司 | 尾轮组_头轮组_矿用刮板_厢式刮板机_铸石刮板机厂家-双驰机械 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 尊享蟹太太美味,大闸蟹礼卡|礼券|礼盒在线预订-蟹太太官网 | 探伤仪,漆膜厚度测试仪,轮胎花纹深度尺厂家-淄博创宇电子 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 杭州代理记账多少钱-注册公司代办-公司注销流程及费用-杭州福道财务管理咨询有限公司 | 彼得逊采泥器-定深式采泥器-电动土壤采样器-土壤样品风干机-常州索奥仪器制造有限公司 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 德州网站制作 - 网站建设设计 - seo排名优化 -「两山建站」 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 金属回收_废铜废铁回收_边角料回收_废不锈钢回收_废旧电缆线回收-广东益夫金属回收公司 | 多功能真空滤油机_润滑油全自动滤油机_高效真空滤油机价格-重庆润华通驰 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 软膜天花_软膜灯箱_首选乐创品牌_一站式天花软膜材料供应商! | 骁龙云呼电销防封号系统-axb电销平台-外呼稳定『免费试用』 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 岛津二手液相色谱仪,岛津10A液相,安捷伦二手液相,安捷伦1100液相-杭州森尼欧科学仪器有限公司 | ge超声波测厚仪-电动涂膜机-电动划格仪-上海洪富 |