05 react img css修改svg图片样式

news2024/9/20 18:35:55

react img css修改svg图片样式

  • svg图片的相关理论
    • 定义
    • 优点
  • 前端引入svg图片的方式
    • 方式一:<svg>标签引入,内嵌到 HTML 中
    • 方式二,修改svg的颜色
    • 方式三:<img>标签引入
      • 1、元素模糊
      • 2、元素亮度
      • 3、元素投影
      • 4、元素的灰色程度
      • 5、元素对比度
      • 6、元素颜色
      • 7、元素反转颜色
      • 8、元素透明程度
      • 9、元素饱和度
      • 10、元素的褐色
    • 实践框架react
      • vue框架
      • react框架
        • 使用插件步骤
        • 实践
        • 效果

svg图片的相关理论

定义

  • SVG 意为可缩放矢量图形,SVG 使用 XML 格式定义图像。

  • 导入项目的svg图标大概是这样
    在这里插入图片描述

  • 有个path路径,并且有类名,在style中有个fill对应的颜色就是svg的图标颜色

  • 这个fill属性,大概的解释是fill 属性设置形状内的颜色

优点

  • SVG可被非常多的工具读取和修改(比如vscode)

  • 不失真, 放大缩小图像都很清晰

  • SVG文件是纯粹的XML, 也是一种DOM结构

  • 使用方便, 设计软件可以直接导出

1、页面放大会导致图片放大会变的模糊
2、如果页面中的图片过多的话会造成有很多请求也就代表页面加载慢。
所以基于以上问题我们一般使用svg的矢量图,矢量图一般由设计师提供给前端来转换成字体图标,在项目中使用。
优点:1、放大不会模糊 2、只加载一次不会有多余的请求。

前端引入svg图片的方式

方式一: 标签引入,内嵌到 HTML 中

在写本文时,将 SVG 内嵌到 HTML 中 的做法是最常见的,也是比较推荐的方式之一。
标签并没有使用 xmlns=“http://www.w3.org/2000/svg” 声明命名空间,这是因为 HTML 5 文档使用 标记,它允许跳过 SVG 命名空间声明,HTML 解析器会自动识别 SVG 元素和它的子元素,除了 元素的子元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>
        <!-- 内嵌到 HTML-->
        <svg width="100%" height="100%" version="1.1">
            <circle cx="50" cy="50" r="50" fill="hotpink">
            </circle>
        </svg> 
    </div>
</body>
</html>

方式二,修改svg的颜色

  • 实现思路:
    1、我们可以借助iconfont-阿里巴巴矢量图库,把设计好的svg文件通过上传图标至项目。
    2、点击下面红框里面的地址,查看源码,然后复制到自己项目中的css文件中。
    3、全局引用然后直接在class=""中使用。

方式三:标签引入

css3的滤镜filter属性,可以对网页中的图片进行类似Photoshop图片处理的效果,例如背景的模糊效果、老照片(黑白照片)效果等

1、元素模糊

filter:blur(像素值)
像素值越高,元素越模糊

2、元素亮度

filter:brightness(百分比);
100%是正常亮度,百分比越小,元素亮度越暗;百分比越大,元素亮度越明显,而且百分比可以超过100%。

3、元素投影

filter:drop-shadow(投影在X轴偏移,投影在Y轴偏移,投影的模糊程度,投影的颜色);
X轴为正数时往右偏移,负数往左偏移;Y轴正数往下偏移,负数往上偏移;投影模糊程度是像素值;投影颜色可以是十六进制的。

4、元素的灰色程度

filter:grayscale(百分比);
百分比为100%时,元素是灰色;百分比越大,灰度程度越明显。

5、元素对比度

filter:contrast(百分比);
百分比越高,对比度越明显;100%时是正常对比度;如果值是0%时,元素只有浅灰色。

6、元素颜色

filter:hue-rotate(度数);
根据色相环的度数对应相应的颜色。

7、元素反转颜色

filter:invert(百分比);
百分比越大,反转效果越明显;为0%时,元素不变。

8、元素透明程度

filter:opacity(百分比);
百分比为100%时,元素无变化;而百分比越小,元素越透明。

9、元素饱和度

filter:saturate(百分比);
百分比越大,饱和度越明显;100%时,元素无变化。

10、元素的褐色

filter:sepia(百分比);
百分比最大100%;百分比越大,元素呈现褐色效果越明显;为0%时,元素没变化。

链接: css filter阴影的10个参数
链接: css filter阴影的11个参数

  • 总结:
filter: blur(5px);
filter: brightness(0.4);
filter: contrast(200%);
filter: drop-shadow(16px 16px 20px blue);
filter: grayscale(50%);
filter: hue-rotate(90deg);
filter: invert(75%);
filter: opacity(25%);
filter: saturate(30%);
filter: sepia(60%);
 
/* Apply multiple filters */
filter: contrast(175%) brightness(3%);
 
/* Global values */
filter: inherit;
filter: initial;
filter: unset;
  • drop-shadow是添加一个可以修改颜色的阴影
  <div class="svg">
       <img src="./firefox-logo.svg" class="svg-color">
   </div>

