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 相关文章推荐
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
JavaScript mapreduce工作原理简析
Nov 25 Javascript
js css后面所带参数含义介绍
Aug 18 Javascript
javascript full screen 全屏显示页面元素的方法
Sep 27 Javascript
JavaScript中的splice()方法使用详解
Jun 09 Javascript
JavaScript实现移动端滑动选择日期功能
Jun 21 Javascript
JavaScript Ajax编程 应用篇
Jul 02 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
Jan 03 Javascript
React Native基础入门之初步使用Flexbox布局
Jul 02 Javascript
react native 文字轮播的实现示例
Jul 27 Javascript
使用webpack搭建vue项目及注意事项
Jun 10 Javascript
微信小程序:报错(in promise) MiniProgramError
Oct 30 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
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
Python中字典的基本知识初步介绍
2015/05/21 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
python实现最短路径的实例方法
2020/07/19 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
机房搬迁方案
2014/05/01 职场文书
白岩松演讲
2014/05/21 职场文书
初中思想品德教学反思
2016/02/24 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
JavaScript异步操作中串行和并行
2021/11/20 Javascript