经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » jQuery » 查看文章
layui水平导航条三级
来源:cnblogs  作者:风雨流逝  时间:2019/3/20 8:48:54  对本文有异议

需求

需要做一个顶部的水平导航条,有三级,展开的时候二级和三级一起展开,结果如图:

 

 

效果

 

代码

下面贴上代码:

HTML代码

  1. <div class="layui-header">
  2.   <ul id="moudleMenu" class="layui-nav layui-layout-left kit-nav">
  3.     <li class="layui-nav-item nav-custom"><a href="javascript:;">一级菜单</a>
  4.       <div class="layui-nav-child layui-anim layui-anim-upbit">
  5.         <ul style="float: left; text-align: center; color: black; margin: 0;">
  6.           <li>
                <
    span>二级标题</span>
  7.             <!-- 标题下面的线 -->
  8.             <div style="height: 1px; background-color: #1e9fff; width: 90%; margin: 0 auto;">&nbsp;</div>
  9.           </li>
  10.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  11.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  12.         </ul>
  13.         <ul style="float: left; text-align: center; color: black; margin: 0;">
  14.           <li>
                <
    span>二级标题</span>
  15.             <div style="height: 1px; background-color: #1e9fff; width: 90%; margin: 0 auto;">&nbsp;</div>
  16.           </li>
  17.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  18.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  19.         </ul>
  20.       </div>
  21.     </li>
  22.     <li class="layui-nav-item nav-custom"><a href="javascript:;">一级菜单</a>
  23.       <div class="layui-nav-child layui-anim layui-anim-upbit">
  24.         <ul style="float: left; text-align: center; color: black; margin: 0;">
  25.           <li>
                <
    span>二级标题</span>
  26.             <div style="height: 1px; background-color: #1e9fff; width: 90%; margin: 0 auto;">&nbsp;</div>
  27.           </li>
  28.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  29.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  30.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  31.         </ul>
  32.         <ul style="float: left; text-align: center; color: black; margin: 0;">
  33.           <li>
                <
    span>二级标题</span>
  34.             <div style="height: 1px; background-color: #1e9fff; width: 90%; margin: 0 auto;">&nbsp;</div>
  35.           </li>
  36.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  37.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>我是独特的三级菜单</span></a></li>
  38.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  39.         </ul>
  40.         <ul style="float: left; text-align: center; color: black; margin: 0;">
  41.           <li>
                <
    span>二级标题</span>
  42.             <div style="height: 1px; background-color: #1e9fff; width: 90%; margin: 0 auto;">&nbsp;</div>
  43.           </li>
  44.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  45.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>三级菜单</span></a></li>
  46.         </ul>
  47.       </div>
  48.     </li>
  49.     <li class="layui-nav-item nav-custom"><a href="javascript:;">一级菜单</a>
  50.       <div class="layui-nav-child layui-anim layui-anim-upbit">
  51.         <ul style="float: left; text-align: center; color: black; margin: 0;">
  52.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>我上面的二级标题呢</span></a></li>
  53.           <li><a style="padding: 0;" href="'javascript:void(0);"><span>我是三级</span></a></li>
  54.         </ul>
  55.       </div>
  56.     </li>
  57.   </ul>
  58. </div>

 需要加上一个css  .layui-nav-child{top:60px !important;}

JS代码:

引用jQuery、layui.js、layui.css和element.js文件

  1. layui.use('element', function(){
  2. var element = layui.element;
  3. element.init();
    //如果不把layui自带的滑动线移除,会导致子菜单隐藏
      $(".layui-nav-bar").css("display","none");
      
  4. //鼠标悬浮
  5. navMouseOver();
  6. //鼠标移出
  7. navMouseOut();
  8. });
  9. //当鼠标经过时 设置展开菜单的宽度及位置的CSS样式
  10. function navMouseOver() {
  11. $(".nav-custom").each(function() {
  12. $(this).mouseover(function () {
  13. //当鼠标放上时显示子菜单
  14. $(this).children("div").css("visibility", "visible");
  15. $(this).children("div").children("ul").children("li").children("a").children("span").css("visibility", "visible");
  16. //ul的个数
  17. var ulCount = $(this).children("div").children("ul").length;
  18. //li的个数
  19. var liCount = $(this).children("div").children("ul").children("li").length;
  20. //定义字符最大长度
  21. var maxLength = 0;
  22. //遍历当前展开菜单的li
  23. $(this).children("div").children("ul").children("li").each(function() {
  24. //获取展开菜单的标题字符数
  25. if ($(this).children("span").text().length > maxLength) {
  26. maxLength = $(this).children("span").text().length;
  27. }
  28. //获取展开菜单的选择项的字符数
  29. if ($(this).children("span").text() == "") {
  30. if ($(this).children("a").children("span").text().length > maxLength) {
  31. maxLength = $(this).children("a").children("span").text().length;
  32. }
  33. }
  34. });
  35. //每个子菜单的ul长度 为最长字符数*字符像素px+左右空白间隔
  36. var width = maxLength * 13 + 40;
  37. //设置展开菜单的每个子菜单的ul长度 为最长字符数*字符像素px
  38. $(".nav-custom").children("div").children("ul").css("width", width + "px");
  39. //设置展开菜单的总div宽度 为子菜单的ul长度*子菜单ul个数
  40. $(".nav-custom").children("div").css("width", width * ulCount + "px");
  41. //设置展开菜单的总div偏移居中
  42. $(".nav-custom").children("div").css("left", (-1 * width * ulCount) / 2 + ($(".nav-custom").width()) / 2 + "px");
  43. });
  44. });
  45. }
  46. //当鼠标移出时,立即隐藏子菜单(因为不设置隐藏的话,来回切会有延迟导致未隐藏的子菜单变形)
  47. function navMouseOut() {
  48. $(".nav-custom").each(function () {
  49. $(this).mouseout(function () {
  50. //设置div不可见
  51. $(this).children("div").css("visibility", "hidden");
  52. //设置div中的字不可见
  53. $(this).children("div").children("ul").children("li").children("a").children("span").css("visibility", "hidden");
  54. });
  55. });
  56. }

 样式的话,按照自己喜欢的调吧(`?ω?´)

 

原文链接:http://www.cnblogs.com/LYF1997/p/10556603.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号