HTML+CSS+Query实现二级菜单

news2024/11/25 9:47:51

在这里插入图片描述
在网页设计中,导航菜单是非常重要的部分之一,尤其是具有二级下拉菜单的导航栏,可以提升用户体验。本文将通过HTML、CSS和jQuery实现一个具有二级菜单标题的导航栏,并详细讲解每一步的实现过程。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>我的博客</title>
    <link href="./css/base-v3.0.min.css" type="text/css" rel="stylesheet" />
    <link href="./css/base.css" type="text/css" rel="stylesheet" />
    <script src="./js/jquery.min.js"></script>
  </head>
  <body>
    <header class="ys_header">
      <div class="ys_hd_pc">
        <div class="mod_head">
          <div class="mod_head_bt">
            <div class="ys_cont1400">
              <div class="mod_head_bt_list std_parga1">
                <ul>
                  <li class="act yxnav_active1">
                    <a href="/">
                      <p class="mhbl_link1">博客首页</p>
                      <!-- 修改后的文字 -->
                    </a>
                  </li>
                  <li class="">
                    <a href="/person">
                      <p class="mhbl_link1">关于我</p>
                      <!-- 修改后的文字 -->
                    </a>

                    <!-- 二级下拉 -->

                    <div class="mhbl_pull pro_pull clearfix">
                      <div class="pro_pull_le fl">
                        <div class="pro_pull_le_li">
                          <div class="pro_pull_le_tp">
                            <a href="/person" target="_self">
                              <div class="pplt_wrap">
                                <p>个人简介</p>
                                <!-- 修改后的文字 -->
                                <img
                                  src="https://cdn-www.huorong.cn/Public/Cn/images/icon10.svg"
                                  alt=""
                                />
                              </div>
                            </a>
                          </div>

                          <div class="pro_pull_le_info">
                            <p>了解更多关于我的信息</p>
                            <!-- 修改后的文字 -->
                          </div>
                        </div>
                        <div class="pro_pull_le_li">
                          <div class="pro_pull_le_tp">
                            <a href="/person/person5" target="_self">
                              <div class="pplt_wrap">
                                <p>我的项目</p>
                                <!-- 修改后的文字 -->
                                <img
                                  src="https://cdn-www.huorong.cn/Public/Cn/images/icon10.svg"
                                  alt=""
                                />
                              </div>
                            </a>
                          </div>

                          <div class="pro_pull_le_info">
                            <p>查看我的个人项目</p>
                            <!-- 修改后的文字 -->
                          </div>
                        </div>
                      </div>

                      <div class="pro_pull_ri fr">
                        <div class="pro_pull_ri_parga">
                          <p>最新项目下载</p>
                          <!-- 修改后的文字 -->
                        </div>

                        <div class="pro_pull_ri_btn">
                          <div class="pprb_li">
                            <div class="std_btn1">
                              <a
                                data-url="https://www.huorong.cn/product/downloadHr60.php?pro=hr60"
                                class="std_btn1_box std_parga1 new-down"
                              >
                                <p>下载</p>
                                <!-- 修改后的文字 -->
                                <div class="std_btn1_box_icon">
                                  <img
                                    src="https://cdn-www.huorong.cn/Public/Uploads/uploadfile/images/20240301/icon091.svg"
                                    alt="icon09_1.svg"
                                  />
                                  <img
                                    src="https://cdn-www.huorong.cn/Public/Uploads/uploadfile/images/20240301/icon09.svg"
                                    alt="icon09.svg"
                                  />
                                </div>
                              </a>
                            </div>

                            <div class="pprb_li_parga">
                              <p>*支持Windows,推荐下载</p>
                              <!-- 修改后的文字 -->
                            </div>
                          </div>
                          <div class="pprb_li">
                            <div class="std_btn3">
                              <a
                                data-url="https://www.huorong.cn/product/downloadHr60.php?pro=hr60&amp;plat=arm64UrlAll"
                                class="std_btn3_box std_parga1 new-down"
                              >
                                <p>ARM</p>
                                <!-- 修改后的文字 -->
                                <div class="std_btn1_box_icon">
                                  <img
                                    src="https://cdn-www.huorong.cn/Public/Uploads/uploadfile/images/20240301/icon071.svg"
                                    alt="icon07_1.svg"
                                  />
                                  <img
                                    src="https://cdn-www.huorong.cn/Public/Uploads/uploadfile/images/20240301/icon07.svg"
                                    alt="icon07.svg"
                                  />
                                </div>
                              </a>
                            </div>

                            <div class="pprb_li_parga">
                              <p>*支持Windows,ARM架构</p>
                              <!-- 修改后的文字 -->
                            </div>
                          </div>
                          <div class="pprb_li">
                            <div class="std_btn3">
                              <a
                                data-url="https://www.huorong.cn/product/downloadHr60.php?pro=hr60&amp;plat=x86UrlAll"
                                class="std_btn3_box std_parga1 new-down"
                              >
                                <p>32位版</p>
                                <!-- 修改后的文字 -->
                                <div class="std_btn1_box_icon">
                                  <img
                                    src="https://cdn-www.huorong.cn/Public/Uploads/uploadfile/images/20240301/icon081.svg"
                                    alt="icon08_1.svg"
                                  />
                                  <img
                                    src="https://cdn-www.huorong.cn/Public/Uploads/uploadfile/images/20240301/icon08.svg"
                                    alt="icon08.svg"
                                  />
                                </div>
                              </a>
                            </div>

                            <div class="pprb_li_parga">
                              <p>*支持Windows,X86架构32</p>
                              <!-- 修改后的文字 -->
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </li>
                  <li class="">
                    <a href="/enterprise">
                      <p class="mhbl_link1">关于我们</p>
                      <!-- 修改后的文字 -->
                    </a>

                    <div class="mhbl_pull pro_pull clearfix">
                      <div class="pro_pull_le fl">
                        <div class="pro_pull_le_tp">
                          <a href="/enterprise" target="_self">
                            <div class="pplt_wrap">
                              <p>团队</p>
                              <!-- 修改后的文字 -->
                              <img
                                src="https://cdn-www.huorong.cn/Public/Cn/images/icon10.svg"
                                alt=""
                              />
                            </div>
                          </a>
                        </div>

                        <div class="pro_pull_le_info">
                          <p>当前团队</p>
                          <!-- 修改后的文字 -->
                        </div>
                      </div>

                      <div class="pro_pull_ri fr">
                        <div class="pro_pull_ri_parga">
                          <p>我们</p>
                          <!-- 修改后的文字 -->
                        </div>

                        <div class="pro_pull_ri_btn">
                          <div class="pprb_li">
                            <div class="std_btn1">
                              <a
                                href="/register"
                                target="_self"
                                class="std_btn1_box std_parga1"
                              >
                                <p>加入我们</p>
                                <!-- 修改后的文字 -->
                                <div class="std_btn1_box_icon">
                                  <img
                                    src="https://cdn-www.huorong.cn/Public/Uploads/uploadfile/images/20240301/icon091-301.svg"
                                    alt="icon09_1.svg"
                                  />
                                  <img
                                    src="https://cdn-www.huorong.cn/Public/Uploads/uploadfile/images/20240301/icon09-802.svg"
                                    alt="icon09.svg"
                                  />
                                </div>
                              </a>
                            </div>

                            <div class="pprb_li_parga">
                              <p>*加入我们30</p>
                              <!-- 修改后的文字 -->
                            </div>
                          </div>
                          <div class="pprb_li">
                            <div class="std_btn3">
                              <a
                                href="https://lic.buy.huorong.cn/html/dist/index.html#/login"
                                target="_blank"
                                class="std_btn3_box std_parga1"
                              >
                                <p>已经加入</p>
                                <!-- 修改后的文字 -->
                                <div class="std_btn1_box_icon">
                                  <img
                                    src="https://cdn-www.huorong.cn/Public/Uploads/uploadfile/images/20240301/icon051.svg"
                                    alt="icon05_1.svg"
                                  />
                                  <img
                                    src="https://cdn-www.huorong.cn/Public/Uploads/uploadfile/images/20240301/icon05.svg"
                                    alt="icon05.svg"
                                  />
                                </div>
                              </a>
                            </div>

                            <div class="pprb_li_parga">
                              <p>*立即登录</p>
                              <!-- 修改后的文字 -->
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </li>
                  <li class="">
                    <a href="/appstore">
                      <p class="mhbl_link1">资源库</p>
                      <!-- 修改后的文字 -->
                    </a>
                  </li>
                  <li class="">
                    <a href="/technical-partner/agent-cooperation">
                      <p class="mhbl_link1">合作伙伴</p>
                      <!-- 保持不变 -->
                    </a>

                    <div class="mhbl_pull about_pull">
                      <ul>
                        <!-- 选中添加act yxnav_active2类名 -->

                        <li class="">
                          <a href="/technical-partner/agent-cooperation">
                            <p>我的空间</p>
                            <!-- 修改后的文字 -->
                          </a>
                        </li>
                        <li class="">
                          <a href="/technical-partner/technical-cooperation">
                            <p>求职信息</p>
                            <!-- 修改后的文字 -->
                          </a>
                        </li>
                      </ul>
                    </div>
                  </li>
                </ul>
              </div>
              <div class="mod_head_bt_trial">
                <div class="mod_head_tp">
                  <div class="std_btn1">
                    <a
                      href="/register"
                      target="_self"
                      class="std_btn1_box std_parga1"
                    >
                      <p>为我打call</p>
                      <!-- 修改后的文字 -->
                    </a>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </header>
    <script>
      // 一级导航鼠标经过变化
      $('.mod_head_bt_list>ul>li').hover(
        function () {
          // 添加导航激活类名 yxnav_active1,并移除兄弟节点的类名
          $(this)
            .addClass('yxnav_active1')
            .siblings()
            .removeClass('yxnav_active1')
          // 展开子菜单
          $(this).find('.mhbl_pull').stop().slideDown()
        },
        function () {
          // 移除激活类名
          $(this).removeClass('yxnav_active1')
          // 确保激活项保留类名
          $('.mod_head_bt_list>ul>li.act').addClass('yxnav_active1')
          // 收起子菜单
          $(this).find('.mhbl_pull').stop().slideUp()
        }
      )
      // 当用户将鼠标悬停在导航项上时,通过 jQuery 代码中 slideDown() 函数可以将 .mhbl_pull 从隐藏状态(display: none;)切换到可见状态,且带有滑动动画,从而展示子菜单。鼠标移出时则通过 slideUp() 将其隐藏。
    </script>
  </body>
