Vue-颜色选择器实现方案——>Vue-Color( 实战*1+ Demo*7)

使用 Vue-Color

本篇博客提供一个实用的例子,以及例子对应的代码还有该组件其他类型的选择器的Demo

Vue-Color实战

npm install vue-color --save

结合ElementUI 实现如下效果

在这里插入图片描述
下面是具体代码

引入依赖

import {Sketch} from "vue-color";

引入组件

components: {"sketch-picker": Sketch},

组件代码

  <el-popover
      placement="bottom"
      width="200"
      trigger="click"
      content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。">
      <el-button slot="reference" class="color-box"
           :style="{ backgroundColor: OtherForm.colors.color,padding: '0px' }">
          <div style="width: 100%;height:100%;border: 2px solid gainsboro">
          <i  style="font-size: 25px; font-weight: lighter;line-height: 34px; color: white" class="el-icon-arrow-down icon">
          </i>
          </div>
      </el-button>
      <sketch-picker v-model="OtherForm.colors.color" @input="colorValueChange"/>
  </el-popover>

数据格式

起作用的是colors

      OtherForm: {
        ID: "",
        FileName: "",
        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
        }
      },

颜色更新方法

    // 颜色值改变事件处理
    colorValueChange(val) {
      // console.log(val)
      // 取颜色对象的十六进制值
      this.OtherForm.colors.color = val.hex
    },

覆盖ElementUI的CSS样式

不要加 scoped 加了就覆盖不了了
我放到APP里了

.vc-sketch {
  position: relative;
  width: 200px;
  padding: 0 0 0;
  box-sizing: initial;
  background: #fff;
  border-radius: 4px;
  box-shadow: 0 0 0 0 transparent, 0 0 0 transparent;
}
.el-popper[x-placement^=bottom] {
  margin-top: 0;
  padding: 0;
}
.el-popover {
  position: absolute;
  background: white;
  min-width: 150px;
  border-radius: 4px;
  border: 0 solid white;
  padding: 0px;
  z-index: 2000;
  color: #606266;
  line-height: 1.4;
  text-align: justify;
  font-size: 14px;
  box-shadow: 0 2px 12px 0 rgba(0,0,0,.0);
  word-break: break-all;
}
.el-popover--plain {
  padding: 20px;
}

该组件的一些其他颜色选择器Demo以及代码

该组件所有类型颜色选取的展示效果图

在这里插入图片描述

<template>
    <div class="color">
        <div> 1.material
            <material-picker v-model="colors" />
        </div>
        <div> 2.compact
            <compact-picker v-model="colors" />
        </div>
        <div> 3.swatches
            <swatches-picker v-model="colors" />
        </div>
        <div> 4.slider
            <slider-picker v-model="colors" />
        </div>
        <div> 5.sketch
            <sketch-picker v-model="colors" />
        </div>
        <div> 6.chrome
            <chrome-picker v-model="colors" />
        </div>
        <div> 7.photoshop
            <photoshop-picker v-model="colors" />
        </div>
    </div>
</template>
<script>
import {
    Material,
    Compact,
    Swatches,
    Slider,
    Photoshop,
    Chrome,
    Sketch,
    Twitter,
    Grayscale
} from "vue-color";
export default {
    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
    },
    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
            }
        };
    },
    mounted() {},
    methods: {
        /* 颜色选择器 */
        updateValue(value) {
            console.log(value);
            console.log(this.color);
        }
    }
};
</script>
 
<style lang="less" scoped>
.color {
    display: flex;
    flex-wrap: wrap;
    text-align: center;
    div {
        margin: 20px;
        font-size: 18px;
        font-weight: bold;
        border: 1px solid #eee;
        padding: 10px;
    }
}
</style>

——>Vue-Color官网地址<——

Vue是一种用于构建用户界面的渐进式JavaScript框架,它可以帮助开发者更高效地构建单页面应用程序。而vue-better-scroll是基于Vue的一款优秀的滚动插件,它能够实现更流畅的滚动效果,并且支持上下左右的滚动和联动效果。 如果需要实现左右侧菜单的联动效果,我们可以通过使用vue-better-scroll的scrollToElement方法来实现。首先,我们需要在Vue中引入vue-better-scroll插件并进行配置。 在Vue实例的data中,我们可以定义左右两个菜单的数据,例如leftMenu和rightMenu,并在created生命周期中初始化数据。然后,在mounted生命周期中,我们可以通过refs属性获取到两个菜单容器的DOM元素。 接下来,我们需要监听左边菜单的点击事件,当点击左边菜单的某个选项时,我们可以通过调用vue-better-scroll的scrollToElement方法,将右边菜单滚动到对应的位置。通过传递目标元素的选择器或具体的DOM元素,我们可以实现左右菜单的联动效果。 具体实现时,我们可以在左边菜单的点击事件中,使用this.$refs来访问右边菜单容器,并调用scrollToElement方法,将目标元素滚动到可视区域。通过传递选择器或具体DOM元素作为参数,我们可以精确控制滚动的位置。 同时,为了视觉上更好的效果,我们还可以给目标元素添加样式,如高亮当前选中项,以提升用户体验。 最后,通过一系列的事件处理和样式设置,我们就可以实现左右侧菜单的联动demo了。 以上就是使用Vuevue-better-scroll实现左右侧菜单联动demo的大致思路和步骤。通过合理运用这两个工具,我们可以轻松地实现出一个流畅、友好的用户界面效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值