js,html,css,vuejs手搓级联单选

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>级联选择器</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script><style>* {margin: 0;padding: 0;box-sizing: border-box;}#app {height: 700px;}.cascader-container {position: relative;display: inline-block;}.cascader-input {width: 250px;padding: 8px;border: 1px solid #ccc;border-radius: 4px;cursor: pointer;}.dropdown {position: absolute;top: 40px;left: 0;display: flex;border: 1px solid #ddd;background: white;box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);}.column {width: 150px;border-right: 1px solid #eee;}.column:last-child {border-right: none;}ul {list-style: none;padding: 5px;}li {display: flex;align-items: center;padding: 5px;cursor: pointer;}li:hover {background: #f5f5f5;}input[type="radio"] {margin-right: 8px;}.selected {color: #409eff;font-weight: bold;}.arrow {margin-left: auto;}</style></head><body><div id="app" @click="hideDropdown"><div class="cascader-container" @click.stop><inputclass="cascader-input":value="selectedPath"readonly@click="toggleDropdown"/><div v-if="dropdownVisible" class="dropdown" @click.stop><divv-for="(items, level) in visibleData":key="level"class="column"><ul><liv-for="item in items":key="item.value"@click.stop="toggleExpand(item, level)"><inputtype="radio"name="cascader":value="item.value"v-model="selectedValue"@click.stop="selectItem(item)"/><span :class="{ selected: selectedValue === item.value }">{{ item.label }}</span><span v-if="item.children" class="arrow">></span></li></ul></div></div></div></div><script>new Vue({el: "#app",data: {dropdownVisible: false,selectedValue: "",selectedPath: "请选择",options: [{value: "zhinan",label: "指南",children: [{value: "shejiyuanze",label: "设计原则",children: [{value: "yizhi",label: "一致",},{value: "fankui",label: "反馈",},{value: "xiaolv",label: "效率",},{value: "kekong",label: "可控",},],},{value: "daohang",label: "导航",children: [{value: "cexiangdaohang",label: "侧向导航",},{value: "dingbudaohang",label: "顶部导航",},],},],},{value: "zujian",label: "组件",children: [{value: "basic",label: "Basic",children: [{value: "layout",label: "Layout 布局",},{value: "color",label: "Color 色彩",},{value: "typography",label: "Typography 字体",},{value: "icon",label: "Icon 图标",},{value: "button",label: "Button 按钮",},],},{value: "form",label: "Form",children: [{value: "radio",label: "Radio 单选框",},{value: "checkbox",label: "Checkbox 多选框",},{value: "input",label: "Input 输入框",},{value: "input-number",label: "InputNumber 计数器",},{value: "select",label: "Select 选择器",},{value: "cascader",label: "Cascader 级联选择器",},{value: "switch",label: "Switch 开关",},{value: "slider",label: "Slider 滑块",},{value: "time-picker",label: "TimePicker 时间选择器",},{value: "date-picker",label: "DatePicker 日期选择器",},{value: "datetime-picker",label: "DateTimePicker 日期时间选择器",},{value: "upload",label: "Upload 上传",},{value: "rate",label: "Rate 评分",},{value: "form",label: "Form 表单",},],},{value: "data",label: "Data",children: [{value: "table",label: "Table 表格",},{value: "tag",label: "Tag 标签",},{value: "progress",label: "Progress 进度条",},{value: "tree",label: "Tree 树形控件",},{value: "pagination",label: "Pagination 分页",},{value: "badge",label: "Badge 标记",},],},{value: "notice",label: "Notice",children: [{value: "alert",label: "Alert 警告",},{value: "loading",label: "Loading 加载",},{value: "message",label: "Message 消息提示",},{value: "message-box",label: "MessageBox 弹框",},{value: "notification",label: "Notification 通知",},],},{value: "navigation",label: "Navigation",children: [{value: "menu",label: "NavMenu 导航菜单",},{value: "tabs",label: "Tabs 标签页",},{value: "breadcrumb",label: "Breadcrumb 面包屑",},{value: "dropdown",label: "Dropdown 下拉菜单",},{value: "steps",label: "Steps 步骤条",},],},{value: "others",label: "Others",children: [{value: "dialog",label: "Dialog 对话框",},{value: "tooltip",label: "Tooltip 文字提示",},{value: "popover",label: "Popover 弹出框",},{value: "card",label: "Card 卡片",},{value: "carousel",label: "Carousel 走马灯",},{value: "collapse",label: "Collapse 折叠面板",},],},],},{value: "ziyuan",label: "资源",children: [{value: "axure",label: "Axure Components",},{value: "sketch",label: "Sketch Templates",},{value: "jiaohu",label: "组件交互文档",},],},],expandedNodes: [],},computed: {visibleData() {let levels = [];let currentLevel = this.options;levels.push(currentLevel);for (let i = 0; i < this.expandedNodes.length; i++) {let found = currentLevel.find((node) => node.value === this.expandedNodes[i]);if (found && found.children) {levels.push(found.children);currentLevel = found.children;} else {break;}}return levels;},},methods: {toggleDropdown() {this.dropdownVisible = !this.dropdownVisible;},hideDropdown() {this.dropdownVisible = false;},toggleExpand(item, level) {this.expandedNodes = this.expandedNodes.slice(0, level);if (item.children) {this.expandedNodes.push(item.value);}},selectItem(item) {this.selectedValue = item.value;this.selectedPath = this.getFullPath(item.value, this.options, "");this.dropdownVisible = false;console.log("this.selectedValue", this.selectedValue);console.log("this.selectedPath", this.selectedPath);},getFullPath(value, options, path) {for (let opt of options) {let newPath = path ? `${path} / ${opt.label}` : opt.label;if (opt.value === value) return newPath;if (opt.children) {let result = this.getFullPath(value, opt.children, newPath);if (result) return result;}}return "";},},});</script></body>
</html>


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35892.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring】第四弹:基于XML文件注入Bean对象

