css iconfont图标样式修改,js 点击后更改样式

news2025/5/18 8:31:06

背景:

在vue项目中,通过点击/鼠标覆盖,更改选中元素的样式,可以通过js逻辑,也可以根据css样式修改。包括以下内容:iconfont图标的引入以及使用,iconfont图标样式修改【导入文件是纯白,改为蓝色渐变】

效果展示:

核心代码:

:class="{ sideActive: store.currentRouterName === item.name }">

一、布局html 

//html
<el-aside v-if="store.slideList.length > 1">
                    <el-menu :unique-opened="true" @select="handleSelect">
                        <BsSide v-for="(slideItem, index) in store.slideList" :key="index" :item="slideItem" />
                    </el-menu>
                </el-aside>
//<BsSide>封装
<template>
    <router-link :to="{ name: item.path }" custom v-slot="{ navigate }" v-if="!item.children && item.orderNum != 0">
        <el-menu-item :index="item ? item.orderNum + '' : ''" style="padding: 0" @mouseenter="sideMenu(item, navigate)"
            @click="item.componentLink && changeMenu(item)" v-if="!item.isMeun">
            <div v-if="item.isOwnMeun" class="side-item no-user-select"
                :class="{ sideActive: store.currentRouterName === item.name }">
                <div class="iconImg">
                    <div class="iconfont" :class="item.icon"></div>
                </div>
                <span>{{ item.orderName }}</span>
            </div>
            <div v-if="item.subMenu && item.name == store.currentRouterName && data.isOpenMenu" class="sub-menu-box">
                <div class="sub-menu no-user-select">
                    <div class="content" v-for="(menuItem, index) in item.subMenu" :key="index"
                        :class="{ activeMenu: store.menuName == menuItem.name || store.isMeunComponent.name == menuItem.name }"
                        @click.stop="changeMenu(menuItem)">
                        <div class="iconImg">
                            <div class="iconfont ico-img" :class="menuItem.icon"></div>
                        </div>
                        <div>{{ menuItem.text }}</div>
                    </div>
                </div>
                <div class="modal" @mouseenter="data.isOpenMenu = false"></div>
            </div>
        </el-menu-item>
    </router-link>
</template>

通过动态添加选中样式class此处名为【sideActive】 

二、样式css

默认渐变样式:

默认渐变样式通过设置iconfont图标的background-image样式+color:transparent【透明】实现,默认样式。

