激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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
主站蜘蛛池模板: 日韩不卡一区二区 | 国产一区二区三区影视 | 性爱在线免费视频 | 曰本三级日本三级日本三级 | 99最新地址 | 亚欧美一区二区 | av电影网在线观看 | 久草在线手机视频 | 久草在线视频在线 | 欧美一级全黄 | 欧美男女爱爱视频 | 亚洲精品久久久久久久久久久 | 日本精品婷婷久久爽一下 | 玩偶姐姐 在线观看 | 成片免费观看大全 | 91成人免费在线观看 | 中文字幕国产一区 | 老女人碰碰在线碰碰视频 | 国产一区二区三区色淫影院 | 少妇一级淫片高潮流水电影 | 销魂美女一区二区 | 日韩高清影视 | 成人h精品动漫一区二区三区 | 在线中文字幕网站 | 午夜精品视频在线 | 99精品视频网站 | 久久欧美亚洲另类专区91大神 | 特黄一区二区三区 | 色屁屁xxxxⅹ在线视频 | 亚洲一区二区三区日本久久九 | 日本高清电影在线播放 | av电影在线播放 | 亚洲午夜免费电影 | 成人亚洲一区二区 | 成年人在线免费 | 麻豆传传媒久久久爱 | 黄色免费入口 | 在线观看va| 成人精品一区二区三区中文字幕 | 91精品国产综合久久男男 | 草碰人人 |