JS實(shí)現(xiàn)橫向拉伸動(dòng)感伸縮菜單效果代碼
本文實(shí)例講述了JS實(shí)現(xiàn)橫向拉伸動(dòng)感伸縮菜單效果代碼。分享給大家供大家參考。具體如下:
這是一款JS實(shí)現(xiàn)的縱向拉伸變橫向拉伸,動(dòng)感伸縮菜單,緊身排列的CSS菜單,可用在博客等重要的位置部分作菜單,學(xué)習(xí)JavaScript前端設(shè)計(jì)的也可以作為參考范例。
運(yùn)行效果截圖如下:

在線演示地址如下:
http://demo.jb51.net/js/2015/js-row-show-menu-style-codes/
具體代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>有彈性的菜單</title>
<style>
*{ margin:0px; padding:0px;} body { background:#fff;} .naver{list-style-type:
none; width:700px; overflow:hidden; margin:100px auto 0;} .naver li{ width:100px;
height:50px; overflow:hidden; font-size:16px; text-align:center; cursor:
pointer; } .naver li a,.naver li a:hover{display: block;width:100px; height:50px;
line-height: 50px; color:#FFF; text-decoration: none; } .co1{ background:#649e37}
.co2{ background:#028fbc}
</style>
<script type="text/javascript">
window.onload = function() {
var oUl = document.getElementById("nav");
var aLi = oUl.getElementsByTagName("li");
var i = 0;
for (i = 0; i < aLi.length; i++) {
aLi[i].timer = null;
aLi[i].speed = 0;
aLi[i].onmouseover = function() {
startMove(this, 250);
};
aLi[i].onmouseout = function() {
startMove2(this, 100);
};
}
};
function startMove(obj, iTarget) {
if (obj.timer) {
clearInterval(obj.timer);
}
obj.timer = setInterval(function() {
doMove(obj, iTarget);
}, 30)
};
function doMove(obj, iTarget) {
obj.speed += 3;
if (Math.abs(iTarget - obj.offsetWidth) < 1 && Math.abs(obj.speed) < 1) {
clearInterval(obj.timer);
obj.timer = null;
}
else {
if (obj.offsetWidth + obj.speed >= iTarget) {
obj.speed *= -0.7;
obj.style.width = iTarget + "px";
}
else {
obj.style.width = obj.offsetWidth + obj.speed + "px";
}
}
};
function startMove2(obj, iTarget) {
if (obj.timer) {
clearInterval(obj.timer);
}
obj.timer = setInterval(function() {
doMove2(obj, iTarget);
}, 30)
};
function doMove2(obj, iTarget) {
obj.speed -= 3;
if (Math.abs(iTarget - obj.offsetWidth) < 1 && Math.abs(obj.speed) < 1) {
clearInterval(obj.timer);
obj.timer = null;
}
else {
if (obj.offsetWidth + obj.speed <= iTarget) {
obj.speed *= -0.7;
obj.style.width = iTarget + "px";
}
else {
obj.style.width = obj.offsetWidth + obj.speed + "px";
}
}
};
</script>
</head>
<body>
<ul id="nav" class="naver">
<li class="co1">
<a href="#">首頁(yè)</a>
</li>
<li class="co2">
<a href="#">愛(ài)好</a>
</li>
<li class="co1">
<a href="#">作品</a>
</li>
<li class="co2">
<a href="#">聯(lián)系</a>
</li>
<li class="co1">
<a href="#">博客</a>
</li>
</ul>
</body>
</html>
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
相關(guān)文章
微信小程序封裝網(wǎng)絡(luò)請(qǐng)求和攔截器實(shí)戰(zhàn)步驟
這篇文章主要介紹了微信小程序封裝網(wǎng)絡(luò)請(qǐng)求和攔截器實(shí)戰(zhàn)步驟,這樣可以提高開(kāi)發(fā)效率,減少代碼重復(fù),同時(shí)也可以提高代碼的可維護(hù)性和可讀性2023-03-03
一個(gè)網(wǎng)頁(yè)標(biāo)題title的閃動(dòng)提示效果實(shí)現(xiàn)思路
通過(guò)網(wǎng)頁(yè)title來(lái)提示用戶(hù)有新消息這個(gè)功能很常見(jiàn),下面有個(gè)不錯(cuò)的示例,大家可以參考下2014-03-03
原生JS綁定滑輪滾動(dòng)事件兼容常見(jiàn)瀏覽器
滑輪滾動(dòng)頁(yè)面的事件在網(wǎng)頁(yè)特效中進(jìn)場(chǎng)遇到,下面通過(guò)示例為大家介紹下原生JS綁定滑輪滾動(dòng)事件并兼容瀏覽器2014-06-06
對(duì)layer彈出框中icon數(shù)字參數(shù)的說(shuō)明介紹
今天小編就為大家分享一篇對(duì)layer彈出框中icon數(shù)字參數(shù)的說(shuō)明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
微信小程序使用progress組件實(shí)現(xiàn)顯示進(jìn)度功能【附源碼下載】
這篇文章主要介紹了微信小程序使用progress組件實(shí)現(xiàn)顯示進(jìn)度功能,涉及progress組件相關(guān)屬性設(shè)置操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2017-12-12
用JavaScript實(shí)現(xiàn)字符串切分功能
用JavaScript實(shí)現(xiàn)字符串切分功能...2007-01-01