//iconfont图标颜色渐变
.iconfont {
    width: 100%;
    height: 40px;
    background-image: linear-gradient(180deg, #4CDFFF 0%, #FFFFFF 100%);
    -webkit-background-clip: text;
    color: transparent;
}

动态样式:

通过js判断是否满足条件,如果条件为true,则动态加上选中样式此处命名为 【sideActive】 

//选中样式
.sideActive {
    border: none;
    border-bottom: 2px solid;
    // color: #FFEEA8;
    border-image: linear-gradient(90deg, 
        rgba(19, 69, 117, 0), 
        rgba(255, 238, 168, 1), 
        rgba(19, 69, 117, 0)) 2 2;

    .iconfont {
        // background-image: linear-gradient(180deg, #4CDFFF 0%, #FFFFFF 100%);
        // -webkit-background-clip: text;
        color: #ffffff;
    }
}

写到这儿就实现了。。。

其它:

图标位置不是水平垂直,通过css修改样式

如果图标不是位于正中心,可以通过样式穿透实现样式的调整,这是我的,可以参考一下:

<style lang="scss" scoped>
:deep(.el-container) {
    height: 100%;
    width: 100%;
    position: relative;

    .el-header {
        --el-header-padding: 0;
        --el-header-height: auto;
    }

    .el-main {
        height: 100%;
        width: 100%;
        --el-main-padding: 0px;
        position: relative;
        overflow: hidden;
    }

    .el-aside {
        box-sizing: border-box;
        padding-top: 8px;
        width: 101px;
        font-size: 16px;
        background: #014467;
        position: relative;
        overflow: visible;

        .el-menu {
            background: none;
            border: none;

            .el-menu-item {
                font-size: 16px;
                font-family: Microsoft YaHei-Regular, Microsoft YaHei;
                font-weight: 400;
                color: rgba(255, 255, 255, 0.8);
                line-height: 20px;
                height: 90px;
                justify-content: center;
                border-top: 2px solid transparent;
                border-bottom: 2px solid rgba(35, 164, 192, 0.38);

                .side-item {
                    height: 100%;
                    display: flex;
                    justify-content: center;
                    align-items: center;
                    flex-direction: column;
//图标垂直居中

                    div {
                        font-size: 30px;
                        height: 40px;
                        display: flex;
                        justify-content: center;
                        align-items: center;
                    }
                }

            }

        .el-menu-item:hover {
            background: none;
        }
    }
}

 iconfont图标的引入以及使用

首先去iconfont官网下载,

解压下载的文件,它是一个压缩包:

 

然后把下载的文件,引入项目:

 放置到前端项目的src文件夹下:

在前端项目的main.js文件引入iconfont.css

使用的时候::class【重点】

<div class="iconImg">

                    <div class="iconfont" :class="item.icon"></div>

                </div> 

官网链接: 点击跳转

<i class="iconfont icon-xxx"></i> 

//备注:icon-xxx这是具体的名字

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

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

相关文章

开源项目实战学习之YOLO11:12.4 ultralytics-models-sam-memory_attention.py源码分析

👉 点击关注不迷路 👉 点击关注不迷路 👉 另外,前些天发现了一个巨牛的AI人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。感兴趣的可以点击相关跳转链接。 点击跳转到网站。 ultralytics-models-sam 1.sam-modules-memory_attention.pyblocks.py: 定义模…

【沉浸式求职学习day42】【算法题:滑动窗口】

沉浸式求职学习 长度最小的子数组水果成篮 关于算法题&#xff1a;滑动窗口的几个题目 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 s &#xff0c;找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组&#xff0c;并返回其长度。如果不存在符合条件的子数组…

LIIGO ❤️ RUST 12 YEARS

LIIGO &#x1f496; RUST 12 YEARS 今天是RUST语言1.0发布十周年纪念日。十年前的今天&#xff0c;2015年的今天&#xff0c;Rust 1.0 正式发行。这是值得全球Rust支持者隆重纪念的日子。我借此机会衷心感谢Rust语言创始人Graydon Hoare&#xff0c;Mozilla公司&#xff0c;以…

Linux基础开发工具二(gcc/g++,自动化构建makefile)

3. 编译器gcc/g 3.1 背景知识 1. 预处理&#xff08;进行宏替换/去注释/条件编译/头文件展开等) 2. 编译&#xff08;生成汇编) 3. 汇编&#xff08;生成机器可识别代码&#xff09; 4. 连接&#xff08;生成可执行文件或库文件) 3.2 gcc编译选项 格式 &#xff1a; gcc …

全局异常处理:如何优雅地统一管理业务异常

在软件开发中&#xff0c;异常处理是保证系统健壮性的重要环节。一个良好的异常处理机制不仅能提高代码的可维护性&#xff0c;还能为使用者提供清晰的错误反馈。本文将介绍如何通过全局异常处理和业务异常统一处理来编写更加优雅的代码。 一、传统异常处理的痛点 1.1 典型问…

动态规划-LCR 166.珠宝的最大价值-力扣(LeetCode)

一、题目解析 frame二维矩阵中每个值代表珠宝的价值&#xff0c;现在从左上角开始拿珠宝&#xff0c;只能向右或向下拿珠宝&#xff0c;到达右下角时停止拿珠宝&#xff0c;要求拿的珠宝价值最大。 二、算法解析 1.状态表示 我们想要知道的是到达[i,j]为位置时的最大价值&am…

JDBC实现模糊、动态与分页查询的详解

文章目录 一. 模糊查询1. Mysql的写法2. JDBC的实现 二. 动态条件查询1. 创建生成动态条件查询sql的方法2. 完整的动态条件查询类以及测试类 三. 分页查询1. 什么是分页查询&#xff1f;2. 分页查询的分类3. MySQL的实现4. JDBC实现4.1. 创建page页4.2. 分页的实现 本章来讲一下…

域环境信息收集技术详解:从基础命令到实战应用

引言 在企业网络环境中&#xff0c;Active Directory (AD)域服务是微软提供的集中式目录服务&#xff0c;用于管理网络中的用户、计算机和其他资源。对于信息安全专业人员来说&#xff0c;熟练掌握域环境信息收集技术至关重要&#xff0c;无论是进行渗透测试、安全评估还是日常…

【C++ Qt】布局管理器

每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” &#x1f914;绪论​&#xff1a; 在Qt开发中&#xff0c;界面布局的合理设计是提升用户体验的关键。早期&#xff0c;开发者常采用绝对定位的方式摆放控件&#xff0c;即通…

vscode用python开发maya联动调试设置

如何在VScode里编写Maya Python脚本_哔哩哔哩_bilibili1 包括1&#xff0c;maya的python全面在vscode支持&#xff0c;2&#xff0c;通过mayacode发送到maya&#xff0c;3同步调试 import maya.cmds as cmds 1、让 maya.cmds编译通过 下载Autodesk_Maya_2018_6_Update_DEVK…

SLAM定位常用地图对比示例

序号 地图类型 概述 1 格栅地图 将现实环境栅格化,每一个栅格用 0 和 1 分别表示空闲和占据状态,初始化为未知状态 0.5 2 特征地图 以点、线、面等几何特征来描绘周围环境,将采集的信息进行筛选和提取得到关键几何特征 3 拓扑地图 将重要部分抽象为地图,使用简单的图形表示…

python的漫画网站管理系统

目录 技术栈介绍具体实现截图![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0ed2084038144499a162b3fb731a5f37.png)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a76a091066f74a80bf7ac1be489ae8a8.png)系统设计研究方法&#xff1a;设计步骤设计流程核…

源码安装gperftools工具

源码安装gperftools工具 下载gperftools源码 https://github.com/gperftools/gperftools/releases/download/gperftools-2.16/gperftools-2.16.tar.gz 注&#xff1a;需要下载github上release版本&#xff0c;如果直接下载master分支上源码&#xff0c;将可能出现各种编译报错…

前端脚手架开发指南:提高开发效率的核心操作

前端脚手架通过自动化的方式可以提高开发效率并减少重复工作&#xff0c;而最强大的脚手架并不是现成的那些工具而是属于你自己团队量身定制的脚手架&#xff01;本篇文章将带你了解脚手架开发的基本技巧&#xff0c;帮助你掌握如何构建适合自己需求的工具&#xff0c;并带着你…

搜索引擎工作原理|倒排索引|query改写|CTR点击率预估|爬虫

写在前面 使用搜索引擎是我们经常做的事情&#xff0c;搜索引擎的实现原理。 什么是搜索引擎 搜索引擎是一种在线搜索工具&#xff0c;当用户在搜索框输入关键词时&#xff0c;搜索引擎就会将与该关键词相关的内容展示给用户。比较大型的搜索引擎有谷歌&#xff0c;百度&…

Python实例题:Python自动工资条

目录 Python实例题 题目 python-automatic-payroll-slipPython 自动生成工资条脚本 代码解释 加载文件&#xff1a; 获取表头&#xff1a; 写入表头&#xff1a; 生成工资条&#xff1a; 保存文件&#xff1a; 运行思路 注意事项 Python实例题 题目 Python自动工资…

Function Calling万字实战指南:打造高智能数据分析Agent平台

个人主页&#xff1a;Guiat 归属专栏&#xff1a;科学技术变革创新 文章目录 1. Function Calling&#xff1a;智能交互的新范式1.1 Function Calling 技术概述1.2 核心优势分析 2. 数据分析Agent平台架构设计2.1 系统架构概览2.2 核心组件解析2.2.1 函数注册中心2.2.2 Agent控…

线对板连接器的兼容性问题:为何老旧设计难以满足现代需求?

线对板连接器作为电子设备的核心纽带&#xff0c;正面临前所未有的兼容性挑战。某智能工厂升级生产线时发现&#xff0c;沿用十年的2.54毫米间距连接器&#xff0c;在接入新型工业相机时出现30%的信号丢包率&#xff0c;而切换至0.4毫米超密间距连接器后&#xff0c;数据传输速…

AI517 AI本地部署 docker微调(失败)

本地部署AI 计划使用OLLAMA进行本地部署 修改DNS 访问github 刷新缓存 配置环境变量 OLLAMA安装成功 部署成功 计划使用docker进行微调 下载安装docker 虚拟化已开启 开启上面这些 准备下载ubuntu docker ragflow dify 用git去泡

VR和眼动控制集群机器人的方法

西安建筑科技大学信息与控制工程学院雷小康老师团队联合西北工业大学航海学院彭星光老师团队&#xff0c;基于虚拟现实&#xff08;VR&#xff09;和眼动追踪技术实现了人-集群机器人高效、灵活的交互控制。相关研究论文“基于虚拟现实和眼动的人-集群机器人交互方法” 发表于信…