vue-color-颜色选择器插件的使用及此插件中Photoshop组件的属性

vue-color-颜色选择器插件的安装

安装命令如下

npm i @ckpack/vue-color 
// 或者
npm install vue-color -S

颜色选择器插件的使用

<template>
    <div class="change-color-box">
        <div class="change-color-select">
            <!-- <div>color-picker</div> -->
            <div class="item">
                <p>Chrome</p>
                <chrome-picker v-model="colors" />
            </div>

            <div class="item">
                <p>Sketch</p>
                <sketch-picker v-model="colors" />
            </div>

            <!-- <div class="item">
                <p>Photoshop</p>
                <photoshop-picker
                    v-model="colors"
                />
            </div> -->

            <div class="item">
                <p>Material</p>
                <material-picker v-model="colors" />
            </div>

            <div class="item">
                <p>Slider</p>
                <slider-picker v-model="colors" />
            </div>

            <div class="item">
                <p>Compact</p>
                <compact-picker v-model="colors" />
            </div>
            
            <div class="item">
                <p>Swatches</p>
                <swatches-picker v-model="colors" />
            </div>
            
            <div class="item">
                <p>Twitter</p>
                <twitter-picker v-model="colors" />
            </div>

            <div class="item">
                <p>Grayscale</p>
                <grayscale-picker v-model="colors" @input="updateValue" />
            </div>
            
        </div>
        <div class="button-element">
            <div class="item1">
                <!-- <p>Sketch</p>
                <sketch-picker v-if="show" v-model="colors" /> -->

                <p>Photoshop</p>
                <photoshop-picker
                    v-if="show"
                    v-model="colors"
                    @input="updateValue1"
                    @ok="onOk"
                    @cancel="onCancel"
                    acceptLabel="确定"
                    cancelLabel="取消"
                    currentLabel="当前"
                    newLabel="新的"
                    head="颜色选择器"
                />
            </div>
            <button class="btn" @click="clickHandler">点击</button>
        </div>
    </div>
</template>

<script>
import {
  Material,
  Compact,
  Swatches,
  Slider,
  Photoshop,
  Chrome,
  Sketch,
  Twitter,
  Grayscale,
} from "vue-color";

export default {
    data() {
        return {
            colors: {
                color: "",
                hex: "#194d33",
                hsl: { h: 150, s: 0.5, l: 0.2, a: 1 },
                hsv: { h: 150, s: 0.66, v: 0.3, a: 1 },
                rgba: { r: 25, g: 77, b: 51, a: 1 },
                a: 1,
            },
            show: false
        }
    },
    created() {
		// 监听是否点击在photoshop颜色选择器上,是则进行显示,否则不进行显示
        document.body.onclick = (event) => {
            console.log('event', event)
            console.log('className', event.target.className)
            var e = event || window.event;
            var elem = e.target;
            var targetArea = document.getElementsByClassName('vc-photoshop');
            console.log('targetArea', targetArea)
            if(targetArea.length && targetArea[0].contains(elem)){
                console.log('区域内')
                this.show = true
            }else{
                // 区域外 但点击的是显示按钮则进行显示
                if(event.target.className == 'btn') {
                    this.show = true
                }
                // 区域外点击的不是显示按钮则不进行显示
                else {
                    this.show = false
                }
            }
        }
    },
    components: {
        "material-picker": Material,
        "compact-picker": Compact,
        "swatches-picker": Swatches,
        "slider-picker": Slider,
        "photoshop-picker": Photoshop,
        "chrome-picker": Chrome,
        "sketch-picker": Sketch,
        "twitter-picker": Twitter,
        "grayscale-picker": Grayscale,
        "color-picker": ColorPicker
    },
    methods: {
        // 值改变事件
        updateValue(value) {
            console.log(value)
            console.log(this.color)
        },
        updateValue1(value) {
            console.log(111, value)
            console.log(11, this.colors)
        },
        clickHandler() {
            this.show = !this.show
        },
        onOk(event) {
            console.log('确定', event)
            this.show = false
        },
        onCancel(event) {
            console.log('取消', event)
            this.show = false
        },
    }
}
</script>

<style lang="less" scoped>
.change-color-select {
    display: flex;
    flex-wrap: wrap;

    .item {
       margin-right: 30px; 
       margin-top: 30px;
    }
}

.change-color-box {
    // position: relative;
    .item1 {
        position: absolute;
        // top: 0px;
        // left: 0px;
        top: 918px;
        left: 114px;
    }

    button {
        position: relative;
    }

    .button-element {
        margin-bottom: 100px;
    }
}
</style>

上述代码在浏览器的具体呈现
上述代码在浏览器的具体呈现

当点击按钮时会显示设置了属性的Photoshop组件,点击其他地方Photoshop组件会消失
在这里插入图片描述

选择颜色时this.colors的值

{
    "hsl": {
        "h": 150.0000000000001,
        "s": 0.7438311971401168,
        "l": 0.4596201750000001,
        "a": 1
    },
    "hex": "#1ECC75",
    "hex8": "#1ECC75FF",
    "rgba": {
        "r": 30,
        "g": 204,
        "b": 117,
        "a": 1
    },
    "hsv": {
        "h": 150.0000000000001,
        "s": 0.8531,
        "v": 0.8015000000000001,
        "a": 1
    },
    "oldHue": 150.0000000000001,
    "source": "hsva",
    "a": 1
}

Photoshop组件的属性

属性描述
v-model所选的颜色值,是一个对象
@input鼠标正在移动选择颜色时的事件,其事件event颜色选择器的值
@ok点击确定按钮触发的事件函数
@cancel点击取消按钮触发的事件函数
acceptLabel确定按钮的文本描述
cancelLabel取消按钮的文本描述
currentLabel鼠标移动选颜色前颜色的文本描述
newLabel当前颜色的文本描述
head颜色选择器的标题
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值