animate改变背景颜色_Vue实战071:Element实现WEB颜色选择器功能

WEB颜色选择器

WEB颜色选择器是一款基于网页格式在线选择颜色色值的工具,在屏幕上看到的任何色彩都是通过红、绿、蓝三原色组成的。这三个颜色通道的变化以及它们相互之间的叠加起来可以得到各式各样的颜色,这个标准几乎包括了人类视力所能感知的所有颜色。通过WEB颜色选择器允许用户通过选择相应的颜色获取对应的颜色值,并将该颜色值赋予对应的DOM元素从而得到我们想要的色彩效果。

4f367eec7128fd48b172db405a7cc24a.png

​ 在Vue中实现WEB颜色选择器也简单,有很多现成的组件可以使用。Element是一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库经常被我们所用到,这里最容易实现的就是借用element组件中的ColorPicker组件来实现。Element组件安装及引用如下:

704cf6f8577c53264c4178d667128378.png

定义颜色选择器组件

这里定义了一个通用的颜色选择器组件,默认颜色来自父级组件。当面板中当前显示的颜色发生改变时触发active-change事件调用activeChange方法,将改变后的值通过$emit传递给父级从而更新父级组件中的颜色代码实现换色效果。

cac1cc64e25caf7d32f38fcbac5c0daf.png

这里需要注意的是组件中我新定义了一个Color变量来接受父级传递过来的属性值,再将其绑定到DOM元素中而不是直接调用prop中传递过来的值。这样做的原因是prop传递过来的值都是单向下行绑定,子组件不能修改由父组件传递过来的值。否则当清空颜色值时会报下错误警告:

5256d11f57f45483419a9f0b5b0dec0d.png

​ 调用颜色选择器组件

DOM元素通过:style="{backgroundColor:bgColor}"动态绑定颜色样式,然后将改颜色值传递给组件color-select并通过监听事件renewColor来获取最新的颜色值。这样就实现了动态更新图片背景色的效果!

e39459e82e95d4afdd25129bb0310e07.png

ColorPicker属性说明

下面是Element提供的ColorPicker组件的属性说明,这里预定义颜色我们可以结合Vuex实现历史选择颜色列表功能,当用户选择一个颜色的时候去与store中已有的颜色组匹配,如果已存在则跳过如果没有则追到组前方。这样下次再访问的时候我们就可以直接快速的获取上一次选择的颜色值了。

a00ab40c103477b0a6e771769631cb1c.png

ColorPicker事件说明

这里主要是用来监听用户选择面板中当前显示的颜色发生改变的时候及时的将该值传递给父级组件实现实时更新组件背景色,主要用到的是active-change事件,个人理解清空应该会将背景色置为透明状态的,但这里当我们清空颜色时无法触发active-change事件。

385c572c7fc129c95d98e337f2cbc27f.png

总结:

以上内容是小编给大家分享的Vue实战071:Element实现WEB颜色选择器功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。更多Vue实战技巧可以参考专栏:Vue实战系列,在此也非常感谢大家对小编的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用`v-for`指令结合`:class`绑定来动态渲染多个元素,并且通过Vue的数据驱动特性来控制它们的显示与隐藏。具体实现可以参考以下代码: ```html <template> <div> <div v-for="(item, index) in elements" :key="index" :class="[item.visible ? 'animate__animated animate__fadeIn' : 'animate__animated animate__fadeOut', 'threebox_image_box']" > 这是第 {{ index + 1 }} 个元素 </div> <button @click="hideElements">隐藏元素</button> </div> </template> <script> export default { data() { return { elements: [ { visible: true }, { visible: true }, { visible: true }, { visible: true }, { visible: true }, { visible: true }, { visible: true }, { visible: true } ] }; }, methods: { hideElements() { for (let i = 0; i < this.elements.length; i++) { this.elements[i].visible = false; } } } }; </script> <style> .threebox_image_box { display: block; } .animate__animated { animation-duration: 1s; } .animate__fadeIn { animation-name: fadeIn; } .animate__fadeOut { animation-name: fadeOut; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } </style> ``` 在上面的代码,我们首先定义了一个`elements`数组,它包含了需要动态渲染的多个元素,并且每个元素都有一个`visible`属性,用于控制它们的显示与隐藏。然后在模板使用`v-for`指令循环渲染多个元素,并且通过`:class`绑定来动态设置元素的`class`属性,以便实现渐变动画效果。最后在方法,我们通过修改`elements`数组每个元素的`visible`属性,来控制它们的显示与隐藏。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值