如何用Tailwind CSS在断点切换时将导航栏搜索容器改为放大镜图标
解决方案
用Tailwind的响应式类就能轻松实现这个切换效果,核心思路是两个搜索元素分别控制在不同屏幕尺寸下的显示/隐藏:
- 给完整的搜索容器添加
hidden lg:flex类:移动端隐藏,桌面端(lg断点及以上)显示 - 新增一个仅包含放大镜图标的容器,添加
flex lg:hidden类:移动端显示,桌面端隐藏
修改后的导航栏右侧代码如下:
<div class = "flex items-center justify-end"> {/* 桌面端显示的完整搜索容器 */} <div class = "search hidden lg:flex items-center"> <i id = "magnifing-icon" class="fa-solid fa-magnifying-glass"></i> <div class = "msg-search-nav"> <div class = "msg-search-desc text-sm text-white pr-40">Type / for search</div> </div> <img class = "palette-icon w-5 p-1" src={command_palette} alt="" /> </div> {/* 移动端显示的仅放大镜图标 */} <div class="flex items-center nav-link lg:hidden"> <i id = "mobile-magnifing-icon" class="fa-solid fa-magnifying-glass"></i> </div> <div class = "flex nav-link items-center"> <i id = "plus-icon" class="fa-solid fa-plus"></i> <select name="" id="select"> <option></option> </select> </div> <div class = "nav-link"> <i class="nav-link-icon fa-regular fa-circle-dot"></i> </div> <div class = "nav-link"> <i class="nav-link-icon fa-solid fa-code-pull-request"></i> </div> <div class ="nav-link"> <i class="nav-link-icon fa-solid fa-envelope"></i> </div> <img class="face-nav" src="https://avatars.githubusercontent.com/u/76707560?s=80&v=4"/> </div>
关键说明:
hidden:默认隐藏元素,lg:flex表示屏幕宽度≥1024px(Tailwind默认lg断点)时,用flex布局显示flex lg:hidden:默认用flex布局显示,屏幕到lg断点及以上时隐藏- 给移动端的放大镜容器加上
nav-link类,保证和其他导航元素的样式(比如间距、颜色)一致,不用额外写样式
如果需要调整断点(比如想用md而不是lg),只需要把lg:换成md:即可,对应Tailwind的响应式断点规则。
内容的提问来源于stack exchange,提问作者Shashank Thapa
相关产品推荐
相关产品推荐

