Element plus部分组件样式覆盖记录

news2024/9/20 15:04:41

文章目录

        • 一、el-button 样式
        • 二、Popconfirm 气泡确认框
        • 三、Popover 气泡卡片
        • 四、Checkbox 多选框
        • 五、Pagination 分页
        • 六、Form 表单
        • 七、Table 表格

一、el-button 样式

html:

<el-button class="com_btn_style">button</el-button>

样式覆盖(less):

<style lang="less" scoped>
.com_btn_style {
    background-color: #eef2ff!important;
    border-radius: 6px;
    box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
    color: #705697!important;
    cursor: pointer;
    font-family: Verdana, monospace,sans-serif;
    height: 36px;
    line-height: -36px;
    text-align: center;
    transition: box-shadow 0.15s, transform 0.15s;
    user-select: none;
    font-size: 15px;
    outline: none;
    border: 0;

    &:hover {
        box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 3px, rgba(0, 0, 0, 0.23) 0px 1px 3px
    }
    &:active {
        box-shadow: #d6d6e7 0 3px 7px inset;
        transform: translateY(2px);
    }
}
</style>

效果展示:

效果展示

二、Popconfirm 气泡确认框

html:

<el-popconfirm
    width="230"
    confirm-button-text="Yes"
    cancel-button-text="No"
    confirm-button-color="#ff0000"
    :hide-after="0"
    :icon="InfoFilled"
    icon-color="#626AEF"
    title="这是一段内容确定删除吗?"
    @confirm="deleteData"
    ><template #reference>
        <el-button class="com_btn_style">delete</el-button>
    </template>
</el-popconfirm>

script:

<script lang="ts" setup>
import { InfoFilled } from "@element-plus/icons-vue";

const deleteData = () => {
    console.log("-- delete --");
};
</script>

样式覆盖(less):

<style lang="less" scoped>
.com_btn_style {...}
</style>

<style lang="less">
.el-popconfirm .el-popconfirm__action {
    .el-button {
        &:hover {
            box-shadow: rgba(0, 0, 0, 0.15) 1.95px 1.95px 2.6px;
            transform: translateY(-2px);
        }
        &:active {
            box-shadow: #d6d6e7 0 3px 7px inset;
            transform: translateY(2px);
        }
    }

    .el-button:nth-child(2) {
        border-color: #eef2ff;
        background-color: #eef2ff;
        color: #705697;
    }
}
</style>

效果展示:

效果展示

三、Popover 气泡卡片

html:

<el-popover effect="light" trigger="hover" placement="top" width="auto">
    <template #default>
        <div>
            <p class="com_url_info">https://www.xxx.com</p>
            <el-popconfirm
                width="230"
                confirm-button-text="Yes"
                cancel-button-text="No"
                confirm-button-color="#ff0000"
                :hide-after="0"
                :icon="InfoFilled"
                icon-color="#626AEF"
                title="使用默认浏览器打开链接?"
                @confirm="goToLink"
                ><template #reference>
                    <span class="com_tip_btn"> <el-icon><Promotion /></el-icon> </span>
                </template>
            </el-popconfirm>
            <span class="com_tip_btn" @click="copyLink"> <el-icon><CopyDocument /></el-icon> </span>
        </div>
    </template>
    <template #reference>
        <el-tag> <el-icon><Link /></el-icon> </el-tag>
    </template>
</el-popover>

script:

<script lang="ts" setup>
import { InfoFilled,Promotion,CopyDocument,Link } from "@element-plus/icons-vue";

const goToLink = () => {
    console.log("goToLink");
};
const copyLink = () => {
    console.log("copyLink");
};
</script>

样式覆盖(less):

<style lang="less" scoped>

.el-tag {
    font-size: 13px;
    padding: 10px 5px;
    color: #7a629f;
    border-color: #eef2ff;
    background-color: #fafafa;
    box-sizing: border-box;
}

.com_tip_btn {
    display: inline-block;
    width: 27px;
    height: 27px;
    line-height: 27px;
    text-align: center;
    border-radius: 3px;
    cursor: pointer;

    &:hover {
        color: #7a629f;
        background-color: #eef2ff;
    }
}

