说到 CSS 颜色,相比大家都不会陌生,本文是我个人对 CSS 颜色体系的一个系统总结与学习,分享给大家。 先用一张图直观的感受一下与 CSS 颜色相关大概覆盖了哪些内容。 接下来的行文内容大概会按照这个顺序进行,内容十分基础,可选择性跳到相应内容处阅读。 色彩关键字嗯,色彩关键字很好理解。它表示一个具体的颜色值,且它不区分大小写。譬如这样 在 CSS3 之前,也就是 CSS 标准 2,一共包含了 17 个基本颜色,分别是: 而到了 CSS3,色彩关键字得到了极大的扩充,达到了 147 个。下面仅仅是列出了一部分: 值得注意的是,未知的关键字会让 CSS 属性无效。 这里的这个测试 test3 是为了说明,当传入的色彩关键字错误,CSS 属性将无效而不是使用当前的 所有可以用到颜色值的地方,都可以用色彩关键字替代,那么在 CSS 中,什么地方可以用到颜色值呢?
一些无法直接设置,但是可以被得到或者继承当前元素 currentColor 的属性:
一些比较常见的就不举例了,说一下 、 的 alt 文本和 ul 列表项的小点。经过测试, 的颜色值,可以通过设置它的 border 的颜色值来表示。
对于表单控件 transparent 的字面意思就是透明。它用来表示一个完全透明的颜色,即该颜色看上去将是背景色。 也可以理解为它是 值得注意的是:
那么这个透明值有什么用呢?简单列举一些例子: transparent 用于 border,绘制三角形这算是 transparent 最常见的一个用法,用于绘制三角形。 结合上图图1、图2,可以看到利用一个高宽为 0 的 div,设置它的 border ,当任意三边的 border 颜色为 transparent 时,则可以得到任意朝向的一个三角形。 像上文说的,由于 transparent 在低版本浏览器中(IE78)可以使用在 border、background 中,所以此方法兼容性很好,可以利用于很多场景。 按钮是我们网页设计中十分重要的一环,而按钮的设计也与用户体验息息相关。让用户更容易的点击到按钮无疑能很好的增加用户体验,尤其是在移动端,按钮通常都很小,但是有时由于设计稿限制,我们不能直接去改变按钮元素的高宽。那么这个时候有什么办法在不改变按钮原本大小的情况下去增加他的点击热区呢? 这里,借助透明的 border 可以轻松帮我们实现(我 之前一篇文章写到过,利用伪元素也可以实现),利用一层透明的 试着将光标靠近 嗯哼,这里我们将 transparent 用于 background,通常可以制造出各种各样的背景图像。这里举个简单的例子,利用透明渐变,实现一个切角图形: 通过 利用 transparent 与渐变的配合还能生成各种各样美妙的图形,可以戳下面看看: transparent 用于文本 color配合 box-shadow ,在文本上运用 transparent,可以营造出一种文字发光的效果,鼠标 hover 下面的文字试试: transparent 其实还有很多作用,暂且说这么多,欢迎继续讨论。 currentColor很多人都不知道还有 可以简单的理解为当前 CSS 标签所继承或设定的文本颜色,即 color 的值。 那它具体可以怎么用呢,根据我们书写 CSS 的原则 DRY(Don’t Repeat Yourself),使用这个关键字可以很好的减少改动 CSS 时的工作量。看个例子: 上面的例子,我只在 color 里写了颜色,在 border 和 box-shadow 中使用了 currentColor 属性。可以看到,这两个属性的颜色值都被设置为了 color 中设置的值,当我们需要用到这种同色表现的时候,使用 currentColor 更佳,方便日后改动。 但是,currentColor 是 CSS3 新增的,在老版本浏览器下是无法识别的。那么是否在老版本浏览器下就无法使用了呢,也不尽然,还是有一些特例的,看看下面这个: 可以看到,上面我只在 color 里写了颜色,border 的值为 当然 border 和 box-shadow 是特例,不是所有需要填写颜色值的属性不填写都会默认继承文本的值的。 那么元素中将会得到或者继承元素 color 值有哪些呢:
颜色表示模型的话,简单了解一下。 rgb 表示颜色的红-绿-蓝(red-green-blue (RGB))模式,rgba 多一个 a ,表示其透明度,取值为 0-1。 rgb 的颜色模型通常由一个立方体表示: 我们知道,通常我们使用的时候,不使用缩写的话,使用十六进制符号 #RRGGBB, 在 #RRGGBB 中,RR 表示 红色的深浅,GG 表示绿色的深浅,BB 表示蓝色的深浅。取值都是从 00 - FF,值越大表示该颜色越深。 如果采用 rgb(RR,GG,BB) 的写法,RR 取值 0~255 或者百分比,255 相当于 100%,和十六进制符号里的 F 或 FF 。 了解了 rgb 的含义的话,记住常用的颜色值其实是很容易的,像上面说的 RR 表示红色的深浅,那么理解记忆 再记住颜色的叠加原理: 我们就可以轻松的记住, 除了 rgb 表示法,颜色也可以使用 hsl 表示。hsl被定义为色相-饱和度-明度(Hue-saturation-lightness),hsla 多一个 a ,表示其透明度,取值为 0-1。。 hsl 相比 rgb 的优点是更加直观:你可以估算你想要的颜色,然后微调。它也更易于创建相称的颜色集合。 hsl 的颜色模型通常由一个圆柱体表示:
其实对于我们前端而言,使用 hsl 表示颜色会更方便。 以一个按钮为例,我们用 hsl 颜色表示法表示按钮 normal 状态下的背景色值,我们希望 hover 的时候,背景色暗一点,而 active 的时候背景色亮一点。如果采用 rgb 表示法,我们需要 3 个完全不一样的颜色,而采用 hsl 表示法,我们只需要在 hover 和 active 的时候去改的 颜色值的 l (即Light,亮度)值即可。运用上面出现过的一个例子再看看: 这里 这里有个小 tips 可能有些人不知道,在开发阶段我们只有一个 rgb 值,但是希望转换成 hsl 值,使用 chrome 开发者工具可以很便捷的做到,如下图,我们只需要选中我们想转换的颜色值,按住键盘左 到此本文结束,比较基础,希望有人看。如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。 如果本文对你有帮助,请点下推荐,写文章不容易。 |
|