你用过CSS3的这个currentColor新属性吗?使用与兼容性
currentColor
顾名思意就是“当前颜色”,准确讲应该是“当前的文字颜色”,例如:
.xxx { border: 1px solid currentColor; }
currentColor
表示“当前的标签所继承的文字颜色”,换种方式表示就是:currentColor = color的值
。
凡事需要使用颜色值的地方,都可以使用currentColor
替换,比方说背景色 – background-color
, 渐变色 – gradient
, 盒阴影 – box-shadow
, SVG的填充色 – fill
等等。很灵活,很好用!
当然可以使用css实现背景色镂空,可以方便控制图标的颜色。实现的原理是图标形状区域是透明镂空的,而周边是实色的。
css代码:
.icon {
display: inline-block;
width: 16px; height: 20px;
background-image: url(sprite_icons.png);
background-color: #34538b; /* 该颜色控制图标的颜色 */
}
.icon1 { background-position: 0 0; }
.icon2 { background-position: -20px 0; }
.icon3 { background-position: -40px 0; }
.icon4 { background-position: -60px 0; }
.link { margin-right: 15px; }
html代码:
更改颜色:<input id="colorInput" type="color" value="#34538b" autocomplete="off">
<p>
<i class="icon icon1"></i><a href="##" class="link">返回</a>
<i class="icon icon2"></i><a href="##" class="link">刷新</a>
<i class="icon icon3"></i><a href="##" class="link">收藏</a>
<i class="icon icon4"></i><a href="##" class="link">展开图片</a>
</p>
js代码:
var eleInput = document.getElementById("colorInput"),
eleIcons = document.getElementsByTagName("i");
eleInput.onchange = function() {
var i = 0, l = eleIcons.length;
for (; i<l; i+=1) {
eleIcons[i].style.backgroundColor = this.value;
}
};
只需要改变背景图片的color就更改变图片的颜色。IE低版本也支持。
效果地址:http://www.zhangxinxu.com/study/201307/background-color-insert-background-image.html
那么现在使用currentColor来实现这个效果:
.icon {
display: inline-block;
width: 16px; height: 20px;
background-image: url(../201307/sprite_icons.png);
background-color: currentColor; /* 该颜色控制图标的颜色 */
}
于是,我们想要鼠标hover文字链接,其图标颜色要跟着一起变化,只要改变文字颜色就可以了:
.link:hover { color: #333; }/* 虽然改变的是文字颜色,但是图标颜色也一起变化了 */
说明:
border
和box-shadow
默认的颜色就是当前的文字颜色,也就是类似currentColor
;
在iOS Safari浏览器下(iOS8)下,currentColor
还是有一些bug的,例如伪元素hover时候,background:currentColor
的背景色不会跟着变化,怎么办呢?等升级,或者使用border来模拟。
currentColor
浏览器兼容情况:
支持的浏览器:谷歌,火狐,QQ浏览器,IE9+
不支持的浏览器:360,IE低版本浏览器
详细介绍请查看:http://www.zhangxinxu.com/wordpress/2014/10/currentcolor-css3-powerful-css-keyword/
你用过CSS3的这个currentColor新属性吗?使用与兼容性的更多相关文章
- CSS3学习笔记(新属性)
1. 边框(圆角边框.加阴影和用图片绘制) 新增加 border-radius box-shadow border-image .div1{ border:2px solid purple; bo ...
- css3.0新属性效果在ie下的解决方案(兼容性)
css3.0增加的新属性,如投影.渐变.旋转.圆角等等!这些新标准属性在ie6.ie7.ie8浏览器版本里得不到很好的支持,相信ie以后的新版本也会支持这些新属性的.目前ie6.ie7.ie8浏览器不 ...
- 使用C3的一些新属性绘制谷歌浏览器的图标
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 使用css3新属性clip-path制作小图标
一般一个网页上面,或多或少都会用到一些小图标,展示这些小图标的方法有很多种.最简单的做法就是将UI图上面的每个小图标都保存为图片,一个小图标就一张图片.但这也是比较笨的方法,因为浏览器同一时间最多加载 ...
- css3新属性@ text-shadow
text-shodow是css3的新属性,可以利用这个属性使字体更有立体感,还可以创造有趣的效果. 1.语法形式:text-shadow : x-offset(x轴偏移量) y-offset(y轴偏移 ...
- 基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
基于css3新属性transform,实现3d立方体的旋转 通过原生JS,点击事件,鼠标按下.鼠标抬起和鼠标移动事件,实现3d立方体的拖动旋转,并将旋转角度实时的反应至界面上显示 实现原理:通过获取鼠 ...
- 两点补充——CSS3新属性以及弹性布局
CSS3 新属性 一.[ CSS3新增属性前缀 ] 1.-webkit-:chrome/safari 2.-moz-:火狐 3.-mo-:IE 4.-o-: Opera 欧朋 二 .[CSS 长度单位 ...
- 前端笔记之HTML5&CSS3(上)新特性&音频视频&本地存储&自定义属性
一.HTML5简介 HTML 5 的第一份正式草案已于2008年1月22日公布.HTML5 仍处于完善之中.然而,大部分现代浏览器已经具备了某些 HTML5 支持. 2014年10月29日,万维网联盟 ...
- CSS3新属性注释及实例
这里把CSS3的新属性单独拿出来讲解一下: border-radius 属性用于创建圆角 div { border:2px solid; border-radius:25px; -moz-border ...
随机推荐
- 微信小程序中的app.js-清除缓存
微信小程序中的app.js 关于小程序app.js生命周期的介绍 App(Object) App() 函数用来注册一个小程序.接受一个 Object 参数,其指定小程序的生命周期回调等. App() ...
- Django-用户模块与权限系统相关
Django的用户模块与权限系统 Django的用户系统都提供哪些功能: 提供用户模块(User Model) 权限验证(默认添加已有模块的增加删除修改权限) 用户组与组权限功能 用户鉴权与登录功能 ...
- Centos7使用docker搭建gitlab服务器
了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux rele ...
- mysql 架构篇系列 3 复制运行状态监控与选项参数说明
一. 概述 在上一篇中,搭建了一主一从的复制架构,这篇通过一些诊断方法来了解复制的运行状态和一些选项参数说明.上次mysql主从服务关机,今天在打开mysql服务,出现了错误信息. 1.首先 启动主从 ...
- Java集合框架总结—超详细-适合面试
Java集合框架总结—超详细-适合面试 一.精简: A.概念汇总 1.Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口, ...
- Java多线程之三volatile与等待通知机制示例
原子性,可见性与有序性 在多线程中,线程同步的时候一般需要考虑原子性,可见性与有序性 原子性 原子性定义:一个操作或者多个操作在执行过程中要么全部执行完成,要么全部都不执行,不存在执行一部分的情况. ...
- [疑难杂症]__关于cmd命令正确而显示不是内部指令的错误(ps:已解决)
前言 事情的起因是因为我在使用上网程序的时候,运行程序发现端口被占用,这个当然我们知道要将占用的端口结束掉就行,但是显然我们首先要找到占用窗口的程序是什么,才方便在任务管理器中找到并结束掉它. 查找了 ...
- Dockerfile 时区设置
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo 'Asia/Shanghai' >/etc/timezo ...
- 一篇文章带你看懂AWS re:Invent 2018大会,揭秘Amazon Aurora
本文由云+社区发表 | 本文作者: 刘峰,腾讯云NewSQL数据库产品负责人.曾职于联想研究院,Teradata北京研发中心,从事数据库相关工作8年.2017年加入腾讯数据库产品中心,担任NewSQL ...
- lucene-solr本地调试方法
1.下载并编译lucene-solr的源代码,并导入 eclipse sts等 2.修改SolrDispatchFilter的solr.solr.home属性,我们这里将其直接修改为一个本地绝对路径, ...