.com_url_info {
    display: inline;
    padding: 5px;
    margin-right: 5px;
    max-width: 340px;
    box-sizing: border-box;
    border-radius: 2px;
    background-color: #eef2ff;

    overflow: hidden;
    text-overflow: ellipsis;
    text-wrap: nowrap;
}
</style>

<style lang="less">
.el-popconfirm .el-popconfirm__action {
    .el-button {
        &:hover {
            box-shadow: rgba(0, 0, 0, 0.15) 1.95px 1.95px 2.6px;
            transform: translateY(-2px);
        }
        &:active {
            box-shadow: #d6d6e7 0 3px 7px inset;
            transform: translateY(2px);
        }
    }

    .el-button:nth-child(2) {
        border-color: #eef2ff;
        background-color: #eef2ff;
        color: #705697;
    }
}
</style>

效果展示:

效果展示

四、Checkbox 多选框

html:

<div id="checkbox_group">
    <el-checkbox-group v-model="checkedVal">
        <el-checkbox v-for="item in checkList" :label="item" :value="item" />
    </el-checkbox-group>
</div>

script:

<script lang="ts" setup>
import { ref, watch } from "vue";

// 被选中的选项
const checkedVal = ref([]);
const checkList = ["https://www.xxx1.com", "https://www.xxx2.com"];

watch(checkedVal, (newVal) => {
    console.log(newVal);
});
</script>

样式覆盖(less):

<style lang="less" scoped>

#checkbox_group {
    width: 300px;
    height: 70px;
    padding: 10px 0 0 20px;
    border-radius: 5px;
    background-color: #f9f9f9;
}

.el-checkbox-group {
    display: flex;

    flex-direction: column;
    justify-items: center;
}

.el-checkbox {
    width: 18px;
    height: 18px;
    margin: 5px 0;
    opacity: 0.8;
    transform: scale(1.4);
    cursor: pointer;
    z-index: 1;
}

// 修改选中时的标签颜色
/deep/.el-checkbox__input.is-checked+.el-checkbox__label {
    color: #b2c1f4 !important;
}

// 修改复选框背景色和边框颜色
/deep/.el-checkbox__inner {
    background-color: rgba(255, 255, 255, 0.2);
    border-color: #bbb;
}

// 修改复选框选中后的背景色
/deep/.el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
    background-color: #b2c1f4 !important;
    border: 1px solid #eef2ff !important;
}

// 鼠标经过复选框
/deep/.el-checkbox__inner:hover {
    border-color: #eef2ff;
}

// 修改复选框选中后的边框颜色
/deep/.el-checkbox__input.is-focus .el-checkbox__inner {
    border-color: #eef2ff !important;
}
</style>

效果展示:

效果展示

五、Pagination 分页

html:

<div id="pagination_box">
    <el-pagination layout="prev, pager, next" :page-count="10" :page-size="24" :hide-on-single-page="true" @current-change="handleCurrentChange" />
</div>

script:

<script lang="ts" setup>
const handleCurrentChange = (page: number) => {
    console.log(page);
}
</script>

样式覆盖(less):

<style lang="less" scoped>

// 公共样式 - 按钮被选中时的样式
.com_click_active {
    border-radius: 5px;
    box-shadow: #d6d6e7 0 3px 7px inset;
    transform: translateY(2px);
}

#pagination_box {
    position: relative;
}

.el-pagination {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    padding-bottom: 5px;
}

// 页码按钮样式
/deep/.el-pagination li {
    &:active {
        .com_click_active();
    }
    &:hover {
        // color: #d3606f;
        color: #b2c1f4;
        font-weight: 700;
    }
    &:focus {
        .com_click_active();
    }
}

/deep/.el-pager li.is-active {
    color: #d3606f;
    // color: #b2c1f4;
    font-weight: 700;
}

// 上下页按钮样式
/deep/.el-pagination .btn-next,
/deep/.el-pagination .btn-prev {
    &:active {
        .com_click_active();
    }
    &:hover {
        color: #7b37e8;
    }
}
</style>

效果展示:

效果展示

六、Form 表单

html:

