• 豌豆资源网
  • 开引网企业服务
  • 服务外包网
  • 通过css改变svg img的颜色

    需求如下图,hover的时候改变图标颜色,图标为引入的svg img

    一般的解决办法有:1.字体图标改变css的color属性;2.js在hover事件中切换图片;3.老一点的方案是hover切换背景?

    但是为了更小的开销,一般css为更好的解决方案,svg的颜色是在标签内通过fill属性写死的,所以用到了使用了CSS3滤镜filter中的drop-shadow。

    代码如下:

    <section>
                    <div className={styles.image}>
                      <img src={item.icon} alt="Advantage" />
                    </div>
                    <p>{item.line1}</p>
                    <p>{item.line2}</p>
                  </section>

     

    广州vi设计公司http://www.maiqicn.com 办公资源网站大全 https://www.wode007.com

    section{
          .image{
            display: inline-block;
            overflow: hidden;
          }
          img{
            position: relative;
            left: 0;
            margin-bottom: .1rem;
            filter: drop-shadow(#ffffff 80px 0);
          }
          &:hover{
            background-color: gray;
            img{
              left: -80px;
            }
          } 
    }

     

     

    drop-shadow(h-shadow v-shadow blur spread color):给图像设置一个阴影效果。其中<offset-x> <offset-y>分别设置阴影的偏移量,且必填。具体可以查看w3c的标准

     主要的实现原理就是设置需要的阴影效果,并隐藏,hover时切换显示就好

    posted @ 2020-09-16 09:57  前端一点红  阅读(3899)  评论(0编辑  收藏  举报
  • 乐游资源网
  • 热爱资源网
  • 灵活用工代发薪平台
  • 企服知识
  • 355软件知识