整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

深入探讨SVG图标的颜色自定义:currentCol

深入探讨SVG图标的颜色自定义:currentColor的使用

要: SVG图标作为一种矢量图形格式,在网页和应用设计中被广泛使用。然而,在实际应用中,设计师可能会遇到一些关于SVG图标颜色自定义的问题。本文将探讨如何在SVG图标中使用currentColor属性,以及如何解决某些图标不支持currentColor的问题。

正文:

SVG图标有很多优点,例如可缩放性和自定义性。其中,currentColor属性是CSS中的一个特性,允许SVG图标继承其父元素的文本颜色。但是,在实际使用中,可能会遇到一些SVG图标不支持currentColor的情况。

1、SVG图标与currentColor

currentColor属性可以使SVG图标的颜色与周围文本的颜色保持一致,从而提高图标和文本的协调性和一致性。但是,并非所有SVG图标都支持currentColor。

2、外部源的SVG图标

一些SVG图标可能是由第三方或外部源提供的。这些图标可能没有设计为使用currentColor来指定颜色,而是预定义了特定的颜色值或使用了其他方式来指定颜色。

3、解决不支持currentColor的问题

当您发现SVG图标不支持currentColor时,可以考虑直接修改SVG代码,或使用CSS类或内联样式来自定义图标颜色。同时,查看图标库或提供者的文档,了解其推荐的颜色和样式自定义方法。

结论

在使用SVG图标时,了解并掌握currentColor以及其他颜色自定义方法是非常必要的。这可以帮助设计师更灵活地使用和自定义SVG图标,使其更好地融入网页和应用的设计中。

在在大数据的带领下,数据可视化越来越突出,能够清楚的分析出自己想要的数据,这也是我们现在最求的数据可视化方法,那么实现HTML5的数据可视化方法有哪些?这都是我们值得研究的东西,数据可以给我们带来敏感的市场未来发展,同时也能够实时分别不同数据效果。

HTML5为数据可视化提供了新的实现方法。本文对HTML5在健康数据可视化在PC及部分移动终端上的应用进行研究。使用HTML5中的Canvas和SVG实现的数据可视化方法基于浏览器的支持,具有很好的平台兼容性

可视化(Visualization)是采用计算机图形学和图形处理技术将数据转换成图形或者图像显示出来的技术。可视化汇集了数据表示、数据处理和决策分析等一系列问题。

随着科学技术的不断发展,海量数据的出现加快了数据可视化技术的发展。很多平台提供了实现数据可视化的技术,如Flash和Silverlight都提供了相应的绘图技术,对于基于Web的应用,包含了SVG和Canvas的HTML5提供了新的数据可视化技术。现在主流浏览器大部分完成了对HTML5标准的支持,包含IE9、Chrome、FireFox、Safari等,而且现在智能手机以及平板电脑的浏览器对HTML5都有很好的支持,同时这些移动终端的日益普及也使基于HTML5的数据可视化跨平台成为了可能。

1 相关技术

HTML5标准是HTML下一个主要的修订版本,现在仍处于发展阶段。其目标是取代1999年所制定的HTML 4.01和XHTML 1.0 标准,以期能在互联网应用迅速发展的时候,使网络标准达到符合当代的网络需求。广义的HTML5标准实际指的是包括HTML、CSS和JavaScript在内的一套技术组合。HTML5包含了SVG(Scalable Vector Graphics),同时提供了实时二维绘图技术Canvas。本文就基于SVG和Canvas对数据可视化的实现提出一种可行的方法。

1.1 SVG

SVG英文全称为Scalable Vector Graphics,由W3C制定,其基于可扩展标记语言XML。SVG是用于描述二维矢量图形的一种图形格式,由于它是基于XML的一种语言,所以它继承了XML的跨平台性和可扩展性。如SVG文档中可以嵌入其他的XML或者HTML内容,XML或者HTML中可以内嵌SVG,而各个不同的SVG图形可以方便地组合,构成新的SVG图形。SVG还具有很多优点,比如很好的可扩充性和交互性。SVG支持无限放大,SVG图片任意比例的放大不会损害图片的显示效果,其他诸如PNG,GIF,BMP,JPEG格式的图片放大则会影响视觉效果。同时SVG还提供了很好的动画交互效果,通过定义鼠标事件和键盘事件,以及相关的脚本编程就可以实现SVG图形的动画效果及交互操作。

1.2 Canvas

Canvas最初是由苹果内部使用自己的Mac OS X WebKit推出,苹果大力推广使用HTML5,促进了Canvas的发展和应用,HTML5提供了画布元素,同时HTML5定义了很多API支持脚本化客户端绘图操作,元素本身是没有任何外观的,但是它在HTML文章中创建了一个画板,通过绘图API可以在画板中绘制位图模式的图形。

