You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

需求:实现导航栏锚点跳转及Sticky+Flex布局(基于Daisy UI)

实现Sticky固定+Flex布局的导航栏锚点跳转功能

需求梳理

  • 导航栏采用Sticky固定布局,滚动时始终停留在页面顶部
  • 基于Flex布局组织导航元素
  • 点击导航按钮跳转到页面对应区域(如“Conclusão”跳转到页面底部,其余按钮对应各自板块)

修改后的完整代码

<div className="drawer">
  <input id="my-drawer-3" type="checkbox" className="drawer-toggle" /> 
  <div className="drawer-content flex flex-col self-start">
    {/* Navbar - 添加Sticky固定布局 */}
    <div className="w-full navbar bg-[#009999cc] sticky top-0 z-50">
      <div className="flex-none lg:hidden">
        <label htmlFor="my-drawer-3" aria-label="open sidebar" className="btn btn-square btn-ghost">
          <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" className="inline-block w-6 h-6 stroke-current"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M4 6h16M4 12h16M4 18h16"></path></svg>
        </label>
      </div> 
      <div className="flex-1 px-2 mx-2 invert"><Image src='/ibmLogoBlack.jpg' alt='Ibm logo' width={90} height={90}/></div>
      <div className="flex-none hidden lg:block">
        <ul className="menu menu-horizontal">
          {/* 导航链接设置对应锚点 */}
          <li className='m-5'><a href="#evolucao">Evolução</a></li>
          <li className='m-5'><a href="#publicidade">Publicidade</a></li>
          <li className='m-5'><a href="#presenca">Presença</a></li>
          <li className='m-5'><a href="#conclusao">Conclusão</a></li>
        </ul>
      </div>
    </div>
    {/* Page content here - 对应区域添加锚点ID */}
    <section id="evolucao">
      {/* Evolução板块内容 */}
    </section>
    <section id="publicidade">
      {/* Publicidade板块内容 */}
    </section>
    <section id="presenca">
      {/* Presença板块内容 */}
    </section>
    <section id="conclusao">
      {/* Conclusão板块内容(页面底部) */}
    </section>
    {children}
  </div> 
  <div className="drawer-side">
    <label htmlFor="my-drawer-3" aria-label="close sidebar" className="drawer-overlay"></label> 
    <ul className="menu p-4 w-80 min-h-full bg-[#0099cccc]">
      {/* 侧边栏链接同步设置锚点 */}
      <li className='m-2'><a href="#evolucao">Evolução</a></li>
      <li className='m-2'><a href="#publicidade">Publicidade</a></li>
      <li className='m-2'><a href="#presenca">Presença</a></li>
      <li className='m-2'><a href="#conclusao">Conclusão</a></li>
    </ul>
  </div>
</div>

关键修改说明

  1. Sticky固定布局:给导航栏容器添加sticky top-0 z-50类

    • sticky:开启粘性定位
    • top-0:指定滚动到顶部时固定的位置
    • z-50:设置足够高的层级,避免被页面其他内容遮挡
  2. Flex布局保持:原代码已通过Tailwind的flex、flex-1、flex-none类实现Flex布局,无需额外修改,导航栏内部元素会自动按Flex规则排列

  3. 锚点跳转实现:

    • 将所有导航链接的href修改为对应板块的ID(如#evolucao)
    • 在页面内容区域,给每个对应板块的容器添加相同的ID(如<section id="evolucao">)
    • 若需要平滑滚动效果,可在全局CSS中添加:
      html {
        scroll-behavior: smooth;
      }
      

内容的提问来源于stack exchange,提问作者user22678847

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:54:50