Javascript實現的左右滑動菜單

原文鏈接:http://www.cnblogs.com/miqi2214/archive/2009/04/28/1445308.html


Javascript實現的左右滑動菜單

先看Demo便于理解:請大家往這里看

業務需求:
1. 菜單個數不固定,當菜單個數長度小于給定范圍寬度,則左右移動控制按鈕不激活(呈灰色狀態)。
2. 初始未移動,右側按鈕為灰色,左邊按鈕為彩色,提示用戶可以點擊左側的移動查看菜單超出給定范圍的部分。
3. 當移動開始,左右按鈕都應為彩色,提示用戶此時可以進行左右兩邊的移動操作。
4. 當移動結束,當前方向的控制按鈕應轉變為灰色,提示用戶此方向菜單已經移動結束。
5. 若某側控制按鈕可用,則鼠標經過此按鈕會有高亮提示。
6. 用戶點擊菜單會有高亮效果,同時下方內容模塊隨菜單點擊而變化。

在寫這個模塊的時候,本來我是打算也用jquery來實現,因為本次項目絕大部分程序都是基于jquery的,如果這個模塊用jquery來寫也是相當簡單、快捷的,但偶貌似有段時間沒寫javascrip了,所以橫下一條心,哪怕代碼再繁瑣點,手指繭再厚點,加班時間再長點,也要用javascript來寫(老本可不能忘啊!)。最后就出了這個javascript版本的,事實上花的時間也不長,呵呵。

有2個需求是我自己想做的,但因為項目時間的問題,我沒有做。首先,移動速度是勻速,如果菜單項太多,用戶用起來會不會覺得太慢?我想做個加速運動,這個用jquery寫可就太簡單了 T_T(又提到jq了,說了不提它的啊^&*&@%)。再者,由于目前移動的步長是定死了的,菜單移動過程中會出現一個菜單一半顯示在外面,一半已經移動進遮罩層,如果用戶剛好要點擊這個菜單,交互似乎就顯得不夠友好了。如果每個菜單寬度固定,可以很容易得到一個移動步長。如果菜單不固定怎么做了(我還沒想好,誰能給我一個思路?)
這兩個需求有空再添加上去。反正基本業務需求已經完成,我就稍稍偷懶一下吧。

需求說完了,說下模塊功能構成。該模塊功能由兩部分組成,一個是菜單移動,另一個是選項卡切換。這次主要是做移動程序,選項卡切換用得是自己寫的一個選項卡插件《JQuery制作的選項卡改進版》,拿來即用。

Ok,分析部分說完了。就程序本身,我覺得不是什么很難的東東。就看看左右移動的兩個具體方法:

