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.mzph.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 …