Less提供了很多实用的函数专门用于定义和操作色彩。本文将介绍如何使用这些函数来

帮助你控制色彩,创造合适的色彩搭配,并且保持网站的一致性和专业性

  •   color spinning

spin()函数允许我们调整一个基础色以便达到色带轮的任何一点。该函数非常有用,比如,当我们在

创建一个配色方案时就会很有用。你可能度过一些基础的色彩理论,比如需要色彩搭配和谐:比如互补色理论,组合等。有很多实用的工具帮助你达成目标,比如adobe color cc(kuler),利用该工具你就可以创建遵循上述理论的配色方案。但是我们如何实用Less创建自己的配色呢?

  • Complementary

我们将通过创建最简单的色彩结构:complementary(互补方案)来开始我们的介绍。这种方案中强调有两个在色带轮相对180度方向的两个色彩作为基色。

首先,我们需要定义一个base color作为引用second color的基点。选择任何一个你喜欢的颜色,比如blue-ish #3bafda

使用spin函数旋转180度,取得第二个颜色

@color-base       : #3bafdA;
@color-complement : spin(@color-base, 180);

这样就生成两个精确的,漂亮的色彩,他们互为补充。

  • Triadic

三元色方案是由三个颜色来组成的。我们通常通过对色轮分为三部分来取三色,调整spin函数的参数就可以达到目的。

// Triadic structure
@color-base : #3bafdA;
@triadic-secondary : spin(@color-base, -(360 / 3));
@triadic-tertiary : spin(@color-base, (360 / 3));

这将形成下面的配色:

  • colors mixing

另外一种创建配色的方法是混合两种基色形成新的颜色,这就好比我们在小学艺术课堂中学习到的:如果我们将红色和黄色混合将形成一个橙色。使用Less,我们可以使用mix()函数达到同样的目的。

div {
color: mix(red, yellow);
}

上面的例子将生成#ff8000

注意:避免混合相同光谱(spectrum)的颜色,比如基色#3bafda这个颜色居于蓝色光谱区域,你如果将该色和其对立的色彩混合将得到一个比较满意的混合色,比如mediumvioletred,或者lightseagreen。

@color-base      : #3bafdA;
@color-primary : mix(@color-base, mediumvioletred);
@color-secondary : mix(@color-base, lightseagreen);
@color-tertiary : mix(@color-base, mintcream);

通过这个方法将得到和基色和谐共存的色彩搭配

  • Color Shades and Saturation

shade定义了一个颜色亮和暗的程度(light and dark)在web设计中,一个色彩的shade通常用于辨别元素的不同状态。比如:一个button,当hover或者focus时,其颜色通常使用一个更亮或更暗的背景色。使用Less,我们可以使用darken(),lighten()函数轻易得到这个darker/lighter。

@color-base  : #3bafdA;
@color-hover : lighten(@color-primary, 10%); //#9c84c1
@color-focus : darken(@color-primary, 10%); //#684b94

另一方法,我们可以通过调整饱和度saturation而不是Lightness来实现类似代表不同状态的功能。饱和度定义了一个色彩的深度;更大的饱和度则色彩更亮丽,更低的饱和度则更灰暗。

上面的例子中,我们通过saturate(),desaturate()函数来实现类似的功能:

@color-base    : #3bafdA;
@color-hover : saturate(@color-primary, 10%);
@color-focus : desaturate(@color-primary, 10%);
@color-disable : lightness(desaturate(@color-primary, 100%), 30%);

更进一步我们通过调整上述通过饱和度调整后形成的色彩的亮度直到达到我们的要求。

我们通过上述调整饱和度及亮度得到的基色变种色系将会给我们定制button style时省去大量时间,当我们调整base color时,其他的几个颜色变种将自动变更。

  • Intelligent color output

Less允许我们的样式更加聪明。例如,我们可以让我们的样式自己思考并且决定在特定清形下使用什么颜色。假设我们在创建一个网页的模板,这是衣蛾基础的样式button,我们计划将来扩充为不同的颜色和样式。我们如何控制颜色的输出呢?我们一定不希望一个亮的文本色(color text)放在亮的背景色上,也不希望暗色的文本放到暗色背景上去。我们得确保文本和背景永远保持足够的对比度,这样才便于阅读,这里contrast()函数将有了用武之处。

@body-bg: #000;

body {
background-color: @body-bg;
color: contrast(@body-bg);
}

在上面的例子中,我们通过contrast()函数设置color。这将确保text的color和背景的颜色有足够的对比。如果背景为0,则前景返回fff,如果背景为fff,则前景就为0.如果你设置背景为一个其他的亮色,比如white,whitesmoke或者skyblue,那么text color就将返回0

我们也可以对亮和暗的对比度来定制颜色。下例中,将返回999或者777以替代fff,000