<el-form :model="form" label-width="auto" size="default">
    <!-- 查询 -->
    <el-form-item label="Query" prop="q">
        <el-input v-model="form.q" placeholder="Search query" Spellcheck="false" clearable />
    </el-form-item>
    <!-- 排序时间 -->
    <el-form-item label="TopRange" prop="topRange">
        <el-select v-model="form.topRange" placeholder="Method of sorting results" clearable>
            <el-option label="1M" value="1M" />
            <el-option label="2M" value="2M" />
            <el-option label="3M" value="3M" />
        </el-select>
    </el-form-item>
    <!-- 分类 -->
    <el-form-item label="Categories" prop="categories">
        <el-checkbox-group v-model="form.categories">
            <el-checkbox-button value="100" name="categories"> general </el-checkbox-button>
            <el-checkbox-button value="010" name="categories"> anime </el-checkbox-button>
            <el-checkbox-button value="001" name="categories"> people </el-checkbox-button>
        </el-checkbox-group>
    </el-form-item>
    <!-- 过滤 -->
    <el-form-item label="Filter" prop="ai_art_filter">
        <el-switch v-model="form.ai_art_filter" />
    </el-form-item>
    <!-- 排序方法 -->
    <el-form-item label="Order" prop="order">
        <div class="custom-style">
            <el-segmented v-model="form.order" :options="['desc', 'asc']" />
        </div>
    </el-form-item>
</el-form>

script:

<script setup lang="ts">
import { reactive } from "vue";

interface FormParams {
    q?: string;
    topRange?: string,
    categories?: string[];
    ai_art_filter: boolean;
    order?: string;
}

// 表单默认值
const form = reactive<FormParams>({
    q: "",
    topRange: "1M",
    categories: ["100", "010"],
    ai_art_filter: true,
    order: "desc",
});
</script>

样式覆盖(less):

<style lang="less" scoped>

// 标签字体加粗
::v-deep .el-form-item__label-wrap {
    font-weight: 700;
}

.el-input {
    // 边框颜色
    --el-input-border-color: #eef2ff !important;
    // 背景颜色
    --el-input-bg-color: #f9f9f9;
    // 获取焦点后的边框颜色
    --el-input-focus-border-color: #ccc !important;
    // 鼠标悬停边框颜色
    --el-input-hover-border-color: #ccc !important;
    // 边框圆角
    // --el-input-border-radius: 5px;
}

// 修改下拉框样式
::v-deep .el-select .el-select__wrapper.is-focused {
    box-shadow: 0 0 0 1px #b1bfee;
}
.el-select-dropdown__item.is-selected {
    color: #b1bfee!important;
}

// 修改 el-checkbox-button 样式
.el-form .el-form-item .el-checkbox-group .el-checkbox-button {
    ::v-deep .el-checkbox-button__original:checked + span {
        color: #705697;
        background-color: #f3f3ff !important;
        border: 1px solid #705697 !important;
    }
    ::v-deep span {
        font-weight: 700;
        color: #c4b7d7;
        border: 1px solid #bbb !important;
    }
    ::v-deep span:hover {
        color: #705697;
    }
}

// 修改 el-switch__input 样式
::v-deep .el-switch__input:checked + .el-switch__core {
    background-color: #cfcffb !important;
    border: 1px solid #eef2ff !important;
}

// Segmented 分段控制器
.custom-style .el-segmented {
    --el-segmented-item-selected-color: rgba(112, 86, 151);
    --el-segmented-item-selected-bg-color: #e1e1f8;
    --el-border-radius-base: 7px;
    font-weight: 700;
    font-size: 15px;
    color: #aaa;
}
</style>

效果展示:

效果展示

七、Table 表格

主要修改表格中的复选框,并隐藏全选复选框的中间状态。

html:

<el-table :data="tableData" style="width: 100%">
    <el-table-column type="selection" width="55" />
    <el-table-column label="Date" width="120">
        <template #default="scope">{{ scope.row.date }}</template>
    </el-table-column>
    <el-table-column property="name" label="Name" width="120" />
</el-table>

script:

<script lang="ts" setup>
import { ElTable } from "element-plus";

interface User {
    date: string;
    name: string;
}
const tableData: User[] = [
    {
        date: "2016-05-04",
        name: "Aleyna Kutzner"
    },
    {
        date: "2016-05-03",
        name: "Helen Jacobi"
    },
];
</script>

样式覆盖(less):

