vue组件开发之仿优快云发布博客时面包屑标签和checkbox选中效果

Ruby‘s Louvre:IE时代前端响应式思想的源头 响应式编程是现代前端框架的核心范式,其本质在于建立数据与视图间的自动同步机制。这一思想并非始于Vue或React,而是源于浏览器兼容性攻坚期的底层探索——通过Object.defineProperty实现数据劫持、利用documentFragment优化DOM操作、采用setTimeout(0)队列化更新等关键技术路径。这些方案在IE6-8等受限环境中被反复验证,形成了兼顾性能、可预测性与可维护性的工程方法论。本文聚焦Ruby's Louvre这一标志性技术实践,解析其DOM封装、模板编译与访问器代理等核心 阅读详情

一直在发博客,突然注意到在发布博客的时候选中对应的标签时的一个功能,最近一直在接触vue,于是想了一下要自己要怎么实现。

原图如下:

这里写图片描述

代码如下:

<template>
    <div class="checkbox">
        <h1>选中的ID值:{{checkboxValue}}</h1>
        <div class="brame">
            <span v-for="(item, index) in brameItem" :id="item.id">{{item.name}}<em @click="closebtn(item.id)">x</em></span>
        </div>
        <div class="label">
            <label v-for="(item, index) in checkboxItem" >
                <input type="checkbox" :value="item.id" :id="item.id" @click="addBrameItem(index)" v-model="checkboxValue">{{item.name}}
            </label>
        </div>
    </div>
</template>
<script>
    export default {
        name: 'checkbox',
        data (){
            return {
                checkboxValue: [],  //存储checkbox选中的值
                brameItem: [],  //存储面包屑的值
                checkboxItem: [{    //存储checkbox的值
                    'id': 1,
                    'name': 'CSS'
                },{
                    'id': 2,
                    'name': 'JSP'
                },{
                    'id': 3,
                    'name': 'JAVA'
                },{
                    'id': 5,
                    'name': 'ECMA6'
                },{
                    'id': 6,
                    'name': 'C#'
                },{
                    'id': 7,
                    'name': 'C++'
                },{
                    'id': 8,
                    'name': 'Oracle'
                },{
                    'id': 9,
                    'name': 'Ruby'
                }]
            }
        },
        methods: {
            //添加上面标签
            addBrameItem (){
                //console.log(this.checkboxItem[index]);
                var event = event || window.event;
                var target = event.target;
                var id = target.id;
                var _this = this;
                var flag = false;
                var obj = {};
                //循环遍历面包屑对象,如果面包屑对象中存在一个对象id和点击的id一致,那么就不要追加到里面去了
                _this.brameItem.forEach(function(item, index){
                    if(item.id == id){
                        flag = true;    //已经存在id相等的值
                        //移出掉相等id的值
                        _this.brameItem.splice(index, 1);
                        
                    }
                });
                //点击checkbox,面包屑中没有任何一个id与之对应
                if(!flag){
                    obj.id = id;
                    obj.name = target.parentNode.innerText;
                    _this.brameItem.push(obj);
                }
            },
            //点击面包屑删除小按钮
            closebtn(id){
                var _this = this;
                console.log(id);
                //去调checkbox对应id的选中状态
                _this.checkboxValue.forEach(function(item, index){
                    if(id == item){
                        _this.checkboxValue.splice(index, 1);
                    }
                });
                //删除面包屑对应的id的模块
                _this.brameItem.forEach(function(item, index){
                    if(id == item.id){
                        _this.brameItem.splice(index, 1);
                    }
                });
            }
        }
    }
</script>
<style scoped>
    *{margin:0 auto;padding:0;font-family:"微软雅黑";}
    .checkbox{
        width:600px;
        height:auto;
        padding-bottom:10px;
    }
    .checkbox .brame{
       padding:10px 0;
    }
    .checkbox .brame span{
        display:inline-block;
        padding:5px 15px;
        margin:10px;
        background:#ccc;
        border:1px solid #ccc;
        border-radius:20px;
    }
    .checkbox .brame span em{
        display:inline-block;
        width:20px;
        height:20px;
        margin-left:5px;
        line-height:20px;
        text-align:center;
        font-style:normal;
        color:#fff;
        background:red;
        border-radius:10px;
        cursor:pointer;
    }
    .checkbox .label{
        width:600px;
        height:auto;
        padding:20px 0  10px 0;
        border:1px solid #ccc;
    }
    .checkbox .label label{
        display:inline-block;
        width:80px;
        margin:20px;
    }
    .checkbox .label label input{
        height:20px;
        width:20px;
    }
