首页 > 其他分享 >如何修改element-plus原有样式+解决冒泡带来的问题

如何修改element-plus原有样式+解决冒泡带来的问题

时间:2024-05-08 10:12:18浏览次数:34  
标签:const color element 取色 html plus 冒泡 ref 255

目录

需求:当我在取色器中选择好颜色后,把element-plus默认的.el-button--primary这个按钮的背景色(--el-button-bg-color)进行切换

1.静态搭建

<template>
    <el-popover placement="bottom" title="主题设置" :width="200" trigger="hover">
        <!-- 表单组件 -->
        <el-form>
            <el-form-item label="主题颜色">
                <el-color-picker v-model="color" size="small" show-alpha :predefine="predefineColors" />
            </el-form-item>
        </el-form>
        <template #reference>
            <el-button size="small" icon="Setting" circle></el-button>
        </template>
    </el-popover>
</template>
<script setup lang="ts">
import { ref } from 'vue'
//颜色组件需要的数组
const color = ref('rgba(255, 69, 0, 0.68)')
const predefineColors = ref([
    '#ff4500',
    '#ff8c00',
    '#ffd700',
    '#90ee90',
    '#00ced1',
    '#1e90ff',
    '#c71585',
    'rgba(255, 69, 0, 0.68)',
    'rgb(255, 120, 0)',
    'hsv(51, 100, 98)',
    'hsva(120, 40, 94, 0.5)',
    'hsl(181, 100%, 37%)',
    'hsla(209, 100%, 56%, 0.73)',
    '#c7158577',
]);
</script>
<script lang="ts">
export default {
    name: "Setting"
}
</script>
<style lang="scss" scoped></style>
  • 效果如下

2.修改element-plus原有样式

//绑定事件
<el-color-picker @change="setColor" v-model="color" size="small" show-alpha :predefine="predefineColors" />
//主题颜色的设置
const setColor=()=>{
    //通过js修改根节点的样式对象的属性与属性值
    const html=document.documentElement;
    console.log(html.style)
    html.style.setProperty('--el-color-primary',color.value)
}

3.问题

鼠标移动到按钮上,显示气泡框,气泡框里面包含取色器,当鼠标移动到取色器画布上时,取色器和气泡框会一起消失

  • 给下面的取色器加上:teleported=false可以解决

  • teleported:是否将当前取色器元素插入至 body 元素 默认值为true,false 表示保留在父级元素内

<el-color-picker :teleported=false @change="setColor" v-model="color" size="small" show-alpha :predefine="predefineColors" />

4.实现代码

<template>
    <el-popover placement="bottom" title="主题设置" :width="200" trigger="hover">
        <!-- 表单组件 -->
        <el-form>
            <el-form-item label="主题颜色">
                <el-color-picker :teleported=false @change="setColor" v-model="color" size="small" show-alpha :predefine="predefineColors" />
            </el-form-item>
        </el-form>
        <template #reference>
            <el-button size="small" icon="Setting" circle></el-button>
        </template>
    </el-popover>
</template>
<script setup lang="ts">
import { ref } from 'vue'
//颜色组件需要的数组
const color = ref('rgba(255, 69, 0, 0.68)')
const predefineColors = ref([
    '#ff4500',
    '#ff8c00',
    '#ffd700',
    '#90ee90',
    '#00ced1',
    '#1e90ff',
    '#c71585',
    'rgba(255, 69, 0, 0.68)',
    'rgb(255, 120, 0)',
    'hsv(51, 100, 98)',
    'hsva(120, 40, 94, 0.5)',
    'hsl(181, 100%, 37%)',
    'hsla(209, 100%, 56%, 0.73)',
    '#c7158577',
]);
//主题颜色的设置
const setColor=()=>{
    //通过js修改根节点的样式对象的属性与属性值
    const html=document.documentElement;
    console.log(html.style)
    html.style.setProperty('--el-color-primary',color.value)
}
</script>
<script lang="ts">
export default {
    name: "Setting"
}
</script>
<style lang="scss" scoped></style>

标签:const,color,element,取色,html,plus,冒泡,ref,255
From: https://www.cnblogs.com/lushuang55/p/18178387

相关文章

  • 二分法、冒泡排序
    【一】二分法二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法思路:首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤的操作。如......
  • element-plus获取表格当前行数据
    <el-table:data="filmList.result"><el-table-columnprop="id"label="编号"width="140"/><el-table-columnprop="title"label="书名"width="120"/>......
  • Mybatis-Plus 入门
    Mybatis-Plus简介Mybatis-Plus(简称MP)是一个Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发,提高效率而生。愿景:我们的愿景是成为MyBatis最好的搭档,就像 魂斗罗 中的1P、2P,基友搭配,效率翻倍。特性:无侵入:只做增强不做改变,引入它不会对现有工程产生......
  • [Unit testing - React] Use the waitForElementToBeRemoved Async Util to Await Unt
    Sometimes,youmightneedtowaitforanelementtodisappearfromyourUIbeforeproceedingwithyourtestsetupormakingyourassertion.Inthislesson,wewilllearnaboutawrapperaroundthewaitForthatallowsyoutowaituntilanelementisremove......
  • mybatisplus批量插入,分批的功能
    默认分批是1000一般也就改成100-1000之间示业务而定 比较简洁的一种方式如下原代码publicBooleaninsertTasks(List<TaskInfoEntity>tasks,StringagentId){//todo分批List<AgentTaskRelationEntity>entities=tasks.stream().map((......
  • 冒泡排序法(从左到右升序 )
    /**@filename: main.c@brief冒泡排序@author1810866453@163.com@date2024/05/6@version1.0:版本@property:属性介绍@note补充注意说明CopyRight(c)2023-2024RISE_AND_GRIND@163.comAllRightReseverd*///冒泡排序,指的是元素两两之间进行比较交......
  • 冒泡排序
    冒泡排序冒泡排序也被称为起泡排序,该排序算法的原理就是经过一系列的交换实现的,也就是用第一个元素和第二个元素进行比较,如果第一个元素的值大于第二个元素则两者位置互换,否则不交换。然后第二个元素和第三个元素比较.......最后序列中最大的元素被交换到了序列的尾部,这样就完成......
  • 冒泡排序
    数据结构冒泡排序//元素两两之间进行比较交换,需要比较n轮,每轮需比较m次,从左向右升序voidbubbleSort(intbuf[],intbufsize){inttemp=0;//临时存放交换值for(intn=1;n<bufsize;++n)//每轮需要比较n次{for(intm=0;m<bufsize-n;++m)//比较m轮......
  • 冒泡排序
    数据结构冒泡排序1.冒泡算法思想:冒泡排序也被称为起泡排序,该排序算法的原理就是经过一系列的*交换*实现的,也就是用第一个元素和第二个元素进行比较,如果第一个元素的值大于第二个元素则两者位置互换,否则不交换。然后第二个元素和第三个元素比较.......最后序列中最大的元素被交......
  • MybatisPlus的一些补充
    packagecom.dao.repository;importcom.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;importcom.baomidou.mybatisplus.extension.service.impl.ServiceImpl;importcom.dao.entity.MedicareCatalogLimitPriceInfoDO;importcom.dao.mapp......