向左移動:

 goLeftScroll:function(){var iWidth = parseInt(this.scrollDiv.style.left);//當菜單的左坐標絕對值小于等于偏移寬度(由菜單總寬度減去外部容器寬度得到,該值則為移動的路程值)if(Math.abs(iWidth) <= this.offset){//菜單左坐標在當前值基礎上減去預設的步長值this.scrollDiv.style.left = iWidth - this.step + "px";//因為移動已經開始,檢測到右側按鈕如果會灰色,則修改樣式為激活if(ctrlClass.hasClass(this.oCtrlR,this.rightEnd))ctrlClass.removeClass(this.oCtrlR,this.rightEnd);}else if(Math.abs(iWidth) > this.offset){ctrlClass.addClass(this.oCtrlL,this.leftEnd);return;}}



向右移動:

 goRightScroll:function(){var iWidth = parseInt(this.scrollDiv.style.left);if(iWidth < 0){this.scrollDiv.style.left = iWidth + this.step + "px";ctrlClass.removeClass(this.oCtrlL,this.leftEnd);}else if(iWidth ==0){ctrlClass.addClass(this.oCtrlR,this.rightEnd);return;}}



其他的也就不說了,程序很簡單的。關鍵是搞清什么需求,理清思路再來寫具體程序就很容易了。大家覺得效果還可以,就多看幾遍源碼,其義自現。我就不放獨立下載地址了,鼓勵大家多看源碼。Demo上的css、js和html都是獨立的,有需要的朋友看看Demo后自己提取吧,其實也很簡單的啦。

Demo地址:點我,點我

后記:這個demo貌似在chrome下失效,暫時我還不知道怎么回事?麻煩哪位高手能告訴我問題出在哪兒,先在此感謝了!


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276598.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276598.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276598.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

查詢用戶分配角色TCODE

s_bce_68001419 轉載于:https://www.cnblogs.com/yangliang/archive/2009/04/13/1434862.html

query string parameters什么意思_public static void main(String[] args) 是什么意思?(轉)...

public static void main(String[] args)&#xff0c;是java程序的入口地址&#xff0c;java虛擬機運行程序的時候首先找的就是main方法。一、這里要對main函數講解一下&#xff0c;參數String[] args是一個字符串數組&#xff0c;接收來自程度序執行時傳進來的參數。如果是在控…

經典算法:位圖排序

最近發現一個有趣的排序算法&#xff0c;通過位圖來完成排序。位圖排序其實就是基數排序&#xff0c;只不過位圖排序的下標是比特位。 問題描述 輸入&#xff1a;一個最多包含n個正整數的文件&#xff0c;每個數都小于n&#xff0c;其中n10^7。如果在輸入文件中有任何正數重復出…

PHP中刪除目錄的三種方法

原文鏈接&#xff1a;http://www.chinaz.com/program/2008/1022/41645.shtml PHP中刪除目錄的三種方法 1、遞規法&#xff1a;利用遞歸一層一層的刪。 deleteDir(&#xff04;dir) { if (rmdir(&#xff04;dir)false && is_dir(&#xff04;dir)) {if (&#xff04;d…

b樣條曲面繪制 opengl_CAD制圖軟件中如何利用EXCEL輸入坐標繪制曲線?

當在使用浩辰CAD制圖軟件繪制圖紙的過程中&#xff0c;經常要繪制由多個坐標點連接成的曲線時&#xff0c;有什么方便快捷的方法嗎&#xff1f;那當然是有的。利用EXCEL表格保存數據并與CAD制圖軟件巧妙地結合起來&#xff0c;就能很容易地畫出曲線。下面給大家詳細介紹一下吧&…

根據進程名殺掉進程

foreach (System.Diagnostics.Process pro in System.Diagnostics.Process.GetProcesses()){if (pro.ProcessName "Bss"){pro.Kill();break;}} 轉載于:https://www.cnblogs.com/wolfcool/archive/2009/04/17/1438284.html

JavaScript 操作 Cookie

從事web開發也有些日子了&#xff0c;cookie 是個啥差不多能說明白&#xff0c;可是實際自己一上手操作就是得去搜索(你們懂的)&#xff0c;結果被鄙視了...所以就寫一篇博文做為自己的學習筆記&#xff0c;嘿嘿&#xff0c;博客的好處在此體現出來了。 什么是 Cookie “cookie…

阿里云服務器購買該如何選擇?阿里云服務器購買步驟流程介紹...

很多第一次購買阿里云服務器&#xff0c;不知該如何選擇適合自已的服務器。其實購買阿里云服務器&#xff0c;主要是根據自已網站的流量來決定的。如果網站流量不大&#xff0c;一天只有幾百ip&#xff0c;一般選擇1核cpu&#xff0c;1G內存&#xff0c;1MB帶寬就可以用了&…

python 切片_全面解讀Python高級特性切片

大家好&#xff0c;歡迎來到Crossin的編程教室&#xff01;眾所周知&#xff0c;我們可以通過索引值(或稱下標)來查找序列類型(如字符串、列表、元組…)中的單個元素&#xff0c;那么&#xff0c;如果要獲取一個索引區間的元素該怎么辦呢&#xff1f;切片(slice)就是一種截取索…

十大Web網站漏洞掃描工具

原文鏈接&#xff1a;http://zhumeng8337797.blog.163.com/blog/static/1007689142012819111054920/ 1. Nikto 這是一個開源的Web服務器掃描程序&#xff0c;它可以對Web服務器的多種項目(包括3500個潛在的危險文件/CGI&#xff0c;以及超過900個服務器版本&#xff0c;還有250…

讀書筆記(06) - 語法基礎 - JavaScript高級程序設計

寫在開頭 本篇是小紅書筆記的第六篇&#xff0c;也許你會奇怪第六篇筆記才寫語法基礎&#xff0c;筆者是不是穿越了。 答案當然是沒有&#xff0c;筆者在此分享自己的閱讀心得&#xff0c;不少人翻書都是從頭開始&#xff0c;結果永遠就只在前幾章。對此&#xff0c;筆者換了隨…

最近做了一個安裝包的安裝流程圖

最近到做安裝包的詳細設計。下圖是安裝包的流程圖&#xff0c;如果有什么意見和建議&#xff0c;希望大家給我留言&#xff0c;大家以前討論 轉載于:https://www.cnblogs.com/zengshengping815/archive/2009/04/22/1441319.html

如何使用Nikto漏洞掃描工具檢測網站安全

轉載鏈接&#xff1a;http://www.linuxidc.com/Linux/2011-02/32000.htm 【51CTO.com 獨家特稿】隨著信息技術的發展&#xff0c;網絡應用越來越廣泛&#xff0c;很多企業單位都依靠網站來運營&#xff0c;正因為業務的不斷提升和應用&#xff0c;致使網站的安全性顯得越來越重…

什么是區塊鏈預言機(BlockChain Oracle)

預言機 Oracle 是區塊鏈中非常重要的一個功能&#xff0c;但我發現很少有人討論&#xff0c;也可能很多人對此并不了解。而網上關于預言機的文章很少&#xff0c;很多也沒有講明白&#xff0c;甚至有些還是錯誤的。所以我整理了一篇詳細的文章&#xff0c;分享給大家&#xff0…

idea tomcat啟動成功但是訪問方面都是404_IDEA相關配置【集成Tomcatamp;項目部署】...

“知其然知其所以然”始終是Brick我學習新興技術的出發點&#xff0c;那么咱們來聊聊以下幾個問題問題1&#xff1a;在編寫完web項目之后&#xff0c;我們怎么才能運行項目呢&#xff1f;--需要部署項目到Tomcat上。問題2&#xff1a;部署項目到Tomcat服務器有多少種方式&#…

程序員素質面試題

技術題做完后&#xff0c;先檢查技術是否合格&#xff0c;技術合格的并非就一定是合適人選&#xff0c;還要做素質面試。 如下是小y出的面試題&#xff1a; &#xff08;上進心&#xff09;1.你的職業規劃是怎樣的&#xff0c;未來兩年想朝哪個方向發展&#xff1f; &#xff0…

用U盤或移動硬盤安裝Windows7 (超簡單制作Win7安裝U盤方法)

轉載鏈接&#xff1a;http://www.iplaysoft.com/win7-usb-dvd-download-tool.html 最近很多人想要安裝 Windows7 &#xff0c;下載回去后的ISO鏡像文件很多人都是使用 Nero 或 IMGBurn 等工具刻錄成光盤來安裝的。但實際上&#xff0c;不需刻盤安裝Win7的方法還是有不少的。…

安裝pywin32時:ImportError: DLL load failed: %1 不是有效的 Win32 應用程序和 DLL load failed...

問題一&#xff1a;ImportError: DLL load failed: %1 不是有效的 Win32 應用程序 import pywinapi報錯:ImportError: DLL load failed: %1 不是有效的 Win32 應用程序 原因&#xff1a;與python版本不對應 pypi官網上下載whl文件,我的python 版本為27 下載第一個后安裝 下載文…

pointcut注解_Spring AOP使用指南,詳細了解AOP相關注解

Spring AOP 指導教程什么是Spring AOP spring aop可以在spring構建的系統中使用面向切面編程。當然Spring Boot也是基于Spring構建的。使用AOP可以實現諸如事務&#xff0c;日志以及安全校驗等通過切面統一完成的任務。他可以通過簡單的注解方式實現在方法執行前后來執行你自己…

C# 實現FTP上傳與下載

向FTP服務器下載文件的簡單實例 Codestring filePath "d:\\"; string fileName "lhking.txt"; //文件下載之后要保存的路徑和文件名 FtpWebRequest reqFTP; try { FileStream outputStream …