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 xml为数据源的下拉框控件
Jul 07 Javascript
ExtJS的拖拽效果示例
Dec 09 Javascript
你可能不知道的JavaScript的new Function()方法
Apr 17 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
Angular设置title信息解决SEO方面存在问题
Aug 19 Javascript
js实现悬浮窗效果(支持拖动)
Mar 09 Javascript
基于Vue.js 2.0实现百度搜索框效果
Dec 28 Javascript
小程序封装路由文件和路由方法(5种全解析)
May 26 Javascript
Element ui 下拉多选时新增一个选择所有的选项
Aug 21 Javascript
AngularJS动态生成select下拉框的方法实例
Nov 17 Javascript
Vue中fragment.js使用方法小结
Feb 17 Javascript
详解Node.js使用token进行认证的简单示例
May 25 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
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
js动态给table添加/删除tr的方法
2013/08/02 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
bootstrap网格系统使用方法解析
2017/01/13 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
深入理解Python中的内置常量
2017/05/20 Python
用python实现的线程池实例代码
2018/01/06 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
Python3爬虫全国地址信息
2019/01/05 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
python3正则模块re的使用方法详解
2020/02/11 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
"引用"与多态的关系
2013/02/01 面试题
汽车检测与维修专业求职信
2013/10/30 职场文书
力学专业毕业生自荐信
2013/11/17 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
服务员态度差检讨书
2014/10/28 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
员工工作心得体会
2019/05/07 职场文书
如何书写邀请函?
2019/06/24 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python