<style lang="less" scoped>
// 修改复选框选中时的颜色
/deep/.el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
    background-color: #d2dbf8 !important;
    border: 1px solid #eef2ff !important;
}
// 修改复选框默认状态样式
/deep/.el-checkbox__inner {
    width: 16px !important;
    height: 16px !important;
    background-color: #fff !important;
    border-color: #aaa !important;
    border-radius: 2px;
    &:hover {
        border-color: #aaa;
    }
    // 隐藏全选复选框的中间状态
    &::after {
        width: 0;
        height: 0;
        border-color: transparent !important;
        transform: unset !important;
    }
}

/deep/.el-checkbox__input.is-focus {
    border-color: #eef2ff !important;
}
</style>

效果展示:

效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2047872.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

端口隔离 Port isolation 华为交换机配置端口隔离

Port isolation 什么是端口隔离 如果用户想进行二层隔离&#xff0c;用户可以将不同的端口加入不同的VLAN&#xff0c;但这样会浪费有限的VLAN资源。采用端口隔离功能&#xff0c;可以实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中&#xff0c;就可以实现隔离…

hyper-v连接显卡,hyper-v使用显卡能力、Hyper-V显卡虚拟化VMGpu设置

hyper-v连接显卡&#xff0c;hyper-v使用显卡能力、Hyper-V显卡虚拟化VMGpu设置 现在越来越多的软件在使用时&#xff0c;都会调用GPU获得更好的使用效果。如&#xff1a;浏览器的硬件加速模式。由于Nvidia和AMD都屏蔽了家用显卡虚拟化技术&#xff0c;常用的虚拟机也无法对显卡…

交互式散点图,快速提升你的PPT观赏性|每日科研绘图·24-08-17

一、散点图基础概念 散点图是一种非常直观且功能强大的图表&#xff0c;用于探索和展示两个数值变量之间的相关性。这种图表通过在二维平面上绘制数据点&#xff0c;使得观察者能够一眼看出变量间的潜在联系。 1-1&#xff1a;散点图的构成 X轴&#xff08;横轴&#xff09;&…

电话语音机器人优势很多

智能语音机器人近年来备受关注&#xff0c;受到很多个人或是企业的青睐&#xff0c;其广泛受到欢迎归因于智能语音机器人对电话销售提供了极大的帮助&#xff0c;其可以完美替代人工进行电销外呼服务&#xff0c;不间断的工作&#xff0c;不带有任何情绪色彩&#xff0c;且能实…

Hive:大数据时代的SQL魔法师

时间&#xff1a;2024年08月17日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 微信&#xff1a;wei_wei10 音频地址&#xff1a;https://xima.tv/1_ZRh54d?_sonic0 希望大家帮个忙&#xff01;如果大家有工作机会&#xff0c;希望帮小蒋内推一下&#x…

半岛体存储器常见类型简介

前言 个人邮箱&#xff1a;zhangyixu02gmail.com在学习 ESP32 的存储器结构时&#xff0c;发现 DRAM 是 Data RAM 而非 Dynamic RAM&#xff0c;IRAM 是 Instruction RAM 而非 Internal RAM 。突然发现自己对于这一块的知识还比较混乱&#xff0c;因此查阅相关资料进行学习整理…

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(一)---UnrealCV获取深度+分割图像

前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车&#xff0c;并使用通过跨平台的方式进行ROS2和UE5仿真的通讯&#xff0c;达到小车自主导航的目的。本教程使用的环境&#xff1a; ubuntu 22.04 ros2 humblewindows11 UE5.4.3python8 本系列教程将涉及以…

04-正弦波,衰减正弦波,正弦波脉冲冲串的产生

1.设置波形线宽 点击Waveforms a 2.添加Comment 3.添加正弦波 3.1先添加一个电压源 3.2增加波形窗口 3.3右键选择Advanced 3.31原始正弦波 名称含义①DC offset直流偏置②Amplitude幅值③Freq频率④Tdelay延迟⑤Theta衰减⑥Phi相位⑦Ncycles产生正弦波的个数 设置完成后&am…

数据结构与算法——BFS(广度优先搜索)

