需求:实现导航栏锚点跳转及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>
关键修改说明
Sticky固定布局:给导航栏容器添加
sticky top-0 z-50类sticky:开启粘性定位top-0:指定滚动到顶部时固定的位置z-50:设置足够高的层级,避免被页面其他内容遮挡
Flex布局保持:原代码已通过Tailwind的
flex、flex-1、flex-none类实现Flex布局,无需额外修改,导航栏内部元素会自动按Flex规则排列锚点跳转实现:
- 将所有导航链接的
href修改为对应板块的ID(如#evolucao) - 在页面内容区域,给每个对应板块的容器添加相同的ID(如
<section id="evolucao">) - 若需要平滑滚动效果,可在全局CSS中添加:
html { scroll-behavior: smooth; }
- 将所有导航链接的
内容的提问来源于stack exchange,提问作者user22678847
相关产品推荐
相关产品推荐