</html>

@charset "utf-8";

body {
  font-family: "PingFang SC", "Microsoft Yahei";
}


/* 规范-start */
/* 规范-start */
@main-color: #FF8400;
@auxi-bgcolor1: #F5F5F5;
@auxi-bgcolor2: #FBF5EF;
@font-title2: 42px;
@font-title3: 36px;
@font-title4: 24px;
@font-title5: 20px;
@font-parga1: 16px;
@font-parga2: 18px;
@std-padding1: 120px;
@std-padding2: 80px;
@std-margin1: 30px;

@font-color: #191919;
@secondary-color: #5A5A5A;
@bg-color: #FBFBFB;
@border-color: #DFDFDF;
@shadow-color: rgba(113, 113, 113, 0.10);
@highlight-color: var(--main-color);

@font-face {
  font-family: 'huorong-bold';
  src: url('../fonts/ROBOTO-BOLD/roboto-bold-3-webfont.eot');
  src: url('../fonts/ROBOTO-BOLD/roboto-bold-3-webfont.eot?#iefix') format('embedded-opentype'),
    url('../fonts/ROBOTO-BOLD/roboto-bold-3-webfont.woff2') format('woff2'),
    url('../fonts/ROBOTO-BOLD/roboto-bold-3-webfont.woff') format('woff'),
    url('../fonts/ROBOTO-BOLD/roboto-bold-3-webfont.ttf') format('truetype'),
    url('../fonts/ROBOTO-BOLD/roboto-bold-3-webfont.svg#robotobold') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

/* 分享翻译 */
.ys_wechat_cont_parga {
  p::before {
    /* 分享中文版本 */
    content: '分享到 - 微信';
    /* 分享英文版本 */
    /* content: 'Share the - weixin'; */
  }
}

.pro_pull_ri_btn .std_btn1_box,
.pro_pull_ri_btn .std_btn3_box {
  display: flex;
  align-items: center;
}

/* 导航默认选中 */
.yxnav_active1 {}

.yxnav_active2 {}

.yongsy-pc-ph-table {

  th,
  td {
    padding: 5px 10px;
    border: 1px solid #DDD;
  }
}

.slick-list {
  min-width: 100%;
}

.std_title2,
.yxedr_active h2 {
  font-size: @font-title2;
  line-height: 1.2;
  color: #191919;
}

.std_title3,
.yxedr_active h3 {
  font-size: @font-title3;
  line-height: 1.5;
  color: #232323;
}

.std_title4,
.yxedr_active h4 {
  font-size: @font-title4;
  line-height: 1.3;
  color: #232323;
}

.std_title5,
.yxedr_active h5 {
  font-size: @font-title5;
  line-height: 1.7;
  color: #333;
}

.std_parga1 {
  p {
    font-size: @font-parga1;
    line-height: 1.75;
    color: #5A5A5A;
  }
}

.std_parga2 {
  p {
    font-size: @font-parga2;
    line-height: 1.7;
    color: #666;
  }
}

.std_padding1 {
  padding-top: @std-padding1;
  padding-bottom: @std-padding1;
}

.std_padtop1 {
  padding-top: @std-padding1;
}

.std_padbot1 {
  padding-bottom: @std-padding1;
}

.std_marbotp1 {
  margin-bottom: @std-padding1;
}

.std_padding2 {
  padding-top: @std-padding2;
  padding-bottom: @std-padding2;
}

.std_padtop2 {
  padding-top: @std-padding2;
}

.std_padbot2 {
  padding-bottom: @std-padding2;
}

.std_margin1 {
  margin-top: @std-margin1;
}

.std_btn1,
.std_btn2,
.std_btn3,
.std_btn4 {
  display: inline-block;

  p {
    line-height: 52px;
    color: #fff;
    transition: all .36s;
  }
}

.std_btn1_box,
.std_btn2_box,
.std_btn3_box {
  display: block;
  padding: 0 42px;
  transition: all .36s;
  border-radius: 2px;
  border: 1px solid @main-color;
  background: @main-color;
}

.std_btn2,
.std_btn3 {
  p {
    color: @main-color;
  }
}

.std_btn2_box {
  background: #fff;
  border: 1px solid #fff;
}

.std_btn3_box {
  background: transparent;
}

.std_btn4 {
  p {
    line-height: 54px;
    color: #fff;
    position: relative;
    z-index: 5;
  }

  .std_btn4_box {
    display: block;
    padding: 0 73px;
    transition: all .36s;
    border-radius: 2px;
    position: relative;
    overflow: hidden;

    &::before {
      content: "";
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, #FDC05F 0%, #B66C2E 100%);
      position: absolute;
      top: 0;
      left: 0;
      transition: all .36s;
    }

    &::after {
      content: "";
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, #FF9D00 0%, #B66C2E 100%);
      position: absolute;
      top: 0;
      left: 0;
      transition: all .36s;
      opacity: 0;
    }
  }
}

.std_btn5_box {
  display: flex;
  align-items: center;

  p {
    color: @main-color;
  }

  img {
    width: 15px;
    margin-left: 6px;
  }
}

.ys_hd_pc {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  transition: all .5s ease-in-out;
}

// Header Styles
.ys_header {
  .ys_hd_pc {
    .mod_head {
      background: #E2E2E2;

      // Bottom section styles
      .mod_head_bt {
        background: rgba(255, 255, 255, 0.95);
        position: relative;

        &::after {
          content: "";
          width: 100%;
          height: 1px;
          background: #E2E2E2;
          position: absolute;
          bottom: 0;
          left: 0;
        }

        .yxnav_active1 {
          border-bottom: 2px solid #007BFF; // 示例选中样式
        }

        .mhbl_link1 {
          color: #191919 !important;
          line-height: 46px !important;
          transition: all .36s;

          &:hover {
            color: #007BFF;
          }
        }

        .mod_head_bt_trial {
          position: relative;
          cursor: pointer;
          z-index: 5;

          .std_btn1 p {
            line-height: 44px;
          }
        }

        .mod_head_bt_list {
          >ul {
            display: flex;
            margin: 0 -45px;

            >li {
              padding: 0 45px;
              position: relative;

              &.yxnav_active1 a {
                color: #007BFF;
              }

              &:hover>.yx_downlist {
                display: block;
              }

              .mhbl_link1 {
                color: #191919 !important;
                line-height: 46px !important;
                transition: all .36s;
              }

              .about_pull {
                width: 100%;
                border-top: 1px solid #DFDFDF;
                background: #FBFBFB;
                padding: 25px 0;
              }

              .about_pull li {
                margin-bottom: 16px;
              }

              .about_pull p {
                color: #5A5A5A;
                transition: all .36s;
                text-align: center;
                line-height: 2.5;
              }

              .about_pull li:last-child {
                margin-bottom: 0;
              }

              .about_pull li.yxnav_active2 p {
                color: @main-color;
              }

              .mhbl_pull {
                position: absolute;
                top: 46px;
                left: 0;
                display: none;
                box-shadow: 0px 4px 10.2px 0px rgba(113, 113, 113, 0.10);
              }

              .pro_pull {
                width: 597px;
                border-top: 1px solid #DFDFDF;
                background: #fff;
              }

              .pro_pull_le {
                width: calc(100% - 330px);
                padding: 28px 42px 28px 45px;
                background: #fff;

                .pro_pull_le_li {
                  .pro_pull_le_tp {
                    .pplt_wrap p {
                      font-size: 18px;
                      line-height: 1.7;
                      color: var(@main-color);
                      font-weight: bold;
                      margin-right: 10px;
                    }

                    .pplt_wrap img {
                      width: 8px;
                      position: relative;
                      top: 10px;
                    }

                    .pplt_wrap {
                      display: flex;
                      align-items: flex-start;
                    }
                  }

                  &:nth-child(1) {
                    .pro_pull_le_tp {
                      padding-top: 0;
                    }
                  }
                }

                .pro_pull_le_info {
                  margin-top: 10px;
                  padding-bottom: 15px;
                  border-bottom: 1px solid #000;

                  p {
                    font-size: 14px;
                    line-height: 1.75;
                    color: #232323;
                  }
                }

              }

              .pro_pull_ri {
                padding: 30px 40px 67px;
                width: 330px;
                background: @auxi-bgcolor1;

                .pro_pull_ri_parga p {
                  font-size: 14px;
                  line-height: 1.75;
                  color: #232323;
                }


                .pro_pull_ri_btn {
                  margin-top: 16px;

                  .pprb_li_parga {
                    margin-top: 8px;

                    .pprb_li {
                      margin-top: 20px;

                      &:first-child {
                        margin-top: 0;
                      }


                    }

                    p {
                      font-size: 14px;
                      line-height: 1.75;
                      color: #A5A5A5;
                    }
                  }


                }

                .std_btn1,
                .std_btn2,
                .std_btn3,
                .std_btn4 {
                  display: inline-block;
                }

                .std_btn1_box_icon {
                  width: 16px;
                  height: 16px;
                  position: relative;
                  margin-left: 3px;
                }

                .std_btn1_box_icon img {
                  width: auto;
                  height: 100%;
                  position: absolute;
                  top: 0;
                  left: 50%;
                  transform: translateX(-50%);
                  transition: all .36s;
                }

                .std_btn3_box {
                  display: flex !important;
                  align-items: center;
                }
              }
            }
          }

        }
      }

      .ys_cont1400 {
        display: flex;
        align-items: center;
        justify-content: space-between;

        .mod_head_logo {
          padding: 15px 0;

          img {
            max-width: 100%;
          }
        }

        .mod_head_login {
          display: flex;
          align-items: center;

          .mhbl_link1 {
            padding: 0 15px;
          }
        }
      }

      .yx_downlist {
        display: none;
        position: absolute;
        background-color: #fff;
        z-index: 1000;
        min-width: 180px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
        border-radius: 4px;
        margin-top: 10px;

        &::before {
          content: "";
          position: absolute;
          top: -8px;
          left: 20px;
          border-width: 8px;
          border-style: solid;
          border-color: transparent transparent #fff transparent;
        }

        ul {
          padding: 10px 0;

          li {
            padding: 8px 20px;
            color: #333;

            a {
              color: inherit;
              text-decoration: none;
              display: block;

              &:hover {
                background-color: #f5f5f5;
              }
            }
          }
        }
      }

      .mod_foot {
        background: #191919;
        padding: 40px 0;
        color: #fff;
        text-align: center;

        .footer_list {
          display: flex;
          justify-content: center;
          flex-wrap: wrap;

          >li {
            margin: 0 15px;
            padding: 5px 0;

            a {
              color: #fff;
              text-decoration: none;

              &:hover {
                text-decoration: underline;
              }
            }
          }
        }
      }


      // Optional dropdown style
      .mhbt_pull {
        width: 100%;
        top: 46px;
        border-bottom: none;
        background: transparent;
        box-shadow: none;
        padding: 20px 0 0 !important;

        .mhbt_pull_cont {
          border-radius: 5px;
          border-bottom: 1px solid @border-color;
          background: @bg-color;
          box-shadow: 0px 4px 10.2px 0px @shadow-color;
          padding: 30px 0;

          li {
            margin-bottom: 20px;

            &:last-child {
              margin-bottom: 0;
            }

            &.active a {
              color: @highlight-color !important;
            }

            a {
              font-size: 14px;
              line-height: 2;
              color: @secondary-color !important;
              transition: all 0.36s;
              text-align: center;
              display: block;
            }
          }
        }
      }
    }

  }
}

// 主体内容
.ys_main {
  margin-top: 120px;

  /* 规范-end */
  /* - banner - start*/
  .ys_banner {
    width: 100%;
    position: relative;

    .ys_ban_slick {

      .ys_ban_li {
        .ys_ban_imgbox {
          position: relative;
          z-index: 1;

          img {
            width: 100%;
          }

          &::before {
            content: "";
            display: block;
            position: absolute;
            left: 0;
            top: 0;
            z-index: 3;
            width: 100%;
            height: 100%;
            /* background: rgba(0, 0, 0, .3); */
          }

          .ys_ban_ph {
            display: none;
          }

          // .ys_ban_pc,
          // .ys_nyban_pc {
          //   display: none;
          // }

          .ys_ban_video {
            position: absolute;
            left: 50%;
            top: 50%;
            z-index: 2;
            transform: translate(-50%, -50%);
            width: 100%;
            object-fit: cover;
          }

          .ys_ban_video {
            top: 0;
            left: 0;
            transform: inherit;
          }

        }


      }


      .ys_ban_li.act.slick-active {
        .ys_ban_title1 {
          animation-delay: .1s;
        }

        .ys_ban_title2 {
          animation-delay: .2s;
        }

        .ys_ban_info {
          animation-delay: .3s;
        }

        .ys_ban_info_btn {
          animation-delay: .4s;
        }
      }

      .slick-dots {
        bottom: 50px;
      }
    }
  }
}

实现二级菜单标题的HTML+CSS+jQuery示例
在网页设计中,导航菜单是非常重要的部分之一,尤其是具有二级下拉菜单的导航栏,可以提升用户体验。本文将通过HTML、CSS和jQuery实现一个具有二级菜单标题的导航栏,并详细讲解每一步的实现过程。

  1. HTML结构
    HTML代码定义了整个导航栏的结构,包括一级菜单项和对应的二级菜单项。以下是示例代码:

html
复制代码

二级菜单示例 2. CSS样式 使用CSS来美化导航栏及其下拉菜单。我们需要确保二级菜单在正常情况下是隐藏的,只有当用户将鼠标悬停在相应的一级菜单项上时才显示。

css
复制代码
/* 基本样式 */
.nav_container {
width: 100%;
background-color: #333;
}

.nav_menu ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
}

