手写tabs hover问题

img


手写的tabs,鼠标移入父级tabs,子级导航出现,鼠标移出tabs元素,子级导航就消失了,根本无法操作子级怎么办

这个问题的原因是子级导航在鼠标移出父级tabs时消失,导致用户无法操作子级导航。你可以通过在CSS和JavaScript中做一些调整来解决这个问题。
HTML结构:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tab Hover Example</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="tabs">
        <div class="tab-item">Tab 1</div>
        <div class="tab-item">Tab 2
            <ul class="sub-menu">
                <li>Sub-item 1</li>
                <li>Sub-item 2</li>
                <li>Sub-item 3</li>
            </ul>
        </div>
        <div class="tab-item">Tab 3</div>
    </div>
    <script src="script.js"></script>
</body>
</html>


CSS样式:

.tabs {
    display: flex;
    position: relative;
}

.tab-item {
    padding: 10px 20px;
    background-color: #f1f1f1;
    border: 1px solid #ccc;
    cursor: pointer;
}

.sub-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 200px;
    list (style: none;
    padding: 0;
    margin: 0;
    background-color: #fff;
    border: 1px solid #ccc;
}

.sub-menu li {
    padding: 10px 20px;
    cursor: pointer;
}


JavaScript代码:

document.addEventListener('DOMContentLoaded', function () {
    const tabItems = document.querySelectorAll('.tab-item');

    tabItems.forEach(tabItem => {
        tabItem.addEventListener('mouseenter', () => {
            const subMenu = tabItem.querySelector('.sub-menu');
            if (subMenu) {
                subMenu.style.display = 'block';
            }
        });

        tabItem.addEventListener('mouseleave', () => {
            const subMenu = tabItem.querySelector('.sub-menu');
            if (subMenu) {
                subMenu.style.display = 'none';
            }
        });
    });
});


这个实例中,当鼠标移入tab-item时,子级导航(sub-menu)会显示,当鼠标移出tab-item时,子级导航会消失。这样一来,用户就可以正常操作子级导航了。

写了个css的demo,看看能不能解决你的疑问。

img

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      ul,
      li {
        list-style: none;
      }
      .box {
        width: 300px;
        border: 1px solid red;
        margin: 30px auto;
        display: flex;
        height: 40px;
        line-height: 40px;
        text-align: center;
      }
      .box li {
        position: relative;
        width: 100px;
        overflow: hidden;
      }
      .box li:hover {
        overflow: visible;
      }
      .sub-box {
        background-color: pink;
        position: absolute;
        left: 0;
        top: 40px;
        width: 100%;
      }
      .sub-box a {
        display: block;
      }
      .sub-box a:hover {
        background-color: red;
      }
    </style>
  </head>
  <body>
    <ul class="box">
      <li>首页</li>
      <li>
        <p>关于我们</p>
        <section class="sub-box">
          <a href="#">哈哈哈</a>
          <a href="#">嘿嘿嘿</a>
        </section>
      </li>
      <li>业务介绍</li>
    </ul>
    <section>
      手写的tabs,鼠标移入父级tabs,子级导航出现,鼠标移出tabs元素,子级导航就消失了,根本无法操作子级怎么办手写的tabs,鼠标移入父级tabs,子级导航出现,鼠标移出tabs元素,子级导航就消失了,根本无法操作子级怎么办手写的tabs,鼠标移入父级tabs,子级导航出现,鼠标移出tabs元素,子级导航就消失了,根本无法操作子级怎么办手写的tabs,鼠标移入父级tabs,子级导航出现,鼠标移出tabs元素,子级导航就消失了,根本无法操作子级怎么办手写的tabs,鼠标移入父级tabs,子级导航出现,鼠标移出tabs元素,子级导航就消失了,根本无法操作子级怎么办手写的tabs,鼠标移入父级tabs,子级导航出现,鼠标移出tabs元素,子级导航就消失了,根本无法操作子级怎么办手写的tabs,鼠标移入父级tabs,子级导航出现,鼠标移出tabs元素,子级导航就消失了,根本无法操作子级怎么办手写的tabs,鼠标移入父级tabs,子级导航出现,鼠标移出tabs元素,子级导航就消失了,根本无法操作子级怎么办
    </section>
  </body>
</html>