Vue实现穿梭框效果


Posted in Javascript onSeptember 30, 2020

用vue实现的穿梭框,实现基本的功能(数据移动、全选、反选、搜索)。

Vue实现穿梭框效果

代码:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title>穿梭框</title>
  <script src="./js/vue.js" type="text/javascript" charset="utf-8"></script>
  <style type="text/css">
   * {
    margin: 0;
    padding: 0;
   }
   
   #transfer {
    width: 388px;
    height: 218px;
    border: gray solid 1px;
    display: flex;
   }
   
   .container {
    margin: 10px;
    width: 150px;
    height: 200px;
   }
   
   #btns {
    width: 50px;
    height: 60px;
    margin: auto;
   }
   
   .to {
    margin: 0 10px 10px 10px;
    width: 30px;
   }
   
   .search {
    width: 140px;
    outline: 0;
    margin: 10px 0;
   }
   
   .content {
    list-style: none;
    margin-bottom: 10px;
   }
  </style>
 </head>
 <body>
  <div id="transfer">
   <container :datas="contents" :type="0"></container>
   <div id="btns">
    <input type="button" value=">" @click="change_type(0)" class="to"/>
    <input type="button" value="<" @click="change_type(1)" class="to"/>
   </div>
   <container :datas="contents" :type="1"></container>
  </div>
  <script type="text/javascript">
   Vue.component('container', {
    props: ['datas', 'type'],
    data() {
     return {
      search_word: ''
     }
    },
    template: `
    <div class="container">
     <div class="top">
      <input type="checkbox" name="all" @click="all" :checked="filter_chosen === filter && filter"/>
      <span v-show="filter_chosen">{{filter_chosen}}/</span>{{filter_search_word}}项
     </div>
     <input type="text" placeholder="搜索" @keyup="change_search_word" class="search"/>
     <ul class="contents">
      <li class="content" v-for="(content, idx) in datas" v-show="content.type === type && has_search_word(content.content)">
       <input type="checkbox" @click="change(idx)" :checked="content.chosen"/>{{content.content}}
      </li>
     </ul>
    </div>`,
    methods: {
     change(idx) {
      this.datas[idx].chosen = !this.datas[idx].chosen;
     },
     all() {
      this.change_chosen(!(this.filter_chosen === this.filter));
     },
     change_chosen(bool) {
      this.datas.map(x => {
       if (x.type === this.type ) {
        x.chosen = bool;
       }
      });
     },
     change_search_word(e) {
      this.search_word = e.target.value;
     },
     has_search_word(content) {
      if (this.search_word) {
       return content.includes(this.search_word);
      }
      return true;
     }
    },
    computed: {
     filter() {
      return this.datas.filter(x => x.type === this.type).length;
     },
     filter_chosen() {
      return this.datas.filter(x => x.type === this.type && x.chosen).length;
     },
     filter_search_word() {
      return this.datas.filter(x => x.type === this.type && this.has_search_word(x.content)).length;
     }
    }
   });
   
   new Vue({
    el: '#transfer',
    data: {
     contents: [
      { content: 'a', type: 0, chosen: false },
      { content: 'b', type: 0, chosen: false },
      { content: 'c', type: 0, chosen: false },
      { content: 'd', type: 0, chosen: false },
     ]
    },
    methods: {
     change_type(type) {
      for (content of this.$data.contents) {
       if (content.chosen && content.type === type) {
        content.chosen = false;
        content.type = Number(!type);
       }
      }
     }
    }
   })
  </script>
 </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 常用代码技巧大收集
Feb 25 Javascript
jQuery库与其他JS库冲突的解决办法
Feb 07 Javascript
在模板页面的js使用办法
Apr 01 Javascript
深入学习jQuery Validate表单验证(二)
Jan 18 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
javascript 用函数实现继承详解
May 28 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
Dec 02 Javascript
Es6 写的文件import 起来解决方案详解
Dec 13 Javascript
webpack css加载和图片加载的方法示例
Sep 11 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
Jan 24 Javascript
如何将百度地图包装成Vue的组件的方法步骤
Feb 12 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
Nov 11 Javascript
原生js实现表格翻页和跳转
Sep 29 #Javascript
vue实现井字棋游戏
Sep 29 #Javascript
js实现移动端图片滑块验证功能
Sep 29 #Javascript
js+cavans实现图片滑块验证
Sep 29 #Javascript
如何利用JS将手机号中间四位变成*号
Sep 29 #Javascript
原生JavaScript实现刮刮乐
Sep 29 #Javascript
原生JavaScript实现拖动校验功能
Sep 29 #Javascript
You might like
simplehtmldom Doc api帮助文档
2012/03/26 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
jQuery Tools tab使用介绍
2012/07/14 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
vue二级路由设置方法
2018/02/09 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
python八大排序算法速度实例对比
2017/12/06 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
编辑硕士自荐信范文
2013/11/27 职场文书
大四自我鉴定
2014/02/08 职场文书
电焊工岗位职责
2014/03/06 职场文书
新手上路标语
2014/06/20 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
成本会计岗位职责
2015/02/03 职场文书
农民工工资保障承诺书
2015/05/04 职场文书