.nav_item {
position: relative;
}

.nav_item > a {
display: block;
padding: 15px 20px;
color: #fff;
text-decoration: none;
}

/* 二级菜单样式 */
.submenu {
position: absolute;
top: 100%;
left: 0;
background-color: #444;
display: none;
}

.submenu ul {
list-style: none;
padding: 0;
margin: 0;
}

.submenu li a {
display: block;
padding: 10px 20px;
color: #fff;
text-decoration: none;
}

.submenu li a:hover {
background-color: #555;
}
3. jQuery实现交互效果
通过jQuery实现当用户将鼠标悬停在一级菜单项上时,二级菜单显示的效果。

javascript
复制代码
$(document).ready(function () {
// 鼠标悬停在导航项时,显示二级菜单
$(‘.nav_item’).hover(
function () {
$(this).find(‘.submenu’).stop().slideDown();
},
function () {
$(this).find(‘.submenu’).stop().slideUp();
}
);
});
解释说明
HTML结构:一级菜单使用

  • 标签组织,每个一级菜单项使用
  • 标签表示,其中包含一个链接标签。如果该菜单项有二级菜单,则包含一个

CSS样式:

一级菜单项的链接设置为块级元素,并通过padding来控制其点击区域和视觉效果。
二级菜单项默认使用display: none;隐藏。
当鼠标悬停在一级菜单项上时,二级菜单通过jQuery的slideDown()方法显示,离开时通过slideUp()方法隐藏。
jQuery交互:jQuery的hover函数监听鼠标进入和离开的事件。slideDown()和slideUp()方法为二级菜单的显示和隐藏添加平滑的动画效果。

