html中如何设置图片填充颜色渐变,实现SVG图标的渐变填充效果

2016年我写过一篇文章如何使用SVG图标,其“试验性部分”的结语是个警告 - “抱歉,渐变填充无法工作”。

我指的是像fill: linear-gradient(red, blue)一样的无效代码,因为fill属性出自SVG - 该元素内置了独有的渐变支持;而linear-gradient则源自CSS,常用于设置背景。二者的结合效果并不理想。

我可以使用SVG的元素,但之前并未尝试过。几个月后我做了试验,效果还算不错。下面请看分享。

在HTML中添加渐变

我发现最值得信赖的方式是在HTML页面中添加SVG元素(例如在

标签的开始或结束位置添加)。这里应该定义一个。

`

这个元素不推荐用display:none实现隐藏效果,这样的话某些浏览器会忽略渐变效果。把元素高度设为0px来实现隐藏效果是可行的。

现在我们可以在SVG图标上使用渐变效果了:

或者在CSS里这样写:.icon {  /* gradient and fallback color */

fill: url(#my-cool-gradient) #447799;

}

不过我们无法定制单个按钮的渐变。如果想这样做,需要在HTML中创建不同的SVG渐变定义。

使用CSS变量控制渐变色

如果我们想用CSS设置渐变色,可以通过CSS变量来实现。我们将使用CSS自定义属性来编写渐变定义(var(--my-custom-property)).

现在我们可以设置 - 如果需要的话 - 在CSS中还能改变这些颜色:#gradient-horizontal {

--color-stop-1: #a770ef;

--color-stop-2: #cf8bf3;

--color-stop-3: #fdb99b;}#gradient-vertical {

--color-stop-1: #00c3ff;

--color-stop-2: #77e190;

--color-stop-3: #ffff1c;}

最后,用这些效果来填充图标:.icon-hgradient {  fill: url(#gradient-horizontal) gray;  /* We could use it as a stroke fill too:

stroke: url(#gradient-horizontal) gray; */}.icon-vgradient {  fill: url(#gradient-vertical) gray;

}

使用SVG渐变填充和CSS变量测试图标:

渐变填充会绘制图标的每条路径。为了避免颜色衔接不当(譬如叶子和茎的连接处),把图标的源SVG所有路径或大部分路径合并可能有效果。

在外部文件中使用渐变

这个技巧在FireFox中被证实有效,也曾适用于Edge(Edge14,15确认可用,但Edge16和预览版又取消了支持)。请看下面的测试:两个图标都取自一个外部雪碧图: sprite.svg.

第一个图标使用了HTML页面的渐变效果,第二个则使用了sprite.svg..icon-sprite-gradient {  fill: url(sprite.svg#my-warm-gradient) red;

}

不支持此项操作的浏览器(Chrome,Safari,最新版Edge...)应该为第二个图标展示一个红色的替代填充效果。

在CSS中使用数据URL作为渐变值

如果我告诉你可以在SVG中定义渐变之后把SVG作为数据URL放在CSS中,你会怎么想? 好吧我承认是在犯傻,可它真的可以实现! 至少在Firefox中可以:P/* Notice the  id="grad" in the SVG URL and how we’re using it at the end. Note that the # in hexadecimal colors must be escaped as %23. */.icon-gradient-url {  fill: url("data:image/svg+xml,#grad") purple;

}/* Same SVG, in base64 */.icon-gradient-base64 {  fill: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxsaW5lYXJHcmFkaWVudCBpZD0nZ3JhZCc+PHN0b3Agb2Zmc2V0PScwJScgc3RvcC1jb2xvcj0nI2ZmMDBjYycvPjxzdG9wIG9mZnNldD0nMTAwJScgc3RvcC1jb2xvcj0nIzMzMzM5OScvPjwvbGluZWFyR3JhZGllbnQ+PC9zdmc+#grad") purple;

}

看到我们如何在URL的结尾用#grad引用渐变效果的id了吗?目前看来只有Firefox能理解这个语法。额,太遗憾了不是吗。

这个例子打算实现一个品红色-紫色渐变效果。不支持此操作的浏览器(Chrome,Safari,Edge...)应该会展示一个紫色的备用填充效果。

概括是的,我们可以使用渐变填充!

但首先需要在HTML中添加SVG渐变

可以在SVG渐变中直接设置颜色(当然是HTML中的SVG),或者在CSS里设置(使用CSS变量)

所有使用给定渐变效果的图标会使用相同的颜色,但我们无法像下面一样覆盖某种特定颜色:.icon-gradient-override {  /* 可行方法 */

fill: url(#gradient-horizontal) gray;

/* 以下方法法不可行... */

--color-stop-1: white;

--color-stop-2: gray;

--color-stop-3: black;}

假如你需要大量渐变效果,这个技巧可能不适合你。因为在HTML中创建10个或20个不同的SVG渐变并不实用。但对于简单需求而言,这个技巧在所有现代浏览器中均可使用(如果我们放弃CSS变量的话,IE11也在支持的浏览器之列)。

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

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

相关文章

OpenAI最新论文:机器学习效率正在超越摩尔定律

来源:学术头条八年前,一种机器学习算法学会了识别一只猫,它震惊了全世界。几年后,人工智能可以准确地翻译语言,打败世界围棋冠军。现在,机器学习已经开始在诸如 “星际争霸” 和 “dota2” 等复杂的多人视频…

Science公布:全世界最前沿的125个科学问题

来源:iPlants这125个问题如下:1、宇宙由什么构成?2、意识的生物学基础是什么?3、为什么人类基因会如此之少?4、遗传变异与人类健康的相关程度如何?5、物理定律能否统一?6、人类寿命到底可以延长多久?7、是什么控制着器官再生?8、皮肤细胞如何成为…

LF模式是个坑,ZeroIce中间件让你体会这个痛

LF模式是个坑,一个小小的失误就可能使你的网络处理瘫痪,Ice就很好地展现了出来,换句话说,Ice中间件或是LF模式就是一个坑,如果你一不小心。 LF模式的官方论文中,论述了此模式用于高性能网络并发模式&#x…

html表格统计表,jQuery操作表格(table)的常用方法、技巧汇总

以下列出13个jQuery操作table常用到的功能:1.鼠标移动行变色$(#table1 tr).hover(function(){$(this).children(td).addClass(hover)}, function(){$(this).children(td).removeClass(hover)});方法二:$("#table1 tr:gt(0)").hover(function()…

收藏!中国卫星互联网产业发展白皮书

来源:网络传播杂志卫星互联网概念卫星互联网是基于卫星通信的互联网,通过发射一定数量的卫星形成规模组网,从而辐射全球,构建具备实时信息处理的大卫星系统,是一种能够完成向地面和空中终端提供宽带互联网接入等通信服…

数学在计算机科学上的应用文献,数学计算机论文,关于计算机在数学教学中的应用相关参考文献资料-免费论文范文...

导读:本文关于数学计算机论文范文,可以做为相关论文参考文献,与写作提纲思路参考。(新疆喀什地区塔什库尔干塔吉克自治县县中学数学教师 新疆喀什 845250)摘 要:人们在进入信息时代之后,计算机被广泛的应用在各个领域之中,教学中恰当的运用计算机,使很多知识都能清晰的展示在学…

输入流IS和输出流OS学习总结

1、我们编写的程序,除了自身会定义一些数据信息外,经常还会引用外界的数据,或是将自身的数据发送到外界,比如我们编写的程序想读取一个文本文件, 又或者是我们想将程序的一些数据写到一个文件中,这时我们就…

Attention最新进展

来自 | 知乎 作者|sisiyou链接 | https://zhuanlan.zhihu.com/p/130388873编辑 | 深度学习这件小事公众号本文主要总结了最新的关于attention的应用文章。Attention-based Dropout Layer for Weakly Supervised Object Localization(CVPR19&#xff09…

SQL Server 2012从零开始学pdf

下载地址:网盘下载内容介绍编辑《SQL Server 2012从零开始学》面向sql server 2012初学者,以及广大数据库设计爱好者。全书内容注重实用,涉及面广,通俗易懂地介绍了sql server 2012数据库应用与开发的相关基础知识,提供…

苹果html抓包,苹果被开发者“抓包”违反了自己定的规则

原标题:苹果被开发者“抓包”违反了自己定的规则【PConline资讯】消息:苹果在本周的发布会上推出了AppleNews订阅服务,虽然咱们是用不到,但这项服务最近b被开发者抓到了“小辫子”,因为它违反了苹果自己定的规则。根据…

前沿科技 | 中科院科学家在视觉学习行为的神经机制研究中取得进展

来源:中国科学院6月3日,《自然-通讯》(Nature Communications)期刊在线发表了题为《眶额叶皮层通过调节初级视皮层的反应增益促进视觉偶联学习》的研究论文,该研究由中国科学院科学家团队——脑科学与智能技术卓越创新…

Selenium-几种操作

元素定位之后就要对它进行操作了,常见的集中操作如下: click()  点击元素  eg.输入内容后,点击操作 send_keys("内容")  模拟按键输入  eg:百度输入框,输入内容 clear()  清除元素的内容  eg:清除百度输入框的内容 submit()  提交表单  eg:driver.fi…

桌面图标设计里的计算机是灰色的,小技巧教您如何将Windows 10上的桌面图标设置中的回收站为灰色!...

如果Windows10的桌面图标设置窗口中的回收站选项显示为灰色,则可以查看本逐步指南以解决问题。这将帮助您取回“桌面图标设置”面板中的“回收站”选项,以便您可以在桌面上显示或隐藏回收站。如果错误或任何恶意软件,广告软件等将其禁用&…

人工智能算法的可解释性方法研究

来源:数学与人工智能摘要以深度学习为代表的人工智能技术在信息领域的应用,极大地提高了信息的利用效率和挖掘价值,深刻的影响了各领域的业务形态,同时也引发了监管部门和用户对这一新技术运用中出现的 “算法黑箱”问题关切和疑虑…

asp:dropdownlist如何去掉三角箭头_一棵悬崖三角枫的培养过程

更多精彩,请点击上方思齐盆景关注!▲2010年4月上图是2010年春天购买的三角枫素材。这棵三角枫过渡流畅,曲度自然。入手后开始培养枝条。▲2012年3月转眼间两年过去了,枝条的培养略见成效。翻盆时打算按照上图的角度种植&#xff0…

征服用计算机弹法,征服WIN7

与Windows XP以及Vista系统相比,WIN7自上市以来便备受好评。速度更快的内核、更加时尚的外观、更强大的功能……一切都标志着微软视窗系统的又一次全新升级。如今,新购置电脑的朋友基本都已经用上了预装的WIN7,但面对功能如此强大的操作系统&…

表单项介绍

1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset"UTF-8">5 <title></title>6 </head>7 <body>8 <!-- 9 表单的作用就是用来将用户信息提交给服务器的10 …

云联惠身份认证需要多长时间_欧盟REACH认证需要多长时间【周期、费用、有效期】...

一、欧盟reach认证REACH是欧盟关于化学品注册&#xff0c;评估&#xff0c;授权和限制的法规&#xff0c;它于2007年6月1日生效&#xff0c;并用一个系统取代了许多欧洲指令和法规。二、申请REACH认证需要多长时间一般情况下&#xff0c;申请REACH认证需要5个工作日&#xff0c…

Nature Neuroscience|群际冲突的脑间同步机制

本文来源&#xff1a;”认知神经科学与学习国家重点实验室”官网编辑&#xff1a;Yezi审阅&#xff1a;mingzlee7马燚娜课题组在《Nature Neuroscience》发表论文揭示群际冲突的脑间同步机制图片来源&#xff1a;《乌合之众——大众心理研究》插图个人一旦成为群体的一员&#…

计算机叫醒服务英语,关于酒店叫醒服务的英文口语

关于酒店叫醒服务的英文口语发布时间&#xff1a;2020-03-08春困秋乏夏打盹&#xff0c;睡不醒的冬三月……起床困难户小学妹今天要和大家聊聊使用酒店叫醒服务时会用到的实用口语。叫醒服务通常会用Morning call Service或是Wake-up call来表示&#xff0c;如果第二天有重要的…