刚刚写了篇《CSS变量试玩儿》,我们了解到可以使用原生的CSS来定义使用变量,简化CSS书写、优化代码的组织与维护,但可怕的兼容性问题,又让我们望而却步、一笑了之。

但是有这么一个CSS变量currentColor,兼容良好、功能强大,接下来我们来一探究竟。

简介

CSS里已经有一个长期存在的兼容性良好的变量currentColor,表示对当前元素颜色的引用,可以应用在当前元素的其他属性和后代元素上。

h1 {
color: hsl(0,0%,44%);
padding: 1rem;
/* 这里调用默认颜色 */
border-bottom: 4px solid;
}
/* 使用currentColor,用在其他属性上 */
h1 {
color: hsl(0,0%,44%);
padding: 1rem;
/* 这里调用默认颜色 */
border-bottom: currentColor 4px solid;
}
/* 使用currentColor,用在后代元素上 */
a.blog{
text-decoration: none;
font-weight:bold;
}
/*设置不同状态颜色*/
a.blog { color: #900; }
a.blog:hover,
a.blog:focus { color: #990; }
a.blog:active { color: #999; }
/*设置箭头*/
a.blog:after{
width: 0;
height: 0;
border: 0.4em solid transparent;
border-right: none;
content: '';
display: inline-block;
position:relative;
top:1px;
left:2px;
}
/*设置箭头继承父对象颜色*/
a.blog::after,
a.blog:hover::after,
a.blog:focus::after,
a.blog:active::after
{
border-left-color: currentColor;
}

我们可以发现,使用currentColor能够大大简化代码书写,优化代码的组织与维护。

实例

为了演示currentColor的应用,我们造了一个案例,参见codepen,大家可以-在线编辑-,-下载收藏-。我们在案例里尝试了currentColor和渐变的结合,和动画的结合,和伪对象元素的结合。



html文件放上来,顺便弄点广告哈。

html文件

<h2 class="icon">Let's go to whqet's blog</h2>
<p>前端开发whqet,<a class="blog" href="http://blog.csdn.net/whqet/">王海庆的技术博客</a>,关注前端开发,分享相关资源,希望可以对您有所帮助。csdn专家博客http://blog.csdn.net/whqet和个人独立博客http://whqet.github.io同步更新,希望可以得到您的支持与肯定,您的支持是我最大的动力!王海庆,浙江邮电职业技术学院软件技术青椒一枚,其貌不扬、其名不翔,关心技术、热爱生活,我爱<a class="link" href="#">怒放的生命</a>。</p>

然后在CSS中,我们使用-prefix free不再用考虑复杂的浏览器厂商前缀。

这里使用本博文章《苹果风格的下划线》所述效果,利用渐变划线,然后利用text-shadow隔离线条,在渐变里面使用了currentColor.

/*使用googlefont*/
@import url(//fonts.googleapis.com/css?family=Cedarville+Cursive);
/*使用渐变划线,利用text-shadow隔离线条*/
h2.icon{
margin:10px 0;
display: inline-block;
font-size:3em;
width:auto;
font-family:Cedarville Cursive;
text-shadow: 2px 0 0 #fff, -2px 0 0 #fff;
color: #000;
background-image: linear-gradient( to right, currentColor 0%, #fff 120% );
background-repeat: repeat-x;
background-position: 0 75%;
background-size: 100% 3px;
}

然后,我们探索将currentColor应用到:after元素中去,实现链接装饰元素的颜色与链接元素的绑定。

p{
text-indent: 2em;
line-height: 1.5em;
}
a.blog,a.link{
text-decoration: none;
font-weight:bold;
position: relative;
margin-right:4px;
}
/*应用到后代伪类元素*/
a.blog { color: #900; }
a.blog:hover,
a.blog:focus { color: #990; }
a.blog:active { color: #999; } a.blog::after{
width: 0;
height: 0;
border: 0.4em solid transparent;
border-right: none;
content: '';
position:absolute;
right:-6px;
top:2px;
} a.blog::after,
a.blog:hover::after,
a.blog:focus::after,
a.blog:active::after
{
border-left-color: currentColor;
}

应用到动画元素上的尝试。

/* 结合动画应用 */
a.link{
color: #900;
animation:go 2s infinite;
}
a.link::before,
a.link::after{
content: '';
width:100%;
height: 2px;
background-color: currentColor;
position:absolute;
left:0;
}
a.link::before{
top:-4px;
}
a.link::after{
bottom:-4px;
}
@keyframes go{
0% {color:#900}
33%{color:#090}
66%{color:#009}
}

深入

本文的写作过程大量参考了以下文章,大家可以仔细阅读下面文章获得更深的体会。

致谢

前端开发whqet,关注前端开发,分享相关资源。csdn专家博客,王海庆希望能对您有所帮助。

本文原文链接,http://blog.csdn.net/whqet/article/details/43761091

欢迎大家访问独立博客http://whqet.github.io

CSS currentColor研究的更多相关文章

  1. CSS深入研究:display的恐怖故事解密(2) - table-cell

    上集<CSS深入研究:display的恐怖故事解密(1) - display-inline>已经把display的属性列表拉出来溜了,发现在这个属性恐怖面貌其实都是脆弱的伪装.除了部分常用 ...

  2. CSS深入研究:display的恐怖故事解密(2) - table-cell(转)

    http://www.cnblogs.com/StormSpirit/archive/2012/10/24/2736453.html 上集<CSS深入研究:display的恐怖故事解密(1) - ...

  3. CSS彻底研究(3) - 浮动,定位

    Github pages 博文 CSS彻底研究(3)-浮动,定位 一 . 浮动float I . 定义及规则 float默认为none,对应标准流的情况.当float : left;时,元素就会向其父 ...

  4. CSS currentColor 变量的使用

    CSS中存在一个神秘的变量,少有人知自然也不怎么为人所用.它就是crrentColor变量(或者说是CSS关键字,但我觉得称为变量好理解些). 初识 它是何物?具有怎样的功效?它从哪里来?带着这些疑问 ...

  5. css定位研究

    css的定位是很重要的一个知识点,要学会网页布局,一定要先把定位弄清楚,今天抽空整理一下这方面的知识. 1.块级元素和行内元素(内联元素) 块级元素:display值为block的元素就是块级元素,比 ...

  6. CSS currentColor 变量

    ㈠currentColor定义及理解 来自MDN的解释:currentColor代表了当前元素被应用上的color颜色值. 使用它可以将当前这个颜色值应用到其他属性上,或者嵌套元素的其他属性上. 你这 ...

  7. CSS导航的魔力——源自温谦老师《CSS彻底研究设计》

    web标准出台以后,非常注重的一个标准就是希望内容与样式分离.希望HTML就干HTML该干的事.但是有的时候我们为了美观必须多多少少改动HTML 代码.下面介绍几个导航栏.               ...

  8. CSS彻底研究(2)

    Github pages 博文 一 . CSS盒模型 1.盒子的结构 margin-border-padding结构 + 内容content 组成盒模型 注意 width,height 取的是cont ...

  9. CSS彻底研究(1)

    Github pages 博文 基本选择器 标记选择器h1 {...} 类别.class_name{...},两个class同时作用,如class = 'one two',冲突取前者 ID选择器 #i ...

随机推荐

  1. 搭建SpringBoot、Jsp支持学习笔记

    Spring Boot 添加JSP支持 大体步骤: (1)            创建Maven web project: (2)            在pom.xml文件添加依赖: (3)     ...

  2. Mysql基础命令(二)select查询操作

    条件查询 使用Where进行数据筛选结果为True的会出现在结果集里面 select 字段 from 表名 where 条件; # 例: select * from test_table where ...

  3. 服装盘点机PDA在服装行业颜色尺码仓库条码高效管理应用

    服装行业的商品管理的特点是需要管理颜色和尺码 具体逻辑就是: 什么商品,什么颜色,什么尺码,入库多少个? 什么商品,什么颜色,什么尺码,出库多少个? 什么商品,什么颜色,什么尺码,还有库存多少个? 如 ...

  4. 1079. Total Sales of Supply Chain (25)-求数的层次和叶子节点

    和下面是同类型的题目,只不过问的不一样罢了: 1090. Highest Price in Supply Chain (25)-dfs求层数 1106. Lowest Price in Supply ...

  5. SCRUM 12.09 软件工程第二周计划

    第二轮迭代的第二周开始了,上一周我们进行了对代码优化的探索与自我审查. 本周,我们有以下两点目标要实现: 1.对客户端进行优化. 2.网络爬虫爬取美团外卖. 客户端优化主要开发人员:高雅智.牛强.彭林 ...

  6. wordpress学习五: 通过wordpress_xmlrpc的python包远程操作wordpress

    wordpress提供了丰富的xmlrpc接口api来供我们远程操控wp的内容.伟大的开源社区有人就将这些api做了一下封装,提供了一个功能比较完整的python库,库的使用文档地址http://py ...

  7. 11慕课网《进击Node.js基础(一)》Buffer和Stream

    Buffer 用来保存原始数据 (logo.png) 以下代码读取logo.png为buffer类型 然后将buffer转化为string,新建png 可以将字符串配置: data:image/png ...

  8. 修改servlet的模板代码

    实际开发中,这些生成的代码和注释一般我们都用不到的,每次都要手工删除这些注释和代码,很麻烦.下面以MyEclipse 2014(其实版本通用的,都可以修改)为例进行说明如何修改Servlet的模板代码 ...

  9. [软工课程博客] 求解第N个素数

    任务 求解第 10,0000.100,0000.1000,0000 ... 个素数(要求精确解). 想法 Sieve of Eratosthenes 学习初等数论的时候曾经学过埃拉托斯特尼筛法(Sie ...

  10. HDU 2029 算菜价

    http://acm.hdu.edu.cn/showproblem.php?pid=2090 Problem Description 妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多 ...