当前位置: 首页 > news >正文

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

背景:

在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> 

官网链接: 点击跳转

 

 

相关文章:

  • servlet-api
  • C++中的各式类型转换
  • vr视频制作攻略(VR视频制作基础知识)
  • PNG图片转icon图标Python脚本(简易版) - 随笔
  • 43、Server.UrlEncode、HttpUtility.UrlDecode的区别?
  • dockers笔记
  • 3.4 数字特征
  • LeetCode LCR 016. 无重复字符的最长子串 (Java)
  • centos7.x下,使用宝塔进行主从复制的原理和实践
  • JavaScript实践(三)JavaScript序列化与反序列化深度解析
  • 使用ADB命令操作Android的apk/aab包
  • PyTorch 分布式训练
  • 2025年渗透测试面试题总结-渗透测试红队面试九(题目+回答)
  • Milvus(21):过滤搜索、范围搜索、分组搜索
  • 【2025最新】Pycharm里如何运行多个py文件
  • Python基础学习-Day23
  • 撤回不了一点 v1.0.2,支持微信QQ钉钉飞书等消息防撤回
  • yolo11n-obb训练rknn模型
  • 博客系统技术需求文档(基于 Flask)
  • ArcGIS、InVEST与RUSLE在水土流失模拟及分析中的实践技术
  • 因存在安全隐患,福特公司召回约27.4万辆SUV
  • 巴方:印度上周导弹袭击造成至少40名平民死亡
  • 法治日报整版聚焦:儿童能否成为短视频主角?该如何监管?
  • 上海北外滩,未来五年将如何“长个子”“壮筋骨”?
  • 中方发布会:中美经贸高层会谈氛围是坦诚的、深入的、具有建设性的
  • 农林生物安全全国重点实验室启动建设,聚焦重大有害生物防控等