美文网首页
vue自定义switch开关组件,样式可自行更改

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

作者: 前端温童鞋 | 来源:发表于2018-11-19 12:00 被阅读0次

    有喜欢朋友可以关注一下,有时间会继续更新,现在这些都是我在csdn博客上发表过的内容,有喜欢的朋友,可以赞赏支持一下,有什么希望我封装的组件可以在下面评论留言,谢了
    用法:

    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开关组件,样式可自行更改

          本文链接:https://www.haomeiwen.com/subject/advofqtx.html