</style>

最终效果如下:

这里写图片描述

基于DeepSeek与RAG技术构建个人专属AI知识库实战指南 检索增强生成(RAG)技术通过结合信息检索与大型语言模型生成能力,有效解决了通用大模型在特定领域知识不足的问题。其核心原理是先将用户查询在私有知识库中进行语义检索,再将检索到的相关上下文与大模型结合生成精准答案,从而提升回答的准确性与针对性。这项技术的核心价值在于能够为个人或企业构建私有化、定制化的智能问答系统,无需重新训练模型即可让AI掌握专属知识。在应用场景上,RAG广泛适用于个人知识管理、企业文档问答、技术客服助手等领域。本文以DeepSeek大模型和LangChain框架为基础,详细介绍了如何从零搭 阅读详情

相关推荐

【微信小程序开发(11)---radio单选框设置】附:前端复选框知识

app.json中已经配置: { "pages":[ "pages/demo15/demo15" ] } demo15.js Page({ data: { gender:" " }, handleChange(e){ //console.log(e); // 1 获取单选框中的值 let gender = e.detail.value; // 2 把值赋值给 data 中的数据 this.s

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1685

Vue 封装面包屑 (即粘即用)

效果展示(后台管理系统中常用) 如果你也需要如图所示的效果 直接把下面的代码粘贴过去即可 不需要父组件传递任何参数 十分好用; 基本思路: 监听 $route 路由信息; 把当前的信息添加至数组,循环遍历数组 当前的active样式, 也是根据 当前的$route 里的path去决定的 代码写的很清楚了: Tag <template> <div class="tag" v-if="showTags"> <ul> <li class="t

达拉崩巴斑得贝迪卜多比鲁翁_ 1990

Arxml文件可视化:当汽车软件架构遇见交互式设计工具

本文探讨了Arxml文件在汽车电子系统开发中的可视化技术,结合AUTOSAR架构标准,介绍了如何利用现代Web技术构建交互式设计工具。通过三维组件关系图、动态数据流展示和版本对比等功能,显著提升开发效率和架构评审质量,适用于MBD和ASPICE开发流程。

weixin_29050271的博客 429

【Vue项目搭建】修改【若依框架】的侧边栏、导航栏、面包屑样式、修改全局页面样式

【Vue项目搭建】修改【若依框架】的侧边栏、导航栏、面包屑样式、修改全局页面样式

Sabrina_cc的博客 10万+

振动能量采集技术:从原理到实战,破解物联网供电难题

能量采集技术旨在捕获环境中的废弃能量(如机械振动、热能、光能)并将其转化为电能,其核心原理在于通过压电、电磁、静电或摩擦电等物理效应实现能量形式的转换。这项技术的核心价值在于为物联网(IoT)中难以布线或更换电池的分布式传感器节点、植入式医疗设备等提供近乎永续的电力解决方案,从而解决物联网部署的“最后一米供电”瓶颈。其应用场景广泛覆盖工业预测性维护、结构健康监测、可穿戴设备及消费电子等领域。本文聚焦于振动能量采集这一细分方向,深入剖析了压电式、电磁式、电容式及摩擦纳米发电机(TENG)等主流技术路线的实战考

weixin_42660494的博客 569

【Ultrascale+ MPSOC学习记录】6、从eMMC启动翻车

因为MPSOC还有一种启动模式是eMMC,接下来咱就实现从eMMC启动。

ryo891012的博客 474

面包屑效果(element + vue)

前言:最近在写一个基于element + vue 技术的pc端外卖管理系统项目,其中主内容头部区域用到了面包屑的效果,面包屑的文字内容和点击文字跳转到对应得组件页面,要根据路由信息动态生成。在这里呢,将实现思路做个记录。 一、先来看看element上面的面包屑模板 <el-breadcrumb separator-class="el-icon-arrow-right"> <el-breadcrumb-item :to="{ path: '/' }">首页</el-

m0_61262850的博客 3289

.NET适配HarmonyOS进展 1. 前言

目前国产化系统浪潮下,适配鸿蒙是中国软件大势所趋,.NET作为最适合开发客户端语言之一,适配鸿蒙系统(HarmonyOS Next)是目前.NET开发者最关心的事情。我目前业余时间正在移植Avalonia到HarmonyOS,去年在.NET Conf CN上分享过,目前又取得一点进展,所以本文把所有问题进行整合与大家进行分享。

2301_76476890的博客 1462

【Vue】高仿优快云的评论区功能,全手敲!

2-2、点击评论图标的时候,触发一个方法,打开弹窗,并根据文章id请求后台评论,后端用Java对评论和回复进行封装返回 2-3、发表评论,将评论内容和用户id以及文章id发给后端保存,发表的时候,前端伪更新评论区,将新发表的评论push到comments里面,就不需要再次请求后端获取所有评论,除非用户主动刷新页面。 2-4、打开回复框,注意我们动态绑定了每条评论的openReply属性,每个回复框都是独立的,并不会相互影响,更新openReply属性不能简单地用this.comment[index].o

小李不背锅的博客 3782

iTunes登录协议逆向与自动化实现

本文详细解析了iTunes登录协议的逆向工程与自动化实现方法,涵盖请求体构造、签名生成和会话管理等关键技术。通过XML结构解析、X-Apple-ActionSignature生成原理及完整登录流程实现,帮助开发者高效完成iTunes自动化登录,提升工作效率。

weixin_26938645的博客 941

YOLOv11改进前必看 - YAML模型配置文件详细解读(再也不用担心通道数不匹配) 附网络结构图

YOLOv11的模型配置文件在中,里面包含以及,本文以目标检测模型文件为例(其他文件完全一致),详细介绍一下YOLOv11模型文件中各参数的含义。

Limiiiing的博客 5314

Vue自定义网页顶部导航栏(高仿优快云)

自定义网页顶部导航栏,高仿优快云头部导航栏效果,鼠标浮窗效果,vue,vue-cli,vue-router。

京茶吉鹿的博客 3879

RK3588 部署 YOLO26 目标检测:PT → ONNX → RKNN 全流程

YOLO26n 在 RK3588 上 INT8 量化后 NPU 推理约 15ms,系统 FPS 约 55,可以覆盖边缘端实时检测需求。模型从 PT 到 RKNN 的转换要用opset=11避免算子兼容问题。先用 YOLO26n + 640 输入跑通全链路,确认推理结果正确后再做性能调优。

m0_64661770的博客 306

【Vue知识体系总结 4】Vue组件化开发(1)

实验发现,组件不能访问Vue实例数据,而且即便可以访问,如果将所有的数据都放在Vue实例中,Vue实例就会变得非常臃肿。Vue组件应该有自己保存数据的地方。组件自己的数据存放在哪里?组件对象也有一个data属性(也有method等属性);只是这个data属性必须是一个函数;而且这个函数返回一个对象,对象内部保存着数据;在开发中,往往一些数据确实需要从上层传递到下层:比如在一个页面中,我们从服务器请求到了很多的数据。

2401_84092809的博客 646

【华为OD机试】2024年真题C卷(python)-API集群负载统计

【华为OD机试】-API集群负载统计-【华为OD机试】-API集群负载统计:某个产品的 restful API 集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。 restful API 是由多个层级构成,层级之间使用/连接,如 A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。 现在负载均衡模块需要知道给定层级上某个名字出现的频次,未出现过用0

u014481728的博客 1498

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

vue3-elementPlus部分组件样式修改

本文汇总了Vue2项目中ElementUI组件的样式修改方案,涵盖常见组件如el-dropdown、el-input、el-select等。重点包括:1)使用:deep()替代已废弃的/deep/和::v-deep选择器;2)各组件状态(hover/focus/active)的边框、文字、背景色定制;3)特殊组件如el-date-picker需设置teleported属性;4)表格列样式、分页器、上传组件等交互样式优化。所有修改均采用CSS变量覆盖或深度选择器实现,注意全局样式需避免scoped限制。

