电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

使用Javascript開發sliding-nav帶滑動條效果的導航插件

瀏覽:108日期:2023-06-07 09:55:55

本文介紹如何使用純Javascript來開發一款簡單的JS插件,本插件可以實現鼠標懸停在導航上時,下方的滑動條自動從當前菜單滑動到所選菜單當中去。

本項目的源代碼寄宿于GitHub,記得點小星星哦:

https://github.com/dosboy0716/sliding-nav

一、前言

效果如下圖:

使用Javascript開發sliding-nav帶滑動條效果的導航插件

二、使用方法

本插件只需要如下的三步,就可以在您的項目中使用:

1、在</body>標記結束前,引用sliding-nav.js文件

2、在需要滑動條的菜單容器上加類名 sliding-nav,當前項使用類名:active

3、使用屬性來定定外觀:sn-color='顏色' sn-radius='圓度' sn-height='高度'

<script src='https://rkxy.com.cn/path/to/sliding-nav.js'></script><ul sn-color='#F00' sn-radius='0px' sn-height='3px'> <li class='active'>菜單項1</li> <li>菜單項2</li> <li>菜單項3</li><ul>三、開發過程1. 模型示例

使用Javascript開發sliding-nav帶滑動條效果的導航插件

導航菜單一般使用上圖的層次型結構,外層容器使用<ul> 標記,菜單項使用<li>標記,假設如果要顯示黃色小橫條,如何定位很重要。

經過分析,雖然在視覺上小橫條位于UL之內,為了不破壞原來導航的樣式,小黃條必須使用absolute的絕對定位,并且初始位置與ul標記相同。

因此,我們把小橫條插入<ul>標記的前面,如上面的小灰點,它就是小橫條的初始位置即(left=0,top=0)的位置。

那么我們如何讓小條看起來在菜單項的正下方呢?

把小條的top屬性賦值為菜單項的高度(即offsetHeight屬性), 把小條的left屬性賦值為菜單項的左邊距(即offsetLeft屬性)

實現上面的功能可以使用如下的代碼:

function init() { var navs = document.getElementsByClassName(’sliding-nav’); for (var i = 0; i < navs.length; i++) { //創建一個DIV與當前導航豎向對齊 var indi = document.createElement('div'); indi. indi.style.borderRadius = navs[i].getAttribute('sn-radius') || '0px' indi.style.height = navs[i].getAttribute('sn-height') || '3px' indi.style.backgroundColor = navs[i].getAttribute('sn-color') || '#F00' indi.style.position = 'absolute' indi.style.transition = '0.5s' //查找當前子菜單項,如果有類名active或者是selected就視為當前項,如果沒有使用第1項 var selected = navs[i].getElementsByClassName(’active’) if (selected.length == 0) { selected = navs[i].getElementsByClassName(’selected’) } if (selected.length == 0) { selected = navs[i].children } if (selected.length == 0) { throw Error(’Sorry, Navigation bar has no item at all!’); } selected = selected[0]; indi.style.width = selected.offsetWidth + 'px'; indi.style.top = selected.offsetHeight + 'px'; indi.style.left = selected.offsetLeft + 'px'; navs[i].parentElement.insertBefore(indi, navs[i]); //未完成,下面插入代碼以綁定事件 } }

如上的代碼構建了初始化函數init(),此函數:

查找所有含有類名sliding-nav的標記,并且按照上面的方法,在前面插入div標記充當“指示條”,并且查找“活動”的菜單項,找到后通過這個菜單項的各個屬性給“指示條”定位。

2、事件與動畫

我們把'指示條'div 標記transition屬性設置成了0.5s,那么只要在事件里直接設置該div的如下:

left屬性就可以實現'指示條'的移動 width屬性就可以設置'指示條'的寬度

所以可以在如上的代碼末尾,插入如下的代碼實現事件與動畫:

for (var j = 0; j < navs[i].children.length; j++) { hover(navs[i].children[j], function(e, elem) { indi.style.width = elem.offsetWidth + 'px'; indi.style.left = elem.offsetLeft + 'px'; }); //移出導航就恢復默認 hover(navs[i], null, function(e, elem) { indi.style.width = selected.offsetWidth + 'px'; indi.style.left = selected.offsetLeft + 'px'; }); }

其中代碼,用到了自定義函數hover,該函數類似于實現hover事件,JS原生只有mouseover和mouseout事件。

函數作用是給DOM元素綁定鼠標移入和鼠標移出事件,具體實現的過程,可以看作者原代碼。

四、所有原代碼

本文實現的所有原代碼如下,希望讀者提出更加優化的建議,我們一起打造更加唯美的前端體驗。

for (var j = 0; j < navs[i].children.length; j++) { hover(navs[i].children[j], function(e, elem) { indi.style.width = elem.offsetWidth + 'px'; indi.style.left = elem.offsetLeft + 'px'; }); //移出導航就恢復默認 hover(navs[i], null, function(e, elem) { indi.style.width = selected.offsetWidth + 'px'; indi.style.left = selected.offsetLeft + 'px'; }); }

到此這篇關于使用Javascript開發sliding-nav帶滑動條效果的導航插件的文章就介紹到這了,更多相關js 開發sliding-nav導航條插件內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 元拓建材集团官方网站 | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 南京租车,南京汽车租赁,南京包车,南京会议租车-南京七熹租车 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 储气罐,真空罐,缓冲罐,隔膜气压罐厂家批发价格,空压机储气罐规格型号-上海申容压力容器集团有限公司 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 | 气动隔膜阀_气动隔膜阀厂家_卫生级隔膜阀价格_浙江浙控阀门有限公司 | 优秀的临床医学知识库,临床知识库,医疗知识库,满足电子病历四级要求,免费试用 | 烽火安全网_加密软件、神盾软件官网 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 潍坊青州古城旅游景点攻略_青州酒店美食推荐-青州旅游网 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 施工围挡-施工PVC围挡-工程围挡-深圳市旭东钢构技术开发有限公司 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 电动高压冲洗车_价格-江苏速利达机车有限公司 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 「安徽双凯」自动售货机-无人售货机-成人用品-自动饮料食品零食售货机 | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 | 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 氧化锆陶瓷_氧化锆陶瓷加工_氧化锆陶瓷生产厂家-康柏工业陶瓷有限公司 | 深圳法律咨询【24小时在线】深圳律师咨询免费 | 千淘酒店差旅平台-中国第一家针对TMC行业的酒店资源供应平台 | 原子吸收设备-国产分光光度计-光谱分光光度计-上海光谱仪器有限公司 | 阻垢剂,反渗透阻垢剂,缓蚀阻垢剂-山东普尼奥水处理科技有限公司 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 风电变桨伺服驱动器-风电偏航变桨系统-深圳众城卓越科技有限公司 | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | b2b网站大全,b2b网站排名,找b2b网站就上地球网 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 佛山商标注册_商标注册代理|专利注册申请_商标注册公司_鸿邦知识产权 | 首页_欧瑞传动官方网站--主营变频器、伺服系统、新能源、软起动器、PLC、HMI | STRO|DTRO-STRO反渗透膜(科普)_碟滤 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 |