刚刚写了篇《CSS变量试玩儿》,我们了解到可以使用原生的CSS来定义使用变量,简化CSS书写、优化代码的组织与维护,但可怕的兼容性问题,又让我们望而却步、一笑了之。
但是有这么一个CSS变量currentColor,兼容良好、功能强大,接下来我们来一探究竟。
简介
CSS里已经有一个长期存在的兼容性良好的变量currentColor,表示对当前元素颜色的引用,可以应用在当前元素的其他属性和后代元素上。
1 | h1 { color: hsl(0,0%,44%); padding: 1rem; border-bottom: 4px solid; } h1 { color: hsl(0,0%,44%); padding: 1rem; border-bottom: currentColor 4px solid; } 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文件
1 | <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.
然后,我们探索将currentColor应用到:after元素中去,实现链接装饰元素的颜色与链接元素的绑定。
1 | 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; }
|
로그인 후 복사
应用到动画元素上的尝试。
1 | 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}}
|
로그인 후 복사
深入
本文的写作过程大量参考了以下文章,大家可以仔细阅读下面文章获得更深的体会。
CSS-Tricks article 张鑫旭的妙文 W3C Ref Keeping CSS short with currentColor form-controls-currentcolor-pseudo-elements 刘哇勇的文章 致谢