SVG图片以 https 链接的方式展示在页面上,并且可继承父类的颜色大小(类似阿里巴巴iconfont)

一、背景与问题

1. 背景

在前端的项目开发过程中,我们经常使用到 字体图标库(iconfont),以 ant dezign 为例。

如果在遇到图标库不存在的图标时,我们往往采用自定义图标的方式:

  • 引入自定义的svg图,作为component
    在这里插入图片描述
  • 但是并不是任何类型的svg都可继承父类的颜色与字体大小,需要设置svg的属性:width=“1em” height=“1em” fill=“currentColor”
    在这里插入图片描述

2. 问题

  • 当我们有此类需求时:导航的图标可配置,并且可以进行全栈换肤。
    在这里插入图片描述

  • 实现方式:

    为了实现全栈换肤,我们需要采用svg的形式来展示图标
    但是图标是我们上传到阿里云上后,把http链接 拿到后台配置出来的,于是
    在这里插入图片描述
    这个方式将失效。

二、解决方案(svg链接如何嵌入HTML,呈现出来)

1. 菜鸟教程提供了三种方案:(❌)

在这里插入图片描述
这种方式虽然可以展示出svg图片,却无法选中html元素 更改样式,达到换肤的效果。因为embed、object、iframe都是样式隔离的。
在这里插入图片描述

2. 直接使用<img src=xxx />标签,但这种方式也会面临上述问题。(❌)

3. 使用 element.innerHtml = 请求到的svg string,但此方法有XSS攻击安全隐患。(❌)

4. 使用background-color + mask-image。(✅)

mask-image: CSS属性用于设置元素上遮罩层的图像。

使用方式:
在这里插入图片描述
当我们为有颜色的背景图上加上遮罩层图像,即可展示出类似的效果,曲线救国用在这里再为合适不过了。
其实mask-image还有许多用处: CSS遮罩CSS3 mask/masks详细介绍,大家感兴趣可以去康康

三、写在最后

这个问题当时探索了好久才找到一个可实用的解决方案,记下来为大家塌塌坑。如果你有更好的解决方式,欢迎评论!
开发中总能遇到各种奇奇怪怪的问题,欢迎大家共享出自己遇到的奇葩问题,我们一起探讨。

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

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

相关文章

云原生高可用技术体系构建

伴随着互联网业务的高速发展&#xff0c;越来越多的线下场景需要转移到线上&#xff0c;而线上业务的量级也在飞速增长&#xff0c;给互联网业务的技术架构带来了严峻的挑战&#xff0c;原来的“一体机数据库”的方式已经不适用于当前的主流业务&#xff0c;越来越来的业务开始…

容器技术在企业落地的最佳实践

作者 | 易立 阿里云资深技术专家 导读&#xff1a;近年来&#xff0c;容器技术及相关应用得到了国内外越来越多的关注度。在国外&#xff0c;容器技术已经形成了较成熟的生态圈&#xff1b;而在国内&#xff0c;金融企业、互联网企业、IT 企业积极投入容器技术的应用。本文将重…

上手 Docker 容器,不应该是个问题

来源 | 无敌码农责编 | 寇雪芹头图 | 下载于视觉中国在微服务时代&#xff0c;服务数量及规模越来越大&#xff0c;服务的部署及运维的模式如果仍然采用传统方式就会大大增加运维成本。所以微服务时代的运维方式一定是Devops模式&#xff0c;通过构建自动化运维发布平台来打通产…

vue+node前后端分离接口调用(初学者)

一、node编写接口 &#xff08;设定你已使用Nodeexpress搭建好了项目&#xff0c;可参照我的上一篇博客&#xff09; 我们就在users.js下进行接口编写 router.get(/getUserInfo,function(req,res,next){var user new User();//解析路由参数var params URL.parse(req.url, tr…

一款App基于mPaaS小程序如何进行改造?

这篇故事围绕着一款 App 基于 mPaaS 小程序进行改造娓娓展开。 作为国内校园服务场景最丰富的平台&#xff0c;笑联 App 已覆盖国内 130 所高校&#xff0c;服务近百万高校学生。 截止目前&#xff0c;笑联 App 内的 12 个业务模块目前已顺利实现小程序化。不仅获得媲美原生应用…

隐秘的角落里数亿场AI战争正在发生

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; "科技领域不做安全风控&#xff0c;就等于造汽车的时候没有做刹车。”蚂蚁集团首席AI科学家漆远这样形容安全风控的地位…

锐捷发布极简以太全光解决方案 打造“不一样”的全光网

3月9日&#xff0c;锐捷网络举办以“不一样的全光网”为主题的媒体发布会&#xff0c;正式对外发布新一代全光网络解决方案——极简以太全光解决方案&#xff08;以下简称极简光方案&#xff09;。这个方案正是面向不断升温的全光网络市场需求&#xff0c;针对教育、制造、医疗…

写给迷糊的你看的 浏览器从输入URL到页面渲染过程(呕心泣血 1.6w字)