@body-bg     : #f0f0f0;
@color-light : #999;
@color-dark : #777; body {
background-color: @body-bg;
color: contrast(@body-bg, @color-dark, @color-light);
}

使用Less color函数创建专业网站配色方案的更多相关文章

  1. html+css学习笔记:实用LessColor函数搭建配色方案

    http://www.zcool.com.cn/article/ZMTUyNDc2.html 前言:用LESS CSS框架进行编码会简化代码结构,提高我们的工作效率,但是试验后你会发现,默认情况下,L ...

  2. VSCode自定义配色方案

    说明 本文更新于2017-07-24,使用VSCode 1.14.1,操作系统为Windows. 配置文件 "文件-首选项-颜色主题"即可显示所有可用的颜色主题,上下选择后Ente ...

  3. 转:Eclipse配色方案

    http://www.cnblogs.com/arci/archive/2011/01/23/1942646.html 参考配色方案: http://www.cs.cmu.edu/~maverick/ ...

  4. VisualStudio配色方案

    最近发现一个很神奇的网站,可以方便的为VisualStudio配色:Studio Styles - Visual Studio color schemes 可以下载一份自己喜欢的配色方案 如果还不满意 ...

  5. 好看的IDE配色方案让代码看起来不再那么凶猛了

    写这篇小文的初衷是,笔者是原教旨主义者,一直坚持用IDE默认的配色方案.另外也觉得网上黑色系的配色方案太过bling bling了.但今天尝试用新的配色方案后,兴奋地发现对代码的好感度大幅提升. 嗯, ...

  6. vim配色方案设置(更换vim配色方案)

    vim配色后,我的 设定底色为黑色,字体为绿色,然后将文件夹设为洋红,默认的注释换为淡黄:其实有一种简单的方法,就是设定为系统配置好的配色方案:转载文章如下:   ---------------- ( ...

  7. RColorBrewer包---R语言的配色方案

    // RColorBrewer包介绍 RColorBrewer包提供了3套很好的配色方案.用户只需要指定配色方案的名称,就可以用包中的brewer.pal()函数生成颜色.这3套配色方案包括: 连续型 ...

  8. mac下使用Solarized配色方案

    Solarized配色方案不用多介绍了.具体点击这里:http://ethanschoonover.com/solarized 我们首先搞定macvim 你需要下载solarized.vim配色文件, ...

  9. SecureCRT配色方案

    SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件.作为一款经常使用的终端软件,一个好的配色方案可以大大的提高学 ...

随机推荐

  1. centos 安装软件

    1)一种是软件的源代码,您需要自己动手编译它.这种软件安装包通常是用gzip压缩过的tar包(后缀为.tar.gz).2)另一种是软件的可执行程序,你只要安装它就可以了.这种软件安装包通常被是一个RP ...

  2. 数据库表 copy

    db1为原数据库,db2为要导出到的数据库,fromtable 是要导出的表名 1.方法一:登录导出到的数据库,执行create table fromtable select * from db1.f ...

  3. hdu 4155 The Game of 31 博弈论

    给出序列,在剩下的卡中选择,谁先拿到大于31的输,搜一下就可以了! 代码如下: #include<cstdio> #include<cstring> ]; ],sum; boo ...

  4. iOS复杂动画之抽丝剥茧(Objective-C & Swift)

    一.前言 随着开发者的增多和时间的累积,AppStore已经有非常多的应用了,每年都有很多新的APP产生.但是我们手机上留存的应用有限,所以如何吸引用户,成为产品设计的一项重要内容.其中炫酷的动画效果 ...

  5. getElementByClassName封装函数用法

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  6. MakeObjectInstance的简单理解

    昨天把MakeObjectInstance的代码详细研究了一下,当然还有众多前辈高手们的帮助,终于大致搞明白了是怎么回事.但是给我顿悟的,不是高手们的帖子,而是来自我自己的一个疑惑,TObjectIn ...

  7. springMVC找不到JS等文件

     应用springMVC时 JS等文件找不到错误 应用springMVC时如果配置URL映射时如下配置 <servlet>        <servlet-name>appSe ...

  8. Heap和Heapify

    最近复习数据结构,又回去再看塞神的课件,看到PriorityQueue的实现.自己也根据塞神的代码写一写. 下面使用Binary Heap实现了一个简单的 Max-oriented PriorityQ ...

  9. css 射线实现方法

    一个斜的四边形 .top_ad_out::before { content: ''; position: absolute; z-index: -1; width: 336px; height: 25 ...

  10. Java 数据结构之Stack

    Stack类表示后进先出(LIFO)的对象堆栈.栈是一种非常常见的数据结构.Stack继承Vector,并对其进行了扩展. 用法: 1.只有一个构造函数: public Stack() {} 2.创建 ...