//css
.svg {
  width: 30px;
  height: 30px;
  overflow: hidden;
}
.svg-color {
  transform: translateX(30px);
  filter: drop-shadow(#ff0000 -30px 0px 0px);
}

实践框架react

vue框架

链接: vue项目引入svg格式图片且可以通过设置color改变图片颜色

react框架

npm
If you are using npm

$ npm install @iconfu/svg-inject
Yarn
If you are using Yarn

$ yarn add @iconfu/svg-inject

使用插件步骤

链接: 参考html vue react引入插件的gitHub
Add οnlοad=“SVGInject(this)” to any element where you want the SVG to be injected.

For most use cases this approach is recommended and provides nice advantages.

<html>
<head>
  <script src="svg-inject.min.js"></script>
</head>
<body>
  <img src="image1.svg" onload="SVGInject(this)" />
  <img src="image2.svg" onload="SVGInject(this)" />
</body>
</html>

Option 2 - Call SVGInject from anywhere

<html>
<body>
  <img src="image1.svg" class="injectable" />
  <img src="image2.svg" class="injectable" />

  <script src="svg-inject.min.js"></script>
  <script>
    SVGInject(document.querySelectorAll("img.injectable"));
  </script>
</body>
</html>

实践

  • 布局
 <div className={styles.imgEle}>
  {/* <img src={icon} alt="icon" className={styles.imgColor} onLoad={SVGInject} /> */}
   <img src={icon} alt="icon" className={styles.imgColor} />
 </div>
  • 样式
 .content {
    display: flex;
    align-items: center;
    padding-left: 10px;
    &:hover {
      transform: scale(1.1, 1.1);
      .imgEle {
        .imgColor {
          // fill: pink;
          // filter: grayscale(100%);
          filter: invert(5%)
          // filter: drop-shadow(#ff0000 -30px 0px 0px);
        }}
    }
  }
  .imgEle {
    .imgColor {
      filter: brightness(0);
    }
  }

效果

理想 == 实际

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

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

相关文章

乐鑫特权隔离机制的 OTA 固件升级

固件空中升级 (OTA, Over-The-Air) 是任何联网设备的重要功能之一&#xff0c;支持开发人员通过远程更新固件&#xff0c;以发布新功能或修复错误。乐鑫特权隔离框架中包含两类应用程序&#xff1a;受保护的应用程序 (protected_app) 和用户应用程序 (user_app) &#xff0c;这…

互联网舆情监测系统的发展阶段,TOOM互联网舆情监测系统有哪些?

互联网舆情监测系统是一种利用计算机技术对互联网上的大量信息进行实时监测、分析和评估的工具&#xff0c;旨在了解公众对某一事件、话题或品牌等的态度、情感倾向和影响力等。通过对社交媒体、论坛、新闻媒体等多个渠道的数据采集和处理&#xff0c;系统能够实现舆情事件的追…

【学习总结】IMU预积分推导

本文仅用于记录自己学习总结。记录IMU预积分推导过程&#xff0c;不包含具体原理。 符号表示 RRR: 表示旋转矩阵 vvv: 表示速度 ppp: 表示位移 ExpExpExp: 指数映射&#xff0c;将旋转向量映射为旋转矩阵 w~\widetilde{w}w: 角速度观测值 f~\widetilde{f}f​: 加速度观测值 bg…

【Hello Linux】Linux工具介绍 (yum vim)

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;介绍Linux的常用工具 yum和vim Linux工具介绍Linux中的软件管理工具 -- yum在windows下安装软件的方式在Linux下安装软件的方式认识yum…

安警官的IP地址是怎样定位到莽村附近的?

要说最近大火的电视剧非《狂飙》莫属。电视剧《狂飙》自开播以来&#xff0c;一举超过《三体》《去有风的地方》等先播电视剧&#xff0c;收视率一路“狂飙”&#xff0c;牢牢占据近期的收视冠军。 在剧中&#xff0c;张译扮演一名坚持公平、正义与理想的人民警察“安欣”&…

20230210组会总结

文章目录Ultra-High-Definition Low-Light Image Enhancement: A Benchmark and Transformer-Based MethodShuffleMixer: An Efficient ConvNet for Image Super-ResolutionA Close Look at Spatial Modeling: From Attention to ConvolutionDEA-Net: Single image dehazing ba…

关于国外服务器租用疑问大全解答

很多人对于租用国外服务器还是有些疑虑的&#xff0c;比如是否违法、价格、是否需要备案等等一系列问题&#xff0c;直接导致了很多有疑虑的用户放弃了使用&#xff0c;那么下面我们就来解答关于这些租用国外服务器的疑问&#xff0c;打消用户的疑虑。 1、租用国外服务器违法吗…

量化选股——基于动量因子的行业风格轮动策略(第1部分—因子测算)

文章目录动量因子与行业轮动概述动量因子的理解投资视角下的行业轮动现象投资者视角与奈特不确定性动量因子在行业风格上的效果测算动量因子效果测算流程概述1. 行业选择&#xff1a;申万一级行业2. 动量因子选择&#xff1a;阿隆指标&#xff08;Aroon&#xff09;3. 测算方法…

java中字符串首字母变大写的两种方法

public class 快速排序 {public static void main(String[] args) {int[] arr new int[]{5, 2, 9, 6, 22, 21};//System.out.println(Arrays.toString(kuaiPai(arr)));// System.out.println(Arrays.asList("dada", "dda", "ddd"));//System.o…

VR全景带你浪漫“狂飙”情人节,见证甜蜜心动

当情人节遇上VR&#xff0c;足以让情侣过一个难忘的情人节。马上情人节就要到了&#xff0c;大家是不是还在绞尽脑汁的想着&#xff0c;如何和另一半过一个浪漫的情人节呢&#xff1f;老套的剧情已经不能吸引人了&#xff0c;让我们看看VR全景给情人节带来了哪些不同的体验吧&a…

喜欢大屏电视?那就选择酷开系统,实现智能生活享受

随着科技的发展和我们生活水平的提高&#xff0c;越来越多的消费者开始认可并习惯使用各种高质量的科技产品&#xff0c;比如喜欢玩游戏的消费者&#xff0c;他们往往会追求流畅性更强、刷新率更快的大显示屏&#xff0c;以此获得更真实刺激的游戏体验&#xff0c;而喜欢追剧的…

面对“开门红”,跨境支付如何寻求新增长曲线?

易观&#xff1a;2022年是第三方支付行业洗牌加剧的一年&#xff0c;在部分机构选择退出的过程中&#xff0c;也有机构开始瞄准跨境业务&#xff0c;成为了支付机构转型的重要方向之一。跨境支付是指两个或及其以上的国家或地区进行国际贸易、国际投资或其他经济活动&#xff0…

基于乐鑫 ESP32 的智能手表

拥有一块自己制作的智能手表是不是听起来就很酷&#xff1f;工程师 Pcadic 基于乐鑫 ESP32-PICO-D4 实现了这个想法&#xff01;他开发了一款能够与我们的手机或任何其他设备互联的智能手表 ESP32-Pico-Watch。 ESP32-Pico-Watch 支持 Wi-Fi、蓝牙、Mesh&#xff0c;拥有 1 个振…

EMX,PROC文件与电感的简单仿真

How To Write EMX PROC File 编写EMX工艺文件需要2方面的信息&#xff1a; GDSII layer number and type 映射到 layer name。 这个信息可以从layermap文件中获取&#xff1b;EMX的manual有相应的介绍&#xff0c;这个过程十分基础且简单容易&#xff0c;简单说就是把GDSII中…

Vue3 中 axios 的安装及使用

目录前言&#xff1a;一、什么是 axios &#xff1f;二、Axios 的配置项三、Axios 的请求方式四、自定义创建实例五、Axios 请求错误处理六、Axios 解决跨域问题七、Axios 请求案例随机笑话大全总结&#xff1a;前言&#xff1a; 在编写vue里的项目时&#xff0c;必须要用和后台…

微信小程序 java springboot招聘求职应聘简历系统

应聘系统是基于微信小程序&#xff0c;java编程语言&#xff0c;mysql数据库&#xff0c;springboot框架&#xff0c;idea工具开发&#xff0c;本系统主要分为用户&#xff0c;企业&#xff0c;管理员三个角色&#xff0c;用户注册登陆小程序&#xff0c;查看应聘分类&#xff…

C语言经典编程题100例(41~60)

目录41、习题4-4 特殊a串数列求和42、习题4-6 水仙花数43、习题4-7 最大公约数和最小公倍数44、习题7-5 找鞍点45、练习5-1 求m到n之和46、练习5-2 找两个数中最大者47、练习5-3 数字金字塔48、习题5-1 符号函数49、习题5-2 使用函数求奇数和50、习题5-3 使用函数计算两点间的距…

低代码开发平台让数据应用不再复杂

当前&#xff0c;数据已成为实现经济高质量增长的关键要素&#xff0c;最大化释放数据要素的价值是数字经济时代的重点。以数据全方位驱动企业发展&#xff0c;已成为数字经济时代企业塑造核心竞争力的关键。随着人机协同程度的日益提高&#xff0c;数据不再只是用来被动支持决…

没有设置密码,每次打开RAR文件却都要输密码?

有小伙伴说遇到这种情况&#xff1a;用WinRAR软件压缩RAR文件后&#xff0c;再次打开时显示需要输入密码&#xff0c;但自己压缩文件时并没有设置密码&#xff0c;后续不管几次压缩文件都需要密码&#xff0c;这是怎么回事呢&#xff1f; 其实&#xff0c;这很可能是之前设置压…

Echarts 折线图拐点超过某值突出显示,颜色变红

第015个点击查看专栏目录Echarts在折线图处理方面可以变得非常灵活&#xff0c;比如此示例&#xff0c;超过某值后&#xff0c;将节点的大小颜色文字都突出显示出来&#xff0c;关键点是在于处理回调函数&#xff0c;个性化每个值。文章目录示例效果示例源代码&#xff08;共15…