【问题标题】:How do I add a transition to my navbar menu in react when I click the toggle button当我单击切换按钮时,如何向导航栏菜单添加过渡以做出反应
【发布时间】:2021-10-13 15:40:51
【问题描述】:

我在 HTML 和 CSS / Bootstrap 中创建了一个电子商务基础模板。我正在尝试将模板转换为 NextJS 站点的 React 组件,但切换功能最初无法正常工作。我看到我可以使用 React Hooks 来切换类,我已经使用 useState/isActive 实现了这些。汉堡包过渡有效,但实际菜单的过渡无效。

这里是 navbar.js

import Logo from '../images/logo-small-cropped.png'
import Image from 'next/image'
import React, { useState } from "react"

export default function Navbar({ }) {
  
  const [isActive, setActive] = useState("false");
    const handleToggle = () => {
      setActive(!isActive);
  };

  return (
          <nav className="navbar navbar-expand-md navbar-light border-top fixed-top border-bottom py-0" >
            <div className="container-fluid text-center" >
              <a className="navbar-brand" href="#">
                <span className="mb-2">
                  <Image src={Logo} alt="Little Pink Boutique Logo"  />
                </span>
              </a>
              <button onClick={handleToggle} className="navbar-toggler navbar-toggler-button" type="button" aria-label="Toggle navigation">
                <div id="hamburger" className={isActive ? "null" : "open"}>
                  <span></span>
                  <span></span>
                  <span></span>
                </div>
              </button>
           
              <div className={isActive ? "collapse navbar-collapse" : "navbar-collapse"}  >
                <ul className="navbar-nav me-auto mb-2 mb-md-0">
                  <li className="nav-item">
                    <a className="nav-link active" aria-current="page" href="/home" > </a>
                  </li>
                  <li className="nav-item">
                    <a className="nav-link" href="#">Women</a>
                  </li>
                  <li className="nav-item">
                    <a className="nav-link" href="#">Men</a>
                  </li>
                  <li className="nav-item">
                    <a className="nav-link" href="#">Children</a>
                  </li>
                  <li className="nav-item">
                    <a className="nav-link" href="#">Accessories</a>
                  </li>
                  <li className="nav-item">
                    <a className="nav-link" href="#">FAQs</a>
                  </li>
                  <li className="nav-item">
                    <a className="nav-link" href="#">Contact</a>
                  </li>
     
                </ul>
                <form className="d-flex">
                  <input className="form-control me-2 mt-3 mb-2" type="search" placeholder="Search" aria-label="Search"/>
                  <button className="btn btn-outline-success mt-3 mb-2" type="submit">Search</button>
                </form>
              </div>
             
              
            </div>
          </nav>  
      )
    }

.collapse 类只是标准的 Bootstrap 类,navbar-collapse 类如下。

.navbar-collapse{
  background-color: rgb(238, 236, 236);
  width: 100vw;
}

我不确定如何进行过渡,或者这是否是最好的方法。

一如既往地感谢任何帮助。

【问题讨论】:

    标签: javascript reactjs react-hooks next.js


    【解决方案1】:

    尝试在 navbar-collapse 类中使用过渡 css 属性。 像这样的东西:-

    .navbar-collapse{
      transition: width 2s;
      background-color: rgb(238, 236, 236);
      width: 100vw;
    }
    

    【讨论】:

    • 我已经尝试过转换属性,但它没有做任何事情:-(。切换最初由 data-bs-target 和 data-bs-toggle html 属性控制,但它们不起作用在反应组件内部,所以我尝试添加过渡属性,但也没有用
    • 在您的 useState 中,isActive 的值设置为字符串。切换后 isActive 的值是多少?
    • 我不知道我只是把它报废了,然后使用 Bootstrap React 又做了一次,一切都很好!感谢您的帮助。
    • 不用担心。上面的代码看起来也很好,只需将const [isActive, setActive] = useState("false"); 替换为const [isActive, setActive] = useState(false); 就可以了。
    猜你喜欢
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2020-01-08
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多