首頁 > web前端 > js教程 > JS CSS實現帶有碰撞緩衝效果的垂直導航條程式碼_javascript技巧

JS CSS實現帶有碰撞緩衝效果的垂直導航條程式碼_javascript技巧

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-05-16 15:39:10
原創
1422 人瀏覽過

本文實例講述了JS CSS實現帶有碰撞緩衝效果的垂直導航條代碼。分享給大家供大家參考。具體如下:

這是一款碰撞緩衝效果的導航條,JavaScript妙味課堂奉獻給大家的作品,很不錯的垂直選單,希望大家喜歡。所用技術是JS和CSS。

運作效果截圖如下:

線上示範網址如下:

http://demo.jb51.net/js/2015/js-css-pzxg-r-nav-style-codes/

具體程式碼如下:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<title>碰撞缓冲效果的导航条</title>

<style type="text/css">

* { padding: 0; margin: 0; }

li { list-style: none; }

body { background: #fff; }

ul { width: 202px; margin: 40px auto 0; position: relative; }

li { width: 200px; height: 30px; line-height: 30px; padding-left: 10px; border: 1px solid #ccc; border-left: 3px solid #666; font-size: 14px; color: #333; margin-bottom: 5px; position: relative; z-index: 2; }

a { color: #333; text-decoration: none; }

.active { font-weight: bold; background: #fff0f0; }

#bar { width: 10px; padding-left: 0; background: #cc6699; border: 1px solid #cc6699; position: absolute; top: 0; left: -14px; z-index: 3; }

</style>

<script>

var obj = null;

var aLis = null;

var oBar = null;

var iTime = null;

var iSpeed = 0;

var iAcc = 3;

var onOff = 0;

var iPrev = 0;

var iNext = 0;

function goTime()

{

 for(var i = 0; i < aLis.length; i+=1)

 {

  if(aLis[i] === this)

  {

   var iTarget = (aLis[0].offsetHeight + 5) * i;

   iNext = i;

   onOff = iNext - iPrev;

   if(iTime)

   {

    clearInterval(iTime);

   }

   if(onOff>=0)

   {

    iTime = setInterval("elasticity("+ iTarget +")",35);

   }

   else

   {

    iTime = setInterval("postpone("+ iTarget +")",35);

   }

   iPrev = iNext;

  }

  aLis[i].className="";

  this.className="active";

 }

}

function elasticity(target)

{

 var top = oBar.offsetTop;

 iSpeed+=iAcc;

 top += iSpeed;

 if(top >= target)

 {

  iSpeed*=-0.7;

  if(Math.abs(iSpeed)<=iAcc)

  {

   clearInterval(iTime);

   iTime=null;

  }

  top=target;

 }

 oBar.style.top = top + "px";

}

function postpone(target)

{

 if(oBar.offsetTop===target)

 {

  clearInterval(iTime);

  iTime=null;

 }

 else

 {

  iSpeed = (target - oBar.offsetTop)/4;

  oBar.style.top = oBar.offsetTop + iSpeed + "px";

 }

}

window.onload = function(){

 obj = document.getElementById("nav");

 aLis = obj.getElementsByTagName("li");

 oBar = document.getElementById("bar");

 for(var i = 0; i < aLis.length; i+=1)

 {

  if(aLis[i].id!="bar")

  {

   aLis[i].onmouseover = goTime;

  }

 }

};

</script>

</head>

<body>

<ul id="nav">

 <li class="active"><a href="#">首页</a></li>

 <li><a href="#">脚本之家</a></li>

 <li><a href="#">妙味课程</a></li>

 <li><a href="#">联系方式</a></li>

 <li id="bar">

</ul>

</body>

</html>

登入後複製

希望本文所述對大家的JavaScript程式設計有所幫助。

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
javascript - js addClass 無效
來自於 1970-01-01 08:00:00
0
0
0
php呼叫js並取得js的回傳值問題
來自於 1970-01-01 08:00:00
0
0
0
找不到js檔案程式碼
來自於 1970-01-01 08:00:00
0
0
0
js進階教程
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板