- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈不用Cookie实现高亮Javascript菜单效果
浅谈不用Cookie实现高亮Javascript菜单效果
笔者经常采用的高亮Javascript菜单效果设计方式,一般的网页至少都有两级菜单,第一个是顶部的总导航条菜单,另一个是左侧的分类导航菜单。一般要求在一级菜单高亮下二级菜单也能记录当前状态。
对于一个包含顶部菜单的页头区域如果固定不变的,也就是它不用每次都重新加载,这种情况下用纯CSS或JS方式可以很容易地实现,但今天我要谈的不是这种,今天说的是一级菜单和二级菜单在每个页面中都是动态加载的,也就是它们是作为用户控件的方式载入的。这种情况下要想高亮Javascript菜单效果的状态是一件比较困难的事情。
当然,你可能会说,用cookie可以记录每个页面加载时上次记录的高亮状态,是的,它确实可以记录,但是这种方式在一些复杂的包含许多子页面的应用中,会给用户造成许多困扰和麻烦。比如在cookie生存周期内,重新打开这个项目时,此时cookie的生存周期还没有完全结束,它还记录着上次保存的状态,而这时页面地址已经发生了变化,那么当前高亮的菜单所指向的就不是用户所希望看到的页面。实践证明,这个cookie的生存周期无论你设置多长都不能完美解决用户恶意刷新页面的状况。这确实是一件糟糕的事情!
那么有没有一种较好的办法来解决这种状况呢?
答案是有的。我们知道要解决这个问题,最理想的办法是在每个页面加载时,根据页面的url地址显式地设置当前菜单的高亮样式。这能完美地解决此类问题,并且这种方式无论用户如何恶意点击刷新按钮,高亮状态依旧保持不变。 知道了原理,要实现起来就容易多了。
【结构层】
一级菜单结构层:
ul?id=menu?
??lia?href=default.html首页/ SPANa/ SPANli???????????????? ?
??lia?href=clothing.html服装用品/ SPANa/ SPANli?
??lia?href=house.html家居用品/ SPANa/ SPANli???????????? ?
??lia?href=cosmetic.html化妆用品/ SPANa/ SPANli???? ?
/ SPANul?
可以看到在这个一级菜单中,其链接地址一般是没有参数值的。 二级菜单的结构层:
/*一级菜单的三种样式设置*/?
#menu?li?a.normal{background:#fff;}//普通样式 ?
#menu?li?a.over{background:#00ff00;}?//翻滚样式 ?
#menu?li?a.cur{background:#ff0000;color:#fff;}?//高亮样式 ?
/*二级菜单的三种样式设置*/?
#othermenu?li?a.normal{background:#fff;}?//普通样式 ?
#othermenu?li?a.over{background:#AA7F00;color:#fff;}?//翻滚样式 ?
#othermenu?li?a.cur{background:#7F0000;color:#fff;}?//高亮样式?
与一级菜单不同的是,我们将二级菜单中的链接地址加入两个参数值,pId参数指向的是顶部一级菜单的的序号,而sId则是菜单自己的顺序号。我们将这两个菜单的总容器ul都设置了两个不同中的ID,它们需要在JS中调用,所以千万不能少。
【样式层】
关于样式,其实都没有什么特别的地方,你可以随心所意地设置成你想要的样式,只是需要注意的地方是,我们需要单独设置高亮Javascript菜单效果的三种状态样式,以供JS动态调用。
/*一级菜单的三种样式设置*/?
#menu?li?a.normal{background:#fff;}//普通样式 ?
#menu?li?a.over{background:#00ff00;}?//翻滚样式 ?
#menu?li?a.cur{background:#ff0000;color:#fff;}?//高亮样式 ?
/*二级菜单的三种样式设置*/?
#othermenu?li?a.normal{background:#fff;}?//普通样式 ?
#othermenu?li?a.over{background:#AA7F00;color:#fff;}?//翻滚样式 ?
#othermenu?li?a.cur{background:#7F0000;color:#fff;}?//高亮样式?
【行为层】
因为要在行为层中控制菜单的三种状态,所以对于A链接标签,我们就不使用hover伪类来达到菜单的三种动态行为了,我们可以用onmouseover、onmouseout和onclick来模仿伪类的三种行为,这样好便于js的动态调整。并且为了达到行为、样式和
您可能关注的文档
最近下载
- 网络预约出租汽车企业安全生产责任制和事故报告制度.pptx
- SY-T 5051-2009 钻具稳定器-石油天然气行业标准.pdf VIP
- 22G101-3 混凝土结构施工图平面整体表示方法制图规则和构造详图(独立基础、条形基础、筏形基础、桩基础).docx
- 模板支架验收记录表.doc
- 标准个人租房合同模板.pdf VIP
- 2024年全国疾控系统大学习实验室质量控制规范答案.docx VIP
- 2024-2025学年初中道德与法治七年级(全一册)统编版(五四学制)(2024)教学设计合集.docx
- 小学劳动教育五年级下册第五单元2《维修凳子》教学设计.docx
- 北师大版五年级数学上册第五单元《分数的意义》(大单元教学设计).docx VIP
- 简易呼吸球囊.ppt
文档评论(0)