第一步&#xff1a;用户输入 1、 对用户所输入内容进行解析&#xff1a; 为什么需要解析&#xff1a;判断出所输入的关键字是 搜索内容 还是 URL 搜索内容&#xff1a;地址栏会使用浏览器默认的搜索引擎&#xff0c;来合成带关键字的 URL URL&#xff1a;输入内容符合 URL 规则…

在Saas发展的黄金时代里带你理解SaaS设计

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 导读&#xff1a;软件即服务&#xff08;英语&#xff1a;Software as a Service&#xff0c;SaaS&#xff09;&#xff0c;亦…

优秀技术人,如何做到高效沟通?

作者 | 鲁佳(鹿迦) 阿里巴巴项目管理专家 导读&#xff1a;世界上有两件最难的事&#xff1a;把别人的钱装进自己的口袋&#xff1b;把自己的思想装进别人的脑袋。 为什么沟通那么重要 谁都知道在工作中沟通是非常重要的&#xff0c;那大家有没有真正想过为什么沟通这么重要…

技术分享助你突破职场瓶颈

IT行业是吃“青春饭”吗&#xff1f;IT行业35岁“中年危机”是否真的存在&#xff1f;个人认为竞争是激烈的&#xff0c;危机是存在的&#xff0c;如何破局成为每一个IT人必须面对的严峻课题。遥想2015年&#xff0c;我的职场生涯度过了轻松的5年&#xff0c;在传统行业过着朝九…

抖音实战~手机号验证码一键注册登录流程(限制手机终端登录)

文章目录一、手机号验证码二、前端2.1. 点击登陆流程2.2. 点击登录源码三、后端登录3.1. 登录流程图3.2. 流程简述3.3. 手机号验证码登录流程一、手机号验证码 二、前端 2.1. 点击登陆流程 1.先校验手机号是否合法&#xff1f;不合法&#xff0c;则提示“请输入正确的手机号”…

阿里云高级技术专家:面向5G的云网一体及云原生应用实践

7月15日&#xff0c;阿里云高级技术专家李晓成在2020亚太内容分发大会上发表《面向5G的云网一体及云原生应用实践》主题演讲&#xff0c;从边缘计算产业机遇与挑战来解读阿里云边缘计算的布局&#xff0c;并分享阿里云在云网一体化、边缘云原生等领域的技术实践&#xff0c;本文…

抖音实战~用户登出

文章目录一、前端1. 登出流程2. 流程简述3. 源码二、后端2.1. 登出逻辑2.2. 源码一、前端 1. 登出流程 2. 流程简述 1.点击登出按钮触发登出事件2.调用登出后端api3.后端返回 3.1. 成功&#xff1a;删除终端缓存的用户信息和token信息3.2. 失败&#xff1a;提示错误信息 4.跳…

无法恢复,欧洲云服务巨头数据中心起火

数据中心起火事件频频发生&#xff0c;这次 OVH 数据中心被大火烧毁又堪称是数据中心历史上史无前例的灾难性事件&#xff0c;数据中心到底该如何保护呢&#xff1f;作者 | 郑丽媛出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;报&#xff01;请注意&#xff0c;你…

128核云原生新力作:Ampere® Altra® Max性能参数公布,提升50%!

安晟培半导体科技有限公司&#xff08;Ampere Computing&#xff09;于日前公布了云原生服务器处理器Ampere Altra Max样片的基准测试数据。Ampere Altra Max是Ampere继去年3月发布的80核Altra 处理器后即将推出的重磅新品&#xff0c;内核数量达到业界领先的128核&#xff0c;…

《从单体迈向 Serverless 的避坑指南》

简介&#xff1a; 用户需求和云的发展两条线推动了云原生技术的兴起、发展和大规模应用。本文将主要讨论什么是云原生应用&#xff0c;构成云原生应用的要素是什么&#xff0c;什么是 Serverless 计算&#xff0c;以及 Serverless 如何简化技术复杂度&#xff0c;帮助用户应对快…

腾讯云~Docker安装RabbitMQ

文章目录1. 测试2. 安装策略组3. 控制台1. 测试 docker run -d --name myRabbitMQ -e RABBITMQ_DEFAULT_USERimooc -e RABBITMQ_DEFAULT_PASS123456 -p 15672:15672 -p 5672:5672 rabbitmq:3.8.14-management企业内部使用参考&#xff1a;https://gblfy.blog.csdn.net/article…

定义下一代存储,打造全新一代数据基础设施

简介&#xff1a; 智能时代&#xff0c;阿里云正重新定义下一代存储&#xff0c;打造全新一代数据基础设施。在未来&#xff0c;数据势必呈爆发式地增长&#xff0c;那么对于存储的性能&#xff0c;必然会提出更高、更严苛的要求。此次直播阿里云将为大家带来7款存储产品新功能…

Docker私有镜像仓库是什么?

来源 | 无敌码农责编 | 寇雪芹头图 | 下载于视觉中国Docker镜像仓库概述镜像仓库作为Docker技术的核心组件之一&#xff0c;其主要作用就是负责镜像内容的存储和分发。Docker镜像仓库从使用范围来说分为“公有镜像仓库”和“私有镜像仓库”&#xff0c;公有镜像仓库是可以被任何…