zoukankan      html  css  js  c++  java
  • 入坑uni-app受不了自有组件极差的体验便自己写了个switch组件

    uni-app坑不少,修改switch组件的原有样式在浏览器上能正常显示,但到了打包成APP后却不起作用;使用提供的方法style="transform:scale()只能按比例缩放,可定制性太差!这才打起自己写组件的念头,源码如下:

    <template>
        <view>
            <view class="weui-switch" :class="{'weui-switch-on' : isChecked}" :value="value" @tap="toggle"></view>
        </view>
    </template>
    <script>
        export default {
            name: 'myswitch',
            props: {
              value: {
                type: Boolean,
                default: true
              }
            },
            data () {
                return {
                    isChecked: this.value
                }
            },
            watch: {
              value (val) {
                this.isChecked = val
              },
              isChecked(val) {
                this.$emit('change', val);
              }
            },
            methods: {
              toggle() {
                this.isChecked = !this.isChecked;
              }
            }
        }    
    </script>
    <style>
        .weui-switch {
            display: block;
            position: relative;
             94rpx;
            height: 45rpx;
            outline: 0;
            border-radius: 30rpx;
            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;
             94rpx;
            height: 45rpx;
            border-radius: 30rpx;
            background-color: #3D424F;
            transition: transform 0.35s cubic-bezier(0.45, 1, 0.4, 1);
        }
        .weui-switch:after {
            content: " ";
            position: absolute;
            top: 2rpx;
            left: 4rpx;
             40rpx;
            height: 40rpx;
            border-radius: 50%;
            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: #00F8E9;
        }
        .weui-switch-on:before {
            border-color: #1AAD19;
            background-color: #00F8E9;
        }
        .weui-switch-on:after {
            transform: translateX(48rpx);
        }
    </style>

    引入方法:通过绑定change事件监听组件的开关状态

     <myswitch v-model="item.state" @change="mywitch(item)"></myswitch>
  • 相关阅读:
    [收集]Grid Animation-01
    陕西航天大学横幅动态测试
    IPC机制
    Android使用权限
    DDMS
    看懂UML类图和时序图
    Frameworks detected: Android framework is detected in the project
    CoordinatorLayout父布局的Behavior
    Android权限记录
    AndroidManifest.xml文件中属性记录
  • 原文地址:https://www.cnblogs.com/bushan/p/12145336.html
Copyright © 2011-2022 走看看