html中菜单触碰变色,利用css filter实现菜单图片变色效果

需求场景

在制作菜单时,未增加响应效果,往往会加入鼠标移入移出时字体和图标进行变色的效果,字体的颜色变化比较好控制,通过color便可以设置,但如果图标是使用的图片,往往要一个图标制作两份不同颜色的图片,还需要javascript代码进行动态替换,比较繁琐。所以在项目中我们寻求一种比较简单、易于需求变更后进行维护的方式。

使用css filter进行实现

准备图片

假设我们的原始图片主色调为 #1296DB

制作一个简单的无背景色的横向菜单

2914cf33c1fbc0f8f4fbd99a135963ef.png

为菜单添加背景(大多菜单栏都会有背景)

ul.horMenu {

list-style: none;

margin: 0;

padding: 0;

background-color: #5C9CCC;

}

ul.horMenu > li {

display: inline-block;

height: 32px;

padding: 0 8px;

line-height: 32px;

cursor: pointer;

}

ul.horMenu > li > img {

height: 32px;

width: 32px;

padding: 8px;

box-sizing: border-box;

display: inline-block;

vertical-align: top;

}

ul.horMenu > li > span {

color: white;

display: inline-block;

vertical-align: top;

}

效果图:

e8acb12d65e823e054d22b647fe2c44e.png

此时,我们的图片已经与背景搭配的不是那么协调。

通过css filter改变图片颜色为白色 主要通过filter: brightness(100);语句:

ul.horMenu > li > img {

height: 32px;

width: 32px;

padding: 8px;

box-sizing: border-box;

display: inline-block;

vertical-align: top;

filter: brightness(100);

}

之后菜单效果为:

93fc5a84f2f6aa652fa207b53da2c10c.png

添加菜单移入移出效果,鼠标移入背景变为浅色,字体和图标变为#1296DB

ul.horMenu > li:hover {

background-color: #E6F7FF;

}

ul.horMenu > li:hover img {

filter: brightness(0);

filter: grayscale(0);

}

ul.horMenu > li:hover > span {

color: #1296DB;

}

图片部分主要是搭配使用:filter: brightness(0); filter: grayscale(0);

最终效果:

05cd88e539f749bcfa460dc9b18ade91.png

注意:filter属性在老旧IE浏览器下并为得到很好的支持,因此使用时一定要注意。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值