通过这种方式,二级菜单在用户交互时动态显示,提升了网站的用户体验。这种结构和样式的组合非常适用于需要简洁清晰导航结构的网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[数据集][目标检测]街头摊贩识别检测数据集VOC+YOLO格式758张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;758 标注数量(xml文件个数)&#xff1a;758 标注数量(txt文件个数)&#xff1a;758 标注类别…

信捷 XD PLC 双精度浮点数的初始化及传输

在用信捷XDH PLC进行运动控制时&#xff0c;加减速时间是个64位的双精度的浮点数&#xff0c;那么如果不在人机界面写到PLC&#xff0c;PLC自身也是可以初始化的&#xff0c;比如0.005,怎么办呢。 用FLT指令把 整数出单精度浮点数&#xff0c;然后EDIV指令把两个单精度浮点数相…

2025第五届广州国际新能源汽车产业智能制造技术展览会

2025第五届广州国际新能源汽车产业智能制造技术展览会 展会时间&#xff1a;2025年11月20日-22日 展会地点&#xff1a;广州保利世贸博览馆(PWTC Expo) 主题&#xff1a;能源绿色化&#xff0c;制造低碳化 400多家参展商&#xff1b;20000多名观众&#xff1b;20000平方米展出…

mysql索引,事务,约束