算法介绍&#xff1a; 广度优先搜索&#xff08;Breadth-First Search&#xff0c;简称BFS&#xff09;是一种遍历或搜索树和图的算法&#xff0c;也称为宽度优先搜索&#xff0c;BFS算法从图的某个节点开始&#xff0c;依次对其所有相邻节点进行探索和遍历&#xff0c;然后再…

第T8周:使用TensorFlow实现猫狗识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 文章目录 一、前期工作1.设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;2. 导入数据 二、数据预处理1、加载数据2、再次检查数据3. 配置数据集4…

低代码开发的崛起:机遇与挑战

近年来&#xff0c;“低代码”开发平台的迅速崛起&#xff0c;已经成为IT行业中不可忽视的趋势。这些平台承诺让非专业人士也能快速构建应用程序&#xff0c;通过减少代码编写的需求&#xff0c;大幅提高开发效率。对于许多企业而言&#xff0c;低代码开发工具成为了一个加速数…

Real-Time Open-Vocabulary Object Detection:使用Ultralytics框架进行YOLO-World目标检测

Real-Time Open-Vocabulary Object Detection&#xff1a;使用Ultralytics框架进行YOLO-World目标检测 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用Ultralytics框架进行YOLO-World目标检测进行训练进行预测进行验证 扩展目标跟踪设置提示 参考文献 前言 由…

windows核心编程 第14章,虚拟内存:获取系统信息

windows核心编程 第14章&#xff0c;虚拟内存&#xff1a;获取系统信息 14,获取系统消息 文章目录 windows核心编程 第14章&#xff0c;虚拟内存&#xff1a;获取系统信息14.1 系统信息 14.1 系统信息 许多操作系统的值是根据主机而定的&#xff0c;比如页面的大小&#xff0…

无人机挂载垂直抛投灭火弹技术详解

随着城市化进程的加快&#xff0c;高层建筑、森林、化工园区等区域火灾防控难度日益增大。传统消防手段在面对复杂地形或高层火灾时&#xff0c;往往存在响应速度慢、作业难度大、人员安全风险高等问题。无人机挂载垂直抛投灭火弹技术的出现&#xff0c;为高效、安全、精准的火…

conda install vs pip install

1背景 最近使用pyinstaller打包python程序&#xff0c;启动程序的时候&#xff0c;发现了以下的报错信息 Failed to execute script "pyi_rth_pkgres" due to unhandled dll load failed while importing pyexpat后面查阅了相关文档&#xff0c;比如根据stackoverf…

Vue3+Ts封装下拉懒加载自定义指令

文件夹目录如下: 使用方式: <template><divclass="time-line"v-infinite-scroll="{loadMore: loadMoreItems,threshold: 100 // 当滚动到距离底部 100 像素时触发加载}"> </div> </template><script lang="ts" se…

7次多项式对若干个点进行拟合,并生成图像|MATLAB实现

文章目录 拟合运行结果完整代码拟合 MATLAB对数据进行拟合的意义是通过数学模型和统计方法对实际数据进行分析和预测。拟合可以帮助我们理解数据背后的规律和趋势,从而做出科学决策。 拟合的意义 揭示数据的规律 预测未来趋势 数据修正和异常检测 数据分析和模型验证 总之,…

Prometheus+Grafana保姆笔记(2)——监控Spring Boot微服务程序

Prometheus Grafana 的组合在微服务项目中可以完成许多DevOps任务&#xff0c;它们共同提供了强大的监控和可视化功能。 我们陆续介绍Prometheus Grafana 的相关用法。 上一期&#xff0c;我们介绍了PrometheusGrafana的安装&#xff0c; PrometheusGrafana保姆笔记&#…

javaFx桌面程序开发代码示例

程序效果&#xff1a; 弹窗内容&#xff1a; 1.启动类 HelloJavaFX&#xff1a; import javafx.application.Application; import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene…

赵本山:你把这玩意借我带上,黄晓娟:驴蒙脸你要带这个?--小品《麻将豆腐》(中3)的台词与解说

赵本山&#xff1a;你把这玩意借我带上&#xff0c;黄晓娟&#xff1a;驴蒙脸你要带这个&#xff1f; --小品《麻将豆腐》&#xff08;中3&#xff09;的台词与解说 &#xff08;接上&#xff09; 黄晓娟&#xff08;饰演小姨子&#xff09;&#xff1a;忘了麻将 赵本山&…