Vue3面包屑效果

代码解释

  1. 模板部分 :使用 visibleBreadcrumbItems 来渲染面包屑项,它会根据点击状态动态显示。
    1. 脚本部分 : - clickedIndex 用于记录点击的面包屑项的索引,初始值为 -1 表示未点击。 - visibleBreadcrumbItems 是一个计算属性,根据 clickedIndex 的值来决定显示哪些面包屑项。如果 clickedIndex 为 -1,则显示全部面包屑项;否则,显示从开始到 clickedIndex 对应的项。 - handleBreadcrumbClick 方法在点击面包屑项时被调用,将 clickedIndex 设置为当前点击项的索引。 这样,当你点击某个面包屑项时,该项之后的所有面包屑项就会消失。
xml 复制代码
<template>
  <nav class="flex space-x-2 items-center text-gray-700">
    <span v-for="(item, index) in visibleBreadcrumbItems" :key="index" class="flex items-center cursor-pointer" @click="handleBreadcrumbClick(index)">
      <span v-if="index > 0" class="mr-2 text-gray-400">/</span>
      <span class="text-sm font-medium hover:text-blue-600 transition-colors duration-200">
        {{ item.title }}
      </span>
    </span>
  </nav>
</template>

<script setup>
import { ref, computed } from 'vue';

// 模拟面包屑数据,可根据实际情况修改
const breadcrumbItems = ref([
  { title: '首页' },
  { title: '分类' },
  { title: '子分类' },
  { title: '当前页面' }
]);

const clickedIndex = ref(-1);

const visibleBreadcrumbItems = computed(() => {
  if (clickedIndex.value === -1) {
    return breadcrumbItems.value;
  }
  return breadcrumbItems.value.slice(0, clickedIndex.value + 1);
});

const handleBreadcrumbClick = (index) => {
  clickedIndex.value = index;
};
</script>

<style scoped>
/* 样式可以根据需求调整 */
.flex {
  display: flex;
}
.space-x-2 > * + * {
  margin-left: 0.5rem;
}
.items-center {
  align-items: center;
}
.text-gray-700 {
  color: #4b5563;
}
.text-gray-400 {
  color: #9ca3af;
}
.text-sm {
  font-size: 0.875rem;
}
.font-medium {
  font-weight: 500;
}
.cursor-pointer {
  cursor: pointer;
}
.hover:text-blue-600:hover {
  color: #2563eb;
}
.transition-colors {
  transition-property: color;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 200ms;
}
</style>    
相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95274 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大4 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师4 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学4 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端