MySQL事务 1.什么事务 用于保证数据的一致性,它是由一组相关的dml语句组成,该租的dml语句要么全部成功要么全部失败. 2.事务和锁 当执行事务操作时(dml),MySQL会在表上加锁,防止其它用户改表的数据,这对用户来说很重要 mysql 数据库控制台事务的几个重要操作(基本操作 tra…

鸿蒙开发—黑马云音乐之播放页面(下)

目录 1.用户随意控制播放进度 2.歌曲暂停和播放控制和歌曲上一首、下一首播放控制 3.歌曲列表 4.歌曲列表数据动态化和背景雾化 5.唱针效果 6.结语 1.用户随意控制播放进度 src/main/ets/services/AvPlayerManager.ets&#xff1a; // 让播放对象从某个时间点开始播放 …

本地大语言模型部署及应用

01 模型 2024-07-24&#xff0c;Meta 正式发布新一代开源大模型 Llama 3.1 系列&#xff0c;该模型共有三个版本&#xff1a; 8B70B405B meta评估了超过 150 个语言覆盖范围广的基准数据集。比较了 Llama 3.1 与竞争性模型在真实世界场景下的表现。实验评估表明&#xff0c;L…

动态住宅IP代理的搭建指南:实现高效网络访问

在互联网的复杂环境中&#xff0c;动态住宅IP代理逐渐成为提升网络隐私和绕过IP限制的热门选择。相比于数据中心代理IP&#xff0c;动态住宅IP代理具有更高的隐蔽性和真实性&#xff0c;能够有效模拟真实用户的网络行为。本文将详细介绍动态住宅IP代理的搭建方法&#xff0c;帮…

iPhone、微信二选一?苹果、腾讯官方回应

KlipC报道&#xff1a;9月2日&#xff0c;有消息称&#xff0c;腾讯和苹果正在就APPStore的抽成问题在不断交涉&#xff0c;如若谈崩有可能导致微信下架&#xff0c;iPhone一旦升级到 iOS 18.2 系统可能将无法使用微信。 对此&#xff0c;苹果中国区技术顾问表示&#xff0c;“…

Vue 2 与 Vue 3 中 keep-alive 组件的深入解析

更多内容前往个人网站&#xff1a;孔乙己大叔 在 Vue.js 的开发中&#xff0c;keep-alive 是一个非常重要的内置组件&#xff0c;它允许我们将组件状态或实例保持在内存中&#xff0c;避免重新渲染和重新创建组件&#xff0c;这对于需要频繁切换但内容较为复杂的组件场景非常有…

如何在银河麒麟中快速查询网卡固件及驱动信息

如何在银河麒麟中快速查询网卡固件及驱动信息 1、第一步&#xff1a;找到网卡名称2、第二步&#xff1a;查询固件和驱动信息3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在银河麒麟服务器操作系统中&#xff0c;如何查询网卡固件…

统一NLP和目标检测的DETR(一)——self attention、encoder、decoder

主流目标检测算法劣势 YOLO系列&#xff0c;它基于anchor来做&#xff0c;少不了要用MNS&#xff0c;导致速度相对较慢。 但今天介绍一款DETR&#xff0c;基于VIT的目标检测算法。 那么我们需要先深入过一遍VIT。 Vision transform 1、传统RNN网络的问题 单向&#xff1a;只…

vue3集成sql语句编辑器

使用的是codemirror 安装 pnpm add codemirror vue-codemirror --savepnpm add codemirror/lang-sqlpnpm add codemirror/theme-one-dark使用 <template><codemirror v-model"configSql" placeholder"Code goes here..." ref"codemirrorR…

热力图科普:数据可视化的利器

hello大家好&#xff0c;俺是没事爱瞎捣鼓又分享欲爆棚的叶同学&#xff01;&#xff01;&#xff01; 日常闲扯 哎呀&#xff0c;第一天上完课&#xff0c;给俺的感觉是&#xff08;热和惊喜&#xff09;&#xff0c;热是真热&#xff0c;从出租屋走到教学楼给我整的汗流浃背…

十七、网络编程

文章目录 一、网络相关的概念二、InetAddresss类三、Socket3.1 基本介绍 四、TCP网络通信编程4.1 应用案例1(使用字节流)4.2 应用案例2(使用字节流)4.3 应用案例3(使用字符流)4.4 应用案例4&#xff08;TCPFileCopy&#xff09;4.5 netstat 指令4.6 TCP网络通讯不为人知的秘密 …

为啥一定要考HCIE安全?这4个理由你不得不看

大家都知道&#xff0c;网络安全越来越成为企业和个人关注的焦点。 随着网络攻击的日益复杂和频繁&#xff0c;对于具备高级网络安全技能的专业人才的需求也在不断增长。HCIE-Security认证&#xff0c;作为华为推出的顶级信息安全认证&#xff0c;正是满足这一需求的黄金标准。…

inflight 守恒化简

设 x 为 E bw / delay 效能&#xff0c;y 为 flow 在瓶颈处的实际分配带宽&#xff0c;r 为时延&#xff0c;inflt 守恒模型的方程组如下&#xff1a; I ( t ) ∑ i 0 n w i ( t ) I(t)\displaystyle\sum_{i0}^n w_i(t) I(t)i0∑n​wi​(t) d x d t y r − x \dfrac{dx}{dt…

论文速读|自然语言的最优控制合成:机遇与挑战

项目地址&#xff1a;Optimal Control Synthesis from Natural Language: Opportunities and Challenges 介绍了一种从自然语言自动生成最优控制器的框架&#xff0c;该框架主要包括以下几个步骤&#xff1a;首先&#xff0c;通过人类用户提供的初始文本和系统描述&#xff0c;…

苹果系统中如何安装Python和PyCharm

1、Python官网下载安装包 Python官网下载苹果版本的安装包。 2、PyCharm官网下载安装包 3、下载完毕后安装Python 我采用的是在Windows下下载安装包&#xff0c;然后移动硬盘挂接到MacOS的方式进行安装。 双击开始安装Python Python安装完毕 4、Python安装完毕后的测定 注意直…

【开源免费】基于SpringBoot+Vue.JS高校校园招聘服务系统(JAVA毕业设计)

本文项目编号 T 010 &#xff0c;文末自助获取源码 \color{red}{T010&#xff0c;文末自助获取源码} T010&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

Qt QPushButton 按钮添加数字气泡

使用场景 项目中&#xff0c;在某个按钮的右上角添加数字气泡是一个很常见的功能&#xff0c;可以用新建一个组合类来实现。不过这样比较麻烦&#xff0c;如果加气泡是后面的需求&#xff0c;可能改动的地方较多。 下面介绍2种比较简单&#xff0c;不需要改动按钮响应的方式。…