一、setter 注入Bean对象 1.创建Student对象 public class Student {private Integer id;private String name;private Integer age;private String sex;public Student() {}public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String …

DeepSeek私有化部署与安装浏览器插件内网穿透远程访问实战

文章目录 前言1. 本地部署OllamaDeepSeek2. Page Assist浏览器插件安装与配置3. 简单使用演示4. 远程调用大模型5. 安装内网穿透6. 配置固定公网地址 前言 最近&#xff0c;国产AI大模型Deepseek成了网红爆款&#xff0c;大家纷纷想体验它的魅力。但随着热度的攀升&#xff0c…

单目3d detection算法记录

1、centernet object as points 这篇文章的核心单目3d检测主要是利用中心点直接回归出3d模型的所有属性&#xff0c;head共享整个backbone&#xff0c;其中3d属性包括&#xff1a;2d目标中心点、2dw和h、2d offsets、3doffsets、3d dimmession、rot还有depth。 其中对应的dep…

MySQL程序

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:数据库 JavaEE专栏:JavaEE 软件测试专栏:软件测试 关注博主带你了解更多知识 1. mysqld (MySQL服务器) mysqld也被称为MySQL服务器&#xff0c;是⼀个多线程程序&#xff0c;对数据⽬录进⾏访问管理(包含数据库…

rust学习笔记17-异常处理

今天聊聊rust中异常错误处理 1. 基础类型&#xff1a;Result 和 Option&#xff0c;之前判断空指针就用到过 Option<T> 用途&#xff1a;表示值可能存在&#xff08;Some(T)&#xff09;或不存在&#xff08;None&#xff09;&#xff0c;适用于无需错误信息的场景。 f…

IIS 服务器日志和性能监控

Internet Information Services &#xff08;IIS&#xff09; 是 Microsoft 提供的一款功能强大、灵活且可扩展的 Web 服务器&#xff0c;用于托管网站、服务和应用程序。IIS 支持 HTTP、HTTPS、FTP、SMTP 和更多用于提供网页的协议&#xff0c;因此广泛用于企业环境。 IIS 的…

基于Netty实现高性能HTTP反向代理

以下将分步骤实现一个基于Netty的高性能HTTP反向代理&#xff0c;支持动态路由、负载均衡和基础鉴权功能。 1. 项目依赖配置&#xff08;Maven&#xff09; 2. 定义路由规则 3. 实现HTTP反向代理服务端 4. 实现反向代理处理器 5. 实现基础鉴权 6. 性能优化策略 连接池管理…

Feedback-Guided Autonomous Driving

Feedback-Guided Autonomous Driving idea 问题设定&#xff1a;基于 CARLA 的目标驱动导航任务&#xff0c;通过知识蒸馏&#xff0c;利用特权智能体的丰富监督信息训练学生传感器运动策略函数 基于 LLM 的端到端驱动模型&#xff1a;采用 LLaVA 架构并添加航点预测头&#…

OpenCV基础【图像和视频的加载与显示】

目录 一.创建一个窗口&#xff0c;显示图片 二.显示摄像头/多媒体文件 三.把摄像头录取到的视频存储在本地 四.鼠标回调事件 五.TrackBar滑动条 一.创建一个窗口&#xff0c;显示图片 import cv2img_path "src/fengjing.jpg" # 自己的图片路径 img cv2.imre…

springboot实现调用百度ocr实现身份识别

一、技术选型 OCR服务&#xff1a;推荐使用百度AI 二、实现 1.注册一个服务 百度智能云控制台https://console.bce.baidu.com/ai-engine/ocr/overview/index?_1742309417611 填写完之后可以获取到app-id、apiKey、SecretKey这三个后面文件配置会用到 2、导入依赖 <!-- …

Linux--内核进程O(1)调度队列

⼀个CPU拥有⼀个runqueue 如果有多个CPU就要考虑进程个数的负载均衡问题 优先级 普通优先级&#xff1a;100〜139&#xff08;我们都是普通的优先级&#xff0c;想想nice值的取值范围&#xff0c;可与之对应&#xff01;&#xff09;实时优先级&#xff1a;0〜99&#xff08…

1.排序算法(学习自用)

1.冒泡排序 算法步骤 相邻的元素之间对比&#xff0c;每次早出最大值或最小值放到最后或前面&#xff0c;所以形象的称为冒泡。 特点 n个数排序则进行n轮&#xff0c;每轮比较n-i次。所以时间复杂度为O(n^2)&#xff0c;空间复杂度为O(1)&#xff0c;该排序算法稳定。 代码…

DiskGenius 硬盘管理工具下载+D盘空间扩容给C盘教程

目录 D盘空间扩容给C盘教程 1、打开DiskGenius软件​编辑 2、右键D盘&#xff08;或需要压缩的磁盘&#xff09;-->调整分区大小 3、调整分区容量 4、点击是/确定后&#xff0c;等待几分钟电脑自行操作&#xff0c;重启后硬盘就重新分好了 5、展示效果 DiskGenius – …

[项目]基于FreeRTOS的STM32四轴飞行器: 六.2.4g通信

基于FreeRTOS的STM32四轴飞行器: 六.2.4g通信 一.Si24Ri原理图二.Si24R1芯片手册解读三.驱动函数讲解五.移植2.4g通讯&#xff08;飞控部分&#xff09;六.移植2.4g通讯&#xff08;遥控部分&#xff09;七.通讯模块的完成&#xff08;遥控部分&#xff09; 一.Si24Ri原理图 S…

springboot集成xxl-job

前言&#xff1a;关于xxl-job的一些简单的介绍就不做过多介绍&#xff0c;本文主要讲一下如何将xxl-job整合到springboot项目中。先贴上项目的两个地址&#xff1a; 1.github&#xff1a; https://github.com/xuxueli/xxl-job 2.码云&#xff1a;http://gitee.com/xuxueli0323/…

预处理指令中#if 和 #endif的用法

在 C 语言中&#xff0c;#if 和 #endif 是预处理指令&#xff0c;用于条件编译。它们的核心作用是&#xff1a;根据预处理器能够识别的条件&#xff08;通常是宏定义或常量表达式&#xff09;&#xff0c;决定某段代码是否参与编译。 — 基本功能 #if 用于开启一个条件编译块…

【统计学相关知识】极小充分统计量

定义、判别&#xff0c;计算上的定义 极小充分统计量不具有唯一性&#xff0c;具有不变性&#xff0c;线性映射仍然是极小充分统计量 一般来说&#xff0c;使用因子分解定义找到的充分统计量&#xff0c;直观地找到的&#xff0c;一般是极小充分统计量&#xff0c;但还是要遵…

winx64 安装对应版本火狐浏览器驱动

#本人需要学习使用selenium 选择对应的浏览器是firefox 为什么 因为喜欢 首先需要确定你的浏览器版本 在火狐的设置常规中你就能发现 Supported platforms — Firefox Source Docs documentation (mozilla.org) 以上链接参照Supported platforms 找到对应版本 &#xff08;注…

【最后203篇系列】016 Q201架构思考

前言 Q200已经达到了我既定的目标&#xff0c;在最近的3个月&#xff0c;我需要进一步完善&#xff0c;达到可以试产的程度。 在这个过程当中&#xff0c;许多知识和体会一直在变。 qtv200到目前&#xff0c;虽然通过习惯(每晚运行离线策略和比对)方式维持了注意力的集中&…

埃森哲中捷石化proposalv04(64页PPT)(文末有下载方式)

资料解读&#xff1a;埃森哲中捷石化proposalv04 详细资料请看本解读文章的最后内容。 埃森哲公司为中捷石化提供的ERP和MES系统实施项目提案&#xff0c;旨在通过信息化手段提升中捷石化的精细化管理水平。该提案详细阐述了埃森哲对中捷石化现状的理解、建议的解决方案、实施…