1.3 SVG和Canvas对比

SVG和Canvas是两种图像模式,他们的绘制过程也不相同,所以他们有各自的优缺点。SVG是矢量图,它通过一颗XML元素树来实现,使用SVG来绘制图形,可以很简单地通过移除增加相应的元素来编辑图形元素。SVG的矢量特性有时对性能会造成很大的影响,所以SVG的整体性能比Canvas要差。Canvas是位图,它通过调用API实现绘图,其API基于Javascript,相对简洁。但对于Canvas生成的图片,要更新图片中的元素就不得不把当前的擦出再重新绘制一遍。

表1

2 数据可视化的实现

基于HTML5的数据可视化的方法是基于数据驱动,采用HTML5提供的API借助浏览器的支持,在客户端实现的绘图的可视化技术。数据驱动依靠服务器端提供数据,数据源可以采用数据库,OLAP等,数据预处理为事先定义好的格式,依靠服务器提供的WEB Service,向客户端传输数据。本文采用JSON(Javascript Object Notation)作为数据传输格式,这是一种轻量级的数据交换格式,适合服务器与浏览器的交互。浏览器收到服务器端数据使用HTML5提供的绘图技术Canvas或SVG渲染出所需图形,由于图形绘制是基于浏览器,所以这种方法可以跨平台使用,对于智能手机和平板电脑,只要系统里安装支持HTML5 Canvas和SVG的浏览器就可以绘制图形。

2.1 基于SVG的数据驱动可视化工具D3.js

D3(Data-Driven Documents)是一个基于数据驱动的JavaScript库,通过使用HTML、SVG和CSS操作网页元素,同时提供操作各种复杂数据集的方法。D3的很多元素操作都基于css选择器,它可以选择网页元素并在改,删,增上与数据集保持一致,这个特征和jQuery类似。同时D3还提供了很好的交互的方法,例如动画,事件处理等。D3做为基于SVG的数据驱动可视化工具,提供了很好的Javascript库函数用来实现具体的可视化矢量图形,而它的使用和jQuery一样,只需在HTML中添加d3.js的外部引用即可。d3.selectAll(“p”).style(“color”, “white”); //这条语句简单的实现选择所以HTML中

并改变字体颜色为白色。

2.2 数据可视化模型定义

本文考虑使用工厂模式实现一种数据可视化方法,首先定义数据集对象和数据可视化对象,可视化对象接收数据,完成在浏览器中的图形渲染得到可视化结果。可视化对象由多个模块构成,考虑到代码重用性,可以根据可视化图形的不同定义不同的模块,模块分为接收数据和不接收数据两种,通过对固定模块的不同组合可以得到多样的可视化图形结果。对于不同模块图形渲染,可以不局限于使用Canvas或者SVG,考虑到Canvas的性能和SVG的矢量及灵活选择的特性,可以选择合适的技术来渲染可视化图形结果。

数据集对象需要完成对数据源的预处理,从服务器端返回的数据源是一定格式的JSON数据,数据集对象需要提供特定的API构造成可视化对象可以接受的数据集结果。

var dataset=new CrossTableDataset();

dataset.addRowAxis(“姓名”, [“张XX”, “李XX”, “王XX”, “赵XX”], “dimension”);

dataset.addColumnAxis(“指标”, [“BMI”], “measure”);

dataset.setData(true, [[25.1,18.5,22.5,32.5]]);

可视化对象需要不同模块的组合,常规图形如曲线图,饼图,直方图等,都需要标题,图例,所以这种模块可以定义为固定的一种模块,同时根据模块的功能定义相应的模块,如容器和绘图模块;

Main Container对象负责图形模块的布局,如可以将Legend对象的位置放在?Main Container的左边或者下部,Plot Conta接收数据集对象,渲染成需要的图形结果,这部分包含数据点的绘制,数据轴的绘制等。

chartOption={title : {visible : true}}; //设置图形属性

chart=newVizInstance({type:’Column,container:’chart’,

option:chartOption, data:dataset});

chart.update({title:{visible :false}}); //更新图形属性

图形示例化初始化参数定义为一个Object对象,其包含一系列参数,type为图形种类,container是图形结果显示在HTML DOM中位置,通常是一个

,option为图形属性的设置参数,data是图形接收的数据集。VizInstance对象同时具有更新图形属性的API。

3 数据可视化在健康分析上的应用