weixin_46479909的博客 4180

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

element UI 中的 el-tree 实现 checkbox 单选框功能,及 bus 传递参数的方法

在日常项目开发中,会经常遇到,树形结构的查询方式,为了快速方便开发,常常会使用到快捷的ui组件去快速搭树形结构,这里我用的是 element ui 中的 el-tree。第一次接触这种功能的时候也是各种网站查询,虽然也都能实现功能,但是都会有一些小问题,就很难受,那么我们废话不多说(好像也说了不少呢😅),直接上效果。原文链接:https://blog.csdn.net/weixin_49934623/article/details/125275342。el-tree 单选功能。

weixin_53892343的博客 1973

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Vue2、3组件通信、双向绑定、插槽slot、内置指令、事件修饰符

除了传递基本的值之外,还可以传递其他类型,比如对象或数组。语法糖:value默认情况下,v-model会使用子组件的value属性作为 prop 名,使用input事件来触发更新。适应不同的数据源,与其他组件集成不会产生命名冲突。比起value更具有语义,使其他开发者更容易理解组件的预期用法和行为。props: {// 使用自定义的 prop 名 customProp},// 通过 model 选项自定义 v-model 的 prop 和事件名。

luemeon的博客 3332

Vue教程-day03-2018年12月21日笔记

文章目录上午 - 9点 - 12点 - 3小时第44个视频 - javascript高阶函数的使用filter函数map函数reduce函数需求用高阶函数实现链式编程箭头函数之前的购物车案例总价格计算使用reduce考试第45个视频 - v-model的使用和原理示例代码v-model的原理和本质对input的小小总结回归v-model的本质v-model的本质总结考试第46个视频 - v-model结合radio类型使用表单input radio和v-model结合小知识点考试第47个视频 - v-mod

浪漫韫秋 2203

微信开发者⼯具介绍及基本使用(2)

微信开发者⼯具介绍及基本使用(2)1.常⻅组件 1.常⻅组件 重点讲解⼩程序中常⽤的布局组件: view, text , button,image,navigator,icon,swiper,radio,checkbox。 text,button,image,navigator,icon,swiper,radio,checkbox。等

m0_53266704的博客 1354

Vue核心⑩(收集表单数据)

我们前面在数据绑定的时候就知道可以用v-model的数据双向流动性完成对数据的收集。不过当时我们只是简单的对输入框进行了数据收集。在表单中还有很多其他类型的组件,我们怎么对他们进行数据收集呢?我们通过一个案例来理解。我们先完成一个表单,并对表单中的信息进行收集: 代码如下: 最后收集到的数据: 收集表单数据: 若:,则v-model收集的是value值,用户输入的就是value值。 若:,则v-model收集的是value值......

十八岁讨厌编程的博客 1105

工作中使用到的单词(软件开发)_第五版

本文摘要: 本文为软件开发相关的术语与技术要点整理,主要包含2020-2025年间四版内容更新(No.01-41)。重点包括: 证书文件格式(PEM/P12)差异 外部API通信注意事项(Accept头设置、HTTPS连接问题) Postman工具使用技巧(Cookie管理、请求头设置) WAS配置相关经验(JVM设置、SSL连接问题) 数据库操作命令(DB2表结构修改) IBM安全管理组件(TAM/iv-user机制) 网络通信细节(chunked传输编码特性) 常用开发工具(curl、Postman)的

sun0322 2522

JavaScript 入门实战:从核心语法到 DOM 操作与异步编程

JavaScript 作为一门轻量级的脚本语言,是实现网页动态交互的核心技术。其原理基于单线程事件循环模型,通过操作 DOM 来响应用户行为,并利用异步编程处理网络请求等耗时操作,以避免阻塞。这一技术价值在于能够构建从简单网页特效到复杂单页应用(SPA)的各类交互场景。在实际工程实践中,掌握变量、函数、事件处理等核心语法是基础,而深入理解异步编程模式(如 Promise 和 async/await)则是开发现代 Web 应用的关键。本文聚焦于 JavaScript 的核心概念与实战应用,通过一个完整的待办事

weixin_33747129的博客 382

模仿优快云黑暗帝国动态背景的vue项目(附源码)

结合vueCli3脚手架搭建,模仿优快云黑暗帝国动态背景的vue项目源码。主要是利用了canvas标签,结合app.vue整体实现。

袁的博客 8009

Vue项目之Element-UI(Breadcrumb)动态面包屑效果

效果 面包屑作用 面包屑应该是我们在项目中经常使用的一个功能,一般情况下它用来表示我们当前所处的站点位置,也可以帮助我们能够更快的回到上个层级 原始方式 最笨的方法就是在每个需要面包屑的页面中固定写好 <template> <div class="example-container"> <el-breadcrumb separator="/"> <el-breadcrumb-item v-for="(i

JackieDYH的博客 2万+
上一篇: vue组件开发之tab切换组件
下一篇: vue组件开发之用户无限添加自定义填写表单
#麻辣小龙虾#
博客等级 码龄11年 1万+粉丝 235原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值