【问题标题】:Mega menu div hides on hover | reactjs超级菜单 div 在悬停时隐藏 |反应
【发布时间】:2021-11-26 13:19:47
【问题描述】:

我正在为我的电子商务网站在 reactjs 框架中创建一个大型菜单。当我将鼠标悬停在列表项上时,它会显示大型菜单 div,但是当我将光标向下移动时,菜单会自行隐藏。为什么不保持原样?

在 onMouseEnter 和 onMouseLeave 上控制菜单显示状态的本地状态效果很好。

const [visible, setVisible] = useState(false);

  const showMenu = () => {
    setVisible(true);
  };

  const hideMenu = () => {
    setVisible(false);
  };
<li className="mega-drop-down collapsed">
                  <a
                    className="accord-icon"
                    onMouseEnter={showMenu}
                    onMouseLeave={hideMenu}
                  >
                    WHAT WE DO
                  </a>
                  <div
                    className="animated fadeIn mega-menu"
                    style={{ display: visible ? "block" : "none" }}
                  >
                    <div className="mega-menu-wrap">
                      <div className="row-t">
                        <div className="col-md-8">
                          <h4 className="row-t mega-title title1">
                            <a> Translation Services</a>
                          </h4>
                          <div className="border-line title1">
                            <div className="row-t">
                              <ul className="stander">
                                <div className="col-md-4">
                                  <li>
                                    <a> Supported languages</a>
                                  </li>
                                </div>
                                <div className="col-md-4">
                                  <li>
                                    <a> Translation Cost</a>
                                  </li>
                                </div>                               
                              </ul>
                            </div>
                            <div className="row-t">
                              <div className="col-md-4">
                                <h4 className="row-t mega-title title2">
                                  Areas of Expertise
                                </h4>
                                <div className="border-line title2">
                                  <ul className="stander">
                                    <li>
                                      <a> Document</a>
                                    </li>
                                    <li>
                                      <a> Legal</a>
                                    </li>                                   
                                    <li>
                                      <a> Technical</a>
                                    </li>                                   
                                  </ul>
                                </div>
                              </div>
                              <div className="col-md-4">
                                <h4 className="row-t mega-title title2">
                                  Localization
                                </h4>
                                <div className="border-line title2">
                                  <ul className="stander">                                   
                                    <li>
                                      <a> Mobile App</a>
                                    </li>
                                    <li>
                                      <a> Software</a>
                                    </li>
                                    <li>
                                      <a> Medical</a>
                                    </li>
                                  </ul>
                                </div>
                              </div>                              
                            </div>
                          </div>
                        </div>                        
                      </div>
                    </div>
                  </div>
                </li>

【问题讨论】:

    标签: javascript html css reactjs megamenu


    【解决方案1】:

    因为您将函数放在“a”元素上,所以当您离开该元素时,onMouseLeave 函数会运行。

    你应该把这些功能放在“mega-drop-down”元素上

    如果你知道CSS,你可以很简单地做它

    .mega-drop-down:not(:hover) .mega-menu{
       display:none;
    }
    <ul>
      <li class="mega-drop-down collapsed">
         <a class="accord-icon" >WHAT WE DO </a>
            <div class="animated fadeIn mega-menu" >
                        Mega Menu
           </div>
       </li>
    </ul>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 2016-12-19
      • 1970-01-01
      • 2023-03-19
      • 2014-09-05
      • 2012-06-22
      • 2021-03-20
      相关资源
      最近更新 更多