基于HTML5的数据可视化的方法在健康分析防霾你做一个应用,亚健康是结余健康与疾病之间的状态,亚健康是一种危险的状态,所以即使发现自身健康状况的风险,并作出改善是非常重要的,好的健康分析手段能够更加即使的给出健康风险的诊断,根据检测社体体质信息数据,包含BMI(体重身高比)、心肺功能、身体力量、身体平衡性、身体柔韧性等数据,同时采集医学和生活方式及心理方面的数据,通过数据的横向和纵向比较可以给出身体状况分析,通过实践积累和采集的个体数据增加,会有大量的健康数据,对于这些数据通故宫已经很难做出的比较分析,通过数据可视化借助于图形化手段,会生成直观的比较结果。

4 结论

本文介绍了HTML5标准中的Canvas和SVG绘图技术,比较了两者在数据可视化方面的优缺点,阐述了采用HMTL5绘图技术实现数据可视化的一种方法,这种方法基于浏览器的支持,通过调用HMTL5提供的绘图API,通过Javascript实现具体的数据可视化图形的绘制。这种方法可以很好的跨平台,但同时这种方法由于依赖浏览器的支持,在使用上有浏览器的限制,例如现在浏览器IE8对Canvas和SVG都没有支持。不过由于HTML5的逐渐成熟,各大主流浏览器厂商会逐渐完善对Canvas和SVG的支持。

学习前端的同学注意了!!!

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入前端学习交流群461593224,我们一起学前端!

需为从Web服务器,外部CDN或第三方Javascript插件中加载资产而为Web项目创建加载动画的最佳方法之一,就是使用与渲染相同的Web技术在Web应用程序中创建动画。
这样可以确保动画在你需要时立即显示,并确保用户体验不会因用户连接速度而受到影响。

在本教程中,我们将使用HTML和CSS为Web项目制作一个简单的加载动画。

我们追求的最终结果是以下动画。

添加以下html模板:

<div class="svg-loader">
    <svg class="svg-container" height="100" width="100" viewBox="0 0 100 100">
        <circle class="loader-svg bg" cx="50" cy="50" r="45"></circle>
        <circle class="loader-svg animate" cx="50" cy="50" r="45"></circle>
    </svg>
</div>

从上面的插图可以明显看出,动画模板由两个圆圈组成,一个圆圈在另一个圆圈的上方,第一个圆圈的厚度大于第二个圆圈的圆圈,两个圆圈都具有相同的圆周,从而使一个圆圈在另一个圆圈内的错觉。

圆内的cx和cy属性分别是两个圆的x轴和y轴坐标。他们确保两个圆以同一坐标为中心。

添加以下css:

.svg-loader{
  display:flex;
  position: relative;
  align-content: space-around;
  justify-content: center;
}
.loader-svg{
  position: absolute;
  left: 0; right: 0; top: 0; bottom: 0;
  fill: none;
  stroke-width: 5px;
  stroke-linecap: round;
  stroke: rgb(64, 0, 148);
}
.loader-svg.bg{
  stroke-width: 8px;
  stroke: rgb(207, 205, 245);
}

上面的css确保加载组件位于容器的中心,并确保两个圆具有不同的笔触宽度和颜色。

然后,我们用CSS动画第二个圆,该圆将位于第一个圆的顶部,以完成加载动画:

.animate{
  stroke-dasharray: 242.6;
  animation: fill-animation 1s cubic-bezier(1,1,1,1) 0s infinite;
}

@keyframes fill-animation{
  0%{
    stroke-dasharray: 40 242.6;
    stroke-dashoffset: 0;
  }
  50%{
    stroke-dasharray: 141.3;
    stroke-dashoffset: 141.3;
  }
  100%{
    stroke-dasharray: 40 242.6;
    stroke-dashoffset: 282.6;
  }
}

当我们绘制圆时,它只是一个单点划线,画出了从圆头到圆的形状轮廓,stroke-dasharray属性使我们能够将其分解为点划线和间隙。我们可以利用此功能来获得所需的动画最终结果。

为了获得如上所示的平滑动画效果,我们需要知道圆的圆周,其中圆周=2 x pi x radius。然后,我们使用stroke-dasharray属性在动画的不同状态下绘制最多一个破折号和间隙,以交替改变其大小,同时在添加两者时保持圆周长度。

圆半径为45时,周长为282.6,因此将stroke-dasharray值设置为141.3时,意味着虚线和间隙的值相同,其总和为282.6。

dashoffset属性是定义在相关虚线数组的呈现的偏移呈现属性,该偏移给出到加载动画的旋转作用,否则动画将出现破裂。这就是填充动画动画中发生的所有事情。
我们通过使用.animation类将动画应用于第二个圆环来确保该动画无限进行。

这只是使用SVG和CSS可以制作动画的基础,可以进行实验性和创造性的创作,从而为你的Web项目创建快速且像素完美的加载动画。

如果你喜欢这篇文章,请给我点赞,收藏,转发,这是对我真的很重要

关注我长期分享前端小技巧