惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
InfoQ
博客园_首页
美团技术团队
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
J
Java Code Geeks
T
Tailwind CSS Blog
Jina AI
Jina AI
量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
爱范儿
爱范儿
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
宝玉的分享
宝玉的分享
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活
SVG图标颜色文字般继承与填充 « 张鑫旭-鑫空间-鑫生活
张鑫旭,zhangxinxu · 2014-07-22 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from https://www.zhangxinxu.com
本文地址:https://www.zhangxinxu.com/wordpress/?p=4286

一、接上篇

前文介绍了SVG Sprites身材和内涵,顺大便客观的评价了SVG Sprites比font-face高几层楼的事实(看看外国同行的对比)。但是呢,人总是这样,总是容不得说自己现在使用东西的不好。于是乎,不经意间戳动了点小小的自尊。导致文章也没细读就大肆反驳:SVG图标颜色要内联设置,不像font-face那样好控制!而且还不只一位兄弟这么说。

心中默念三遍,切勿浮躁,切勿浮躁,切勿浮躁。其实呢,我并不忍心说实话的:SVG图标颜色控制要比font-face有过之而无不及。

以下是颜色相关特点(不包括图片填充,滤镜什么的):
1. CSS可控制
2. 颜色可继承
3. 支持当前色currentColor
4. 支持渐变色(部分)

二、SVG内联图标颜色CSS可控制

在CSS中使用fill属性即可,例如:

svg { fill: #369; }

所以,一般而言,SVG图标元素上是没有fill属性的,就好像使用font-face的元素一般不会有style="color:#369"这样,都是为了方便CSS控制。

三、SVG内联图标颜色可继承

祖先的fill颜色设置SVG后辈元素继承,例如:

body { fill: #369; }

则,如果没有其他fill干扰,body标签下的所有SVG图标颜色都是#369.

四、SVG内联图标支持当前色currentColor

currentColor就是使用当前该元素所处环境的文字颜色,例如:

li { color: #369; }
li > svg { fill: currentColor; }

这里的currentColor就是#369也就是当前SVG平级的文字的颜色。一例胜前言,

您可以狠狠地点击这里:SVG Sprites图标与文字填充currentColor demo

demo页面的HTML结构是:

<ul>
    <li>
        <svg>
    <li>
        <svg>
    <li>
        <svg>
</ul>

其中,颜色方面:

li { color: #369; }
svg { fill: currentColor; }

也就是li设置颜色,svg使用当前色currentColor, 于是乎,我们会看到demo中,SVG图标和文字都是一样的颜色#369, 见下截图(IE9浏览器下):
IE11浏览器下IE9模式图标填充色继承currentColor截图

currentColor就是当前色,比方说SVG和文字都在a标签里面,则图标就是链接色,很方便的来,就像是普通文字一样,使用起来与font-face无异,很方便。

为了让大家进一步感受下这个世界的善意,demo中还有颜色可设置的操作,见下图:
修改颜色操作截图示意

更改颜色会改变上面对应序号li元素的颜色,例如,我们选几个华丽的web色,然后:
更改颜色之后的状态

总而言之,言而总之,SVG图标颜色控制很简单,就跟设置文字一样。

五、SVG内联图标支持渐变色

前面3个点都是跟font-face平起平坐的,这里这个就是超过font-face的地方。

CSS中的fill属性,不仅可以跟随颜色值,还能是页面上的SVG元素,自然,也是可以是渐变元素。

例如,页面上有下图所示的(IE9+可见)SVG元素(线性渐变):

我们只需要页面上存在如下的SVG代码:

<svg width="0" height="0">
    <defs>
        <linearGradient x1="0" y1="0" x2="1" y2="1" id="lineGradient">
            <stop offset="0%" stop-color="#000000">
        </linearGradient>
    </defs>
</svg>

然后,CSS方面:

svg { fill: url(#lineGradient); }

然后小图标的颜色就是渐变了啦!
SVG图标成为渐变色

自然,特定条件下你还可以fill图片,也就是文字遮罩效果。

font-face要实现文字渐变,Chrome可以,FireFox和IE呢?

目前,IE浏览器,包括IE11,貌似CSS中fill不支持url()锚定,但FireFox支持,所以还是比font-face更上一层楼!

六、结束语

更多潜力等待挖掘。

感谢阅读,欢迎多多指正,祝愿没有小手一抖(下图为GIF点击播放-472K)。

奥特曼小手一抖

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=4286

(本篇完)