一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 原生JavaScript實現幻燈片效果

原生JavaScript實現幻燈片效果

2022-01-21 15:26清水拌墨茶 js教程

這篇文章主要為大家詳細介紹了原生JavaScript實現幻燈片效果,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

準備:在制作腳本之前,需要制作一張圖片,這張圖片應該展示了所有預覽效果,如下圖:

原生JavaScript實現幻燈片效果

index.html

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<body>
 <h1>簡單動畫制作</h1>
 <p>連接跳轉目標展示</p>
 <ol id="list">
 <li>
 <a href="list1.html" >First</a>
 </li>
 <li>
 <a href="list2.html" >Second</a>
 </li>
 <li>
 <a href="list3.html" >Third</a>
 </li>
 </ol>
 <!--動態添加的圖片展示區域>-->
<script src="script.js"></script>
</body>

style.css

為這個導航欄添加一些樣式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

實現思路:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*共享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");
 
 /*創建圖片展示區域*/
 /*外層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","圖片預覽");
 /*添加 使用insertAfter()函數 保證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);
 };
}
 
 
/*移動
*參數的含義:圖片所在元素的id;圖片應該向左移動的偏移量;上偏移量;時間
*/
function moveElement(elementID,left,top,interval){
 /*向后兼容*/
 if(!document.getElementById) return false;
 if(!document.getElementById(elementID)) return false;
 
 /*獲取圖片*/
 var img = document.getElementById(elementID);
 
 /*判斷當前元素是否已經處在一個動畫函數中
 *防止動畫堆積
 */
 if(img.moveNow){
  /*清楚堆棧中的動畫*/
  clearTimeout(img.moveNow);
 }
 
 /*判斷元素是否設置了left和top*/
 if(!img.style.left){
  img.style.left = "0px";
 }
 if(!img.style.top){
  img.style.top = "0px";
 }
 
 
 /*獲取圖片當前位置
 *此時獲取的值是字符串格式,使用parseInt()強制轉化為字符串*/
 var oldLeft = parseInt(img.style.left);
 var oldTop = parseInt(img.style.top);
 
 /*將當前位置與目標位置做比較*/
 if(oldLeft == left && oldTop == top){
  return true;
 }
 
 /*為了保證用戶體驗,當移動的距離較大時應該移動的快一些
 *當移動的距離比較小時,可以適當慢一些
 *根據相差的距離判斷移動的距離,每次移動相差距離的1/10
 */
 /*dist變量用于存儲當前偏移量與目標偏移量的距離*/
 var dist = 0;
 if(oldLeft < left){
  /*ceil()向上取整 防止小數 以及小于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";
 
 /*調用函數*/
 var result = "moveElement('"+elementID+"',"+left+","+top+","+interval+")";
 /*將執行動畫的函數,設置成這個元素的一個屬性*/
 img.moveNow = setTimeout(result,interval);
}
 
addLoadEvent(show);

最后執行效果

原生JavaScript實現幻燈片效果

此時,當我們將鼠標移動到不同列表項時,列表下的圖片就會移動到對應的預覽圖位置。

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/zm_nizhi/article/details/74905869

延伸 · 閱讀

精彩推薦
  • js教程使用 JavaScript 進行數據分組最優雅的方式

    使用 JavaScript 進行數據分組最優雅的方式

    對數據進行分組,是我們在開發中經常會遇到的需求,使用 JavaScript 進行數據分組的方式也有很多種,但是由于沒有原生方法的支持,我們自己實現的數據...

    code秘密花園4442021-12-27
  • js教程JS中循環遍歷數組的四種方式總結

    JS中循環遍歷數組的四種方式總結

    這篇文章主要給大家總結介紹了關于JS中循環遍歷數組的四種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    前端小混混5432022-01-06
  • js教程javascript實現點擊產生隨機圖形

    javascript實現點擊產生隨機圖形

    這篇文章主要為大家詳細介紹了javascript實現點擊產生隨機圖形,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    半成熟、9612022-01-07
  • js教程原生js實現無縫輪播圖效果

    原生js實現無縫輪播圖效果

    這篇文章主要為大家詳細介紹了原生js實現無縫輪播圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    搬磚大法7372022-01-10
  • js教程玩轉 Mockjs,前端也能跑得很溜

    玩轉 Mockjs,前端也能跑得很溜

    mockjs作用就是,生成隨機模擬數據,攔截 ajax 請求,可以對數據進行增刪改查。在生成數據時,我們就需要能夠熟練使用 mock.js 的語法。...

    前端人4742022-01-05
  • js教程JavaScript/TypeScript 實現并發請求控制的示例代碼

    JavaScript/TypeScript 實現并發請求控制的示例代碼

    這篇文章主要介紹了JavaScript/TypeScript 實現并發請求控制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    鳳晴鈴玉3912022-01-04
  • js教程JS hasOwnProperty()方法檢測一個屬性是否是對象的自有屬性的方法

    JS hasOwnProperty()方法檢測一個屬性是否是對象的自有屬性的方法

    這篇文章主要介紹了JS hasOwnProperty()方法檢測一個屬性是否是對象的自有屬性的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的...

    10472022-01-11
  • js教程JavaScript實現滑塊驗證解鎖

    JavaScript實現滑塊驗證解鎖

    這篇文章主要為大家詳細介紹了JavaScript實現滑塊驗證解鎖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    努力的黑皮4772021-12-27
主站蜘蛛池模板: 国产九九热视频 | 古代翁熄乩伦小说h | 国产一区二区视频免费 | 爱情岛论坛自拍永久入口 | 国语在线 | 91桃色视频 | 拍拍叫痛的无挡视频免费 | 日韩精品久久不卡中文字幕 | 国产亚洲福利精品一区二区 | 国产东北三老头伦一肥婆 | 天若有情1992国语版完整版 | 操女人的b | 免费视频网 | 91制片厂制作传媒免费版樱花 | 国产美女在线一区二区三区 | 香蕉成人999视频 | 亚洲精品免费在线观看 | 日本黄色大片网站 | 我强进了老师身体在线观看 | 免费人成在线观看69式小视频 | poronovideos变态极限 | www.爱操 | 日韩在线视频二区 | 全彩调教侵犯h本子全彩妖气he | 精品国产乱码久久久人妻 | 男人天堂黄色 | 五月天淫 | 日本天堂网| 韩日理论片 | 亚洲欧美日韩精品久久亚洲区 | 逼水真多 | 日本高清中文字幕视频在线 | 精品久久久久久久国产潘金莲 | 99久久精品免费观看区一 | 精品国产剧情在线观看 | 亚欧洲乱码专区视频 | 无限韩国视频免费播放 | 好涨好大我快受不了了视频网 | 456在线观看 | 69japanese日本100| 九九久久精品 |