热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SVG开发注意事项

SVGScalableVectorGraphics可缩放的矢量图形起源在2003年一月,SVG1.1被确立为W3C标准,在过去很长一段时间,网页注重文字和图片的展示,SVG就被遗忘

SVG

Scalable Vector Graphics 可缩放的矢量图形


起源

在 2003 年一月,SVG 1.1 被确立为 W3C 标准,在过去很长一段时间,网页注重文字和图片的展示,

SVG就被遗忘了,随着网页对图形的要求越来越高,SVG又出现在人们的视野中。


关注点

可以从SVG这个名字就能瞄到我们第一个关注点在哪里,没错,就是可缩放的矢量图形,这个还是得从位图和矢量图说起,可以直白来说,位图缩放容易模糊,而矢量图一般不会,因为矢量图记录了位置信息,每次按照大小重新计算图形,而位图只能对像素粗暴的缩放,就会导致我们常见的图片模糊。

SVG不会模糊?

NONONO,由于是矢量图,是人去编写的,所以矢量图质量决定了其缩放效果,具体因素待确定

其余优点

1.支持多色图标

2.可以使用CSS实现动画,不需要再使用gif

4.本身就是DOM规范的一部分,可以像普通DOM一样修改颜色,交互性非常强


提一下权重

SVG有些属性属于DOM属性比如说fill,也可以作为CSS属性,生效的效果是一样的

>
or

那么问题来了,涉及到样式,就必须有个权重规则,SVG能够作为CSS属性,写到DOM作为属性上的时候,权重仅比继承权重大,理解这点很重要


修改SVG颜色的前提

由于设计师都会在SVG的图形设置fill,我们在外面直接改,fill是只能被继承进去SVG,权重很低,现在有两种改变这种情况的办法:

1.删除SVG标签的fill属性,让其自然继承fill

2.设置SVG标签继承外面的fill

svg path{fill: inherit;}

两种方式区别在与是否侵入SVG源码


设置颜色


固定颜色

固定的颜色可以写死在SVG里面


动态颜色

动态双色

去除对应区域的fill,SVG内部动态色标签使用currentColor,在外面的class改变fill和color即可实现动态双色,比较简单,看下面实例








如上图在第一个path fill值给为currentColor,然后第二个path去除fill

nlZCad.png

默认样式
.svg {
fill: #77809F;
color: #dae0f8;
}

nlZesS.png

hover样式
.svg:hover {
fill: #fff;
color: #5874d8
}

nlZ6sO.png

动态多色

动态多色的难点在于需要同时更改多个状态,不能写死,嗯?不能写死不就是需要一个变量,然后外面改变这个变量他就跟着变就可以了,CSS原生的变量,不过因为支持IE11比较弱,暂时就不会出场了,实现套路与双色一样,把变量currentColor换成CSS变量,然后通过外部CSS改变这个变量指即可实现动态双色


目前存在的问题



  1. 如果使用了SVGdefs定义的渐变色,不要让symbol display none,否则渐变色没有生效


  2. SVG需要去除title属性,否则会出现提示


d



推荐阅读
  • CSS深入剖析text和column
    这里写目录标题一、text-shadow二、font-face三、其他text常用特性四、column一、text-shadow与box-shadow类似,这里通过 ... [详细]
  • 使用CSS实现鼠标悬停时图片或按钮的平滑放大效果
    通过CSS技术,当鼠标悬停在图片或按钮上时,可以实现元素平滑放大的视觉效果,并可自由调整动画的持续时间。本文将详细介绍如何利用CSS实现这一功能。 ... [详细]
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
  • 在Vite项目优化过程中,通过使用rollup-plugin-visualizer插件,可以有效地对Rollup打包结果进行可视化分析,帮助开发者清晰地了解各个模块的占用情况,从而进行更有针对性的优化。此外,结合其他常用插件,如vite-plugin-compression和vite-plugin-inspect,可以进一步提升项目的性能和可维护性。 ... [详细]
  • 手动将 Webpack 2.x 迁移到最新版 Webpack 4.8.3(当前 GitHub 最新版本)
    手动webpack2.x升级到webpack4.8.3(当前github最新版本)一直使用的webpack是2.3.3版本作为生产环境使用,看了react-create- ... [详细]
  • Matplotlib在数据科学中的可视化应用与技术解析
    Matplotlib和数据可视化 数据的处理、分析和可视化已经成为Python近年来最为重要的应用领域之一,其中数据的可视化指的是将数据呈现为漂亮的统计图表ÿ ... [详细]
  • 在PC端,视口指的是浏览器的可视区域,其宽度和浏览器窗口的宽度保持一致。在CSS标准文档中,视口也被称为初始包含块,它是所有 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • CSS Border 属性:solid 边框的使用详解
    本文详细介绍了如何在CSS中使用solid边框属性,包括其基本语法、应用场景及高级技巧,适合初学者和进阶用户参考。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文详细探讨了OpenCV中人脸检测算法的实现原理与代码结构。通过分析核心函数和关键步骤,揭示了OpenCV如何高效地进行人脸检测。文章不仅提供了代码示例,还深入解释了算法背后的数学模型和优化技巧,为开发者提供了全面的理解和实用的参考。 ... [详细]
  • 【OpenCV4实战】掌握OpenCV中的键盘和鼠标事件处理技巧
    在《OpenCV4实战》中,本文详细介绍了如何在OpenCV中处理键盘和鼠标事件。首先,针对键盘事件,文章涵盖了基本原理、如何确定按键响应值以及通过按键调节图像亮度的具体方法。接着,对于鼠标事件,文章不仅讲解了基础理论,还提供了示例程序,帮助读者更好地理解和应用这些技术。通过这些内容,读者可以全面掌握OpenCV中键盘和鼠标事件的处理技巧。 ... [详细]
  • 深入解析 OpenCV 2 中 Mat 对象的类型、深度与步长属性
    在OpenCV 2中,`Mat`类作为核心组件,对于图像处理至关重要。本文将深入探讨`Mat`对象的类型、深度与步长属性,这些属性是理解和优化图像操作的基础。通过具体示例,我们将展示如何利用这些属性实现高效的图像缩小功能。此外,还将讨论这些属性在实际应用中的重要性和常见误区,帮助读者更好地掌握`Mat`类的使用方法。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 在上一节中,我们完成了网络的前向传播实现。本节将重点探讨如何为检测输出设定目标置信度阈值,并应用非极大值抑制技术以提高检测精度。为了更好地理解和实践这些内容,建议读者已经完成本系列教程的前三部分,并具备一定的PyTorch基础知识。此外,我们将详细介绍这些技术的原理及其在实际应用中的重要性,帮助读者深入理解目标检测算法的核心机制。 ... [详细]
author-avatar
luhd88112010_254
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有