8行JS代码实现Vue穿梭框
实现效果
完整 demo 参考
<template>
<div class="contain">
<ul class="">
<li class="count">{{num(leftData,true)}}/{{leftData.length}}</li>
<li v-for="(city,index) in leftData" :key="index">
<input type="checkbox" v-model="city.check"> {{city.name}}
</li>
</ul>
<div class="btn">
<button @click="toRight">>> </button>
<button @click="toLeft"><<</button>
</div>
<ul>
<li class="count">{{num(rightData,true)}}/{{rightData.length}}</li>
<li v-for="(city,index) in rightData" :key="index">
<input type="checkbox" v-model="city.check"> {{city.name}}
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
leftData: [
{ name: '北京', check: true },
{ name: '天津', check: false },
{ name: '上海', check: false },
{ name: '内蒙', check: false },
{ name: '重庆', check: false },
{ name: '台湾', check: false },
{ name: '香港', check: false },
{ name: '澳门', check: false }
],
rightData: []
}
},
methods: {
toRight() {
let selectData = this.filterData(this.leftData, true)
this.rightData = [...this.rightData, ...selectData]
this.leftData = this.filterData(this.leftData, false)
},
toLeft() {
let selectData = this.filterData(this.rightData, true)
this.leftData = [...this.leftData, ...selectData]
this.rightData = this.filterData(this.rightData, false)
},
filterData: (data, state) => data.filter(item => item.check == state)
},
computed: {
num() {
return (data, state) => this.filterData(data, state).length
}
}
}
</script>
<style scoped>
.contain {
padding: 100px;
}
ul {
display: inline-block;
width: 200px;
border: 1px solid #ccc;
min-height: 400px;
vertical-align: top;
padding: 0;
margin: 0;
}
li {
line-height: 37px;
width: 200px;
border-bottom: 1px solid #ccc;
text-align: center;
list-style: none;
}
.count {
text-align: right;
color: brown;
padding-right: 20px;
background: #eee;
height: 45px;
line-height: 45px;
box-sizing: border-box;
}
.btn {
display: inline-block;
width: 100px;
text-align: center;
padding-top: 150px;
}
button {
width: 80px;
margin-bottom: 20px;
text-align: center;
}
</style>
8行JS代码实现Vue穿梭框的更多相关文章
- 不到30行JS代码实现的Excel表格
不到30行JS代码实现的Excel表格,jQuery并非不可替代 某国外程序员展示了一个由原生JS写成不依赖第三方库的,Excel表格应用,有以下特性: 由不足30行的原生JavaScript代码实现 ...
- 20行JS代码实现贪吃蛇
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 20行js代码制作网页刮刮乐
分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码效果如下 盖伦.jpg 刮刮乐.gif HTML部分 <body> ![](img/gailun.jpg) &l ...
- 5行js代码搞定导航吸顶效果
一.HTML布局 首先写HTML布局 <body> <div id="wrap"></div> </body> 二.CSS样式 给点 ...
- 18 行 JS 代码编一个倒时器
有时候在生活中,你需要一个JavaScript倒计时时钟,而不是一个末日装置设备.不管你是否有一次约会,销售.促销.或者游戏,你可以受益于使用原生JavaScript构建一个时钟,而不是拿到一个现成的 ...
- 360自动抢票还不够,几行js代码设置无人值守
360就是牛逼哄哄的...... 但是最近在使用360浏览器抢票的时候还是发现了一些体验不好的地方,比如搞着搞着就退出了登录,有时候能帮你自动登录进去,但是自动登录之后又不会帮你自动开始抢.然后验证码 ...
- JS代码实现的聊天框
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue-toy: 200行代码模拟Vue实现
vue-toy 200行左右代码模拟vue实现,视图渲染部分使用React来代替Snabbdom,欢迎Star. 项目地址:https://github.com/bplok20010/vue-toy ...
- Vue实现拖拽穿梭框功能四种方式
一.使用原生js实现拖拽 点击打开视频讲解更加详细 <html lang="en"> <head> <meta charset="UTF-8 ...
- 65行 JavaScript 代码实现 Flappy Bird 游戏
飞扬的小鸟(Flappy Bird)无疑是2014年全世界最受关注的一款游戏.这款游戏是一位来自越南河内的独立游戏开发者阮哈东开发,形式简易但难度极高的休闲游戏,很容易让人上瘾. 这里给大家分享一篇这 ...
随机推荐
- CodePen 的国内替代「笔.COOL」,一个功能完备、使用便捷的在线HTML/CSS/JS编辑器和作品分享平台
笔.COOL,是一个最近在国内崭露头角的在线HTML/CSS/JS编辑器和作品分享平台. 笔.COOL 提供了一个在线的 HTML.CSS 和 JavaScript 代码编辑器.无需任何安装,你只需打 ...
- .net core的学习小结
课程:[.NET 6教程,.Net Core 2022视频教程,杨中科主讲] https://www.bilibili.com/video/BV1pK41137He/?p=159&share_ ...
- 二叉树的遍历(BFS、DFS)
二叉树的遍历(BFS.DFS) 本文分为以下部分: BFS(广度优先搜索) DFS(深度优先搜索) 先序遍历 中序遍历 后序遍历 总结 BFS(广度优先搜索) 广度优先搜索[^1](英语:Breadt ...
- 互联网软件的安装包界面设计-Inno setup
https://blog.csdn.net/oceanlucy/article/details/50033773 "安装界面太丑了,不堪入目!" "这界面应该属于20年代 ...
- redis RDB AOF数据持久化
目录 redis RDB持久化[手工持久化]: redis RDB持久化条件配置[适合用于备份]redis rdb持久化策略 redis AOF持久化 redis AOF持久化配置 redis RDB ...
- Yii框架Ar操作
1.$admin=Admin::model()->findAll($condition,$params); 该方法是根据一个条件查询一个集合,如: findAll("u ...
- uniapp 复选框全选(基于colorui组件)
说明:本案例的样式基于colorui组件库 感兴趣的小伙伴可以看下教程 colorui组件库开发文档或者csdn的文档,顺便再分享下 colorui的群资源 html <checkbox-gro ...
- bash: _get_comp_words_by_ref: command not found 报错
没有安装补全的包 错误信息 bash: _get_comp_words_by_ref: command not found 表明你的 shell 中可能存在补全功能的问题. 通常,这种错误发生在你的系 ...
- MySql 中 select 使用
MySql select 多种查询方式 前言 在数据库使用过程中,使用最多的场景就是查询数据,所以今天我们总结一下常用用的查询 简单查询 带条件查询 多条件查询 输出指定字段查询 分组查询 查询结果排 ...
- thinkpad t490触摸板失灵解决方法
笔记本电脑之前触摸板使用正常,可能在某次更新之后,发现失灵不可用. 解决方法: 更新或滚动触摸板驱动程序 当您在设备管理器中时,右键单击列表中的触摸板(可能称为Dell TouchPad,Lenovo ...