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 相关文章推荐
使用Javascript和DOM Interfaces来处理HTML
Oct 09 Javascript
Js callBack 返回前一页的js方法
Nov 30 Javascript
jquery利用event.which方法获取键盘输入值的代码
Oct 09 Javascript
jQuery中需要注意的细节问题小结
Dec 06 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
Dec 20 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
Mar 25 Javascript
JavaScript判断按钮被点击的方法
Dec 13 Javascript
AngularJS 最常用的功能汇总
Feb 17 Javascript
详解vue中localStorage的使用方法
Nov 22 Javascript
JS数组扁平化(flat)方法总结详解
Jun 24 Javascript
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
详解Vue3中对VDOM的改进
Apr 23 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
php文本转图片自动换行的方法
2013/03/13 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
php实现留言板功能
2017/03/05 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
python下如何让web元素的生成更简单的分析
2008/07/17 Python
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
2019/08/09 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
python接入支付宝的实例操作
2020/07/20 Python
Python 在函数上添加包装器
2020/07/28 Python
南京迈特望C/C++面试题
2012/07/09 面试题
Servlet如何得到服务器的信息
2015/12/22 面试题
工商管理本科生求职信
2014/07/13 职场文书
毕业典礼邀请函
2015/01/31 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
详解JS数组方法
2021/11/20 Javascript
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技