vue自定义switch开关组件,实现样式可自行更改


Posted in Javascript onNovember 01, 2019

用法:

import switchc from './public/switch'
<switchc v-model="value1" text="on|off"></switchc>

属性

text 非必填,类型为string,要求格式为“on|off” ,以 | 分隔

事件

change

html部分:

<template>
 <div>
   <span class="weui-switch" :class="{'weui-switch-on' : isChecked}" :value="value" @click="toggle" style="position:relative">
  <div v-if="isChecked && direction.length > 0" style="width:100%;height:100%;position:absolute;padding:0 5px;line-height:20px;color:#FFF;user-select:none">
  {{direction[0]}}
  </div>
  <div v-if="!isChecked && direction.length > 0" style="width:100%;height:100%;position:absolute;padding:0 5px;right:2px;line-height:22px;color:#7A7A7A;text-align:right;user-select:none">
  {{direction[1]}}
  </div>
   </span>
 </div>
</template>

js部分:

<script>
 export default {
 name: 'switchComponent',
 props: {
    value: {
     type: Boolean,
     default: true
    },
    text: {
    type: String,
    default: ''
    }
   },
 data () {
  return {
  isChecked: this.value
  }
 },
 computed: {
  direction () {
  if (this.text) {
   return this.text.split('|')
  } else {
   return []
  }
  }
 },
 watch: {
     value (val) {
      this.isChecked = val
     },
    isChecked(val) {
     this.$emit('change', val);
    }
   },
   methods: {
    toggle() {
     this.isChecked = !this.isChecked;
    }
   }
 } 
</script>

style部分:

<style>
 .weui-switch {
   display: block;
   position: relative;
   width: 52px;
   height: 24px;
   border: 1px solid #DFDFDF;
   outline: 0;
   border-radius: 16px;
   box-sizing: border-box;
   background-color: #DFDFDF;
   transition: background-color 0.1s, border 0.1s;
   cursor: pointer;
  }
  .weui-switch:before {
   content: " ";
   position: absolute;
   top: 0;
   left: 0;
   width: 50px;
   height: 22px;
   border-radius: 15px;
   background-color: #FDFDFD;
   transition: transform 0.35s cubic-bezier(0.45, 1, 0.4, 1);
  }
  .weui-switch:after {
   content: " ";
   position: absolute;
   top: 0;
   left: 0;
   width: 22px;
   height: 22px;
   border-radius: 15px;
   background-color: #FFFFFF;
   box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
   transition: transform 0.35s cubic-bezier(0.4, 0.4, 0.25, 1.35);
  }
  .weui-switch-on {
   border-color: #6F6F6F;
   background-color: #1AAD19;
  }
  .weui-switch-on:before {
   border-color: #1AAD19;
   background-color: #409eff;
  }
  .weui-switch-on:after {
   transform: translateX(28px);
  }
</style>

以上这篇vue自定义switch开关组件,实现样式可自行更改就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Extjs Ajax 乱码问题解决方案
Apr 15 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
jquery自动切换tabs选项卡的具体实现
Dec 24 Javascript
JavaScript eval() 函数介绍及应用示例
Jul 29 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
Oct 17 Javascript
ExpressJS入门实例
Jan 14 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
Vue非父子组件通信详解
Jun 12 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
JS实现Cookie读、写、删除操作工具类示例
Aug 28 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
Aug 14 Javascript
微信小游戏中three.js离屏画布的示例代码
Oct 12 Javascript
Vue实现导航栏的显示开关控制
Nov 01 #Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
Nov 01 #Javascript
vue设置导航栏、侧边栏为公共页面的例子
Nov 01 #Javascript
Vue中jsx不完全应用指南小结
Nov 01 #Javascript
vue导航栏部分的动态渲染实例
Nov 01 #Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 #Javascript
Vue-cli项目部署到Nginx服务器的方法
Nov 01 #Javascript
You might like
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
jQuery 表格插件整理
2010/04/27 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
女性时尚在线:IVRose
2019/02/23 全球购物
.NET笔试题(20个问题)
2016/02/02 面试题
优秀员工个人的自我评价
2013/11/29 职场文书
竞聘书怎么写,如何写?
2014/03/31 职场文书
学校师德承诺书
2014/05/23 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
自主招生学校推荐信
2014/09/26 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
道歉的话语大全
2015/05/12 职场文书
拉贝日记观后感
2015/06/05 职场文书
团拜会主持词
2015/07/04 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis