知识库



按索引浏览词汇表

特殊 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 全部

页:  1  2  3  (下一个)
  全部

A

ASCII 码对照表详解

ASCII 码对照表详解

计算机是美国发明的,当初并没有考虑后来需要增加那么多字符,比如中国的汉字,那么早期的美国常用字符,用 1 个字节的前 7 个位来表示,已经足够了,这样就产生了ASCII 码,后来就不够用了,第 8 位也被扩展使用了,就增加了一些字符,这也就多了扩展的 ASCII 码。

ASCII 码和扩展的 ASCII 码

ASCII 码即美国标准信息交换码 (American Standard Code for Information Interchange)

是基于罗马字母表的一套电脑编码系统。 一种使用 7 个或 8 个二进制位进行编码的方案,最多可以给 256 个字符(包括字母、数字、标点符号、控制字符及其他符号)分配或指定数值。

名称的由来

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于罗马字母表的一套电脑编码系统。

特点

它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准 ISO 646。

包含内容

控制字符:回车键、退格、换行键等。
可显示字符:英文大小写字符、阿拉伯数字和西文符号

技术特征

7 位(bits)表示一个字符,共 128 字符

ASCII 扩展字符集

7 位编码的字符集只能支持 128 个字符,为了表示更多的欧洲常用字符,对 ASCII 进行了扩展,ASCII 扩展字符集使用 8 位(bits)表示一个字符,共 256 字符。

ASCII 扩展字符集比 ASCII 字符集扩充出来的符号包括表格符号、计算符号、希腊字母和特殊的拉丁符号。

注意:在计算机的存储单元中,一个 ASCII 码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。

  • 奇校验规定:正确的代码一个字节中 1 的个数必须是奇数,若非奇数,则在最高位 b7 添 1
  • 偶校验规定:正确的代码一个字节中 1 的个数必须是偶数,若非偶数,则在最高位 b7 添 1

计算机只能理解数字,因此一个 ASCII 码就是一个字符, 如 a 或 @ 的数字表现形式,也可表示某种动作。ASCII 码出现较早,非打印字符的使用也不再出于最初的目的。以下是ASCII码字符表,其中包括对前 32 个非打印字符的描述。当初设计 ASCII 码实际上是为了使用电传打字机,因此这些描述不好理解。如果有人说想要你的成绩单,但要用 ASCII 格式,这就意味着他们只想要不带诸如加粗,下划线等格式的纯文本,也就是计算能理解的最原始的格式。这样就比较容易输入计算机进行处理。记事本可以创建 ASCII 码文本,在 Word 中你也可以把文件保存为纯文本。

ASCII码字符表结构组成

第 0~32 号及第 127 号(共 34 个)是控制字符或通讯专用字符,如控制符 LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等,通讯专用字符 SOH(文头)、EOT(文尾)、ACK(确认)等。

第 33~126 号(共94个)是字符,其中第 48~57 号为 0~9 十个阿拉伯数字,65~90 号为 26 个大写英文字母,97~122 号为 26 个小写英文字母,其余为一些标点符号、运算符号等。

第一部分 ASCII 非打印控制字符表

ASCII 表上的数字 0–31 分配给了控制字符,用于控制像打印机等一些外围设备。例如 12 代表换页/新页功能。此命令指示打印机跳到下一页的开头。(参详 ASCII 码表中 0-31 )

ASCII 码表中 0-31


第二部分 ASCII 打印字符

数字 32–126 分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现。数字 127 代表 DELETE 命令。(参详 ASCII 码表中 32-127)

ASCII 码表中 32-127


第三部分 扩展 ASCII 打印字符

扩展的 ASCII 字符满足了对更多字符的需求。扩展的 ASCII 包含 ASCII 中已有的 128 个字符(数字 0–32 显示在下图中),又增加了 128 个字符,总共是 256 个。即使有了这些更多的字符,许多语言还是包含无法压缩到 256 个字符中的符号。因此出现了一些 ASCII 的变体来囊括地区性字符和符号。例如许多软件程序把 ASCII 表(又称作 ISO8859-1 )用于北美、西欧、澳大利亚和非洲的语言。





C

CSS之display

1.解释一下display的几个常用的属性值,inline , block, inline-block, none

  • inline(行内元素):
  1. 使元素变成行内元素,拥有行内元素的特性,即可以与其他行内元素共享一行,不会独占一行.
  2. 不能更改元素的height,width的值,大小由内容撑开.
  3. 可以使用padding上下左右都有效,margin只有left和right产生边距效果,但是top和bottom就不行.
  • block(块级元素):
  1. 使元素变成块级元素,独占一行,在不设置自己的宽度的情况下,块级元素会默认填满父级元素的宽度.
  2. 能够改变元素的height,width的值.
  3. 可以设置padding,margin的各个属性值,top,left,bottom,right都能够产生边距效果.
  • inline-block(融合行内于块级):
  1. 结合了inline与block的一些特点,结合了上述inline的第1个特点和block的第2,3个特点.
  2. 用通俗的话讲,就是不独占一行的块级元素。如图:

图二:

两个图可以看出,display:inline-block后块级元素能够在同一行显示,有人这说不就像浮动一样吗。没错,display:inline-block的效果几乎和浮动一样,但也有不同,接下来讲一下inline-block和浮动的比较。

2.inline-block布局 vs 浮动布局

a.不同之处:对元素设置display:inline-block ,元素不会脱离文本流,而float就会使得元素脱离文本流,且还有父元素高度坍塌的效果

b.相同之处:能在某程度上达到一样的效果

  我们先来看看这两种布局:
图一:display:inline-block

图二:对两个孩子使用float:left,我在上一篇浮动布局讲过,这是父元素会高度坍塌,所以要闭合浮动,对box使用overflow:hidden,效果如下:

>>乍一看两个都能做到几乎相同的效果,(仔细看看display:inline-block中有间隙问题,这个留到下面再讲)

  c.浮动布局不太好的地方:参差不齐的现象,我们看一个效果:
图三:

图四:

>>从图3,4可以看出浮动的局限性在于,若要元素排满一行,换行后还要整齐排列,就要子元素的高度一致才行,不然就会出现图三的效果,而inline-block就不会。

3.inline-block存在的小问题:

  a.上面可以看到用了display:inline-block后,存在间隙问题,间隙为4像素,这个问题产生的原因是换行引起的,因为我们写标签时通常会在标签结束符后顺手打个回车,而回车会产生回车符,回车符相当于空白符,通常情况下,多个连续的空白符会合并成一个空白符,而产生“空白间隙”的真正原因就是这个让我们并不怎么注意的空白符。

  b.去除空隙的方法:
  1.对父元素添加,{font-size:0},即将字体大小设为0,那么那个空白符也变成0px,从而消除空隙
  现在这种方法已经可以兼容各种浏览器,以前chrome浏览器是不兼容的
图一:

c.浏览器兼容性:ie6/7是不兼容 display:inline-block的所以要额外处理一下:

  在ie6/7下:

  对于行内元素直接使用{dislplay:inline-block;}

  对于块级元素:需添加{display:inline;zoom:1;}

4.总结:

  display:inline-block的布局方式和浮动的布局方式,究竟使用哪个,我觉得应该根据实际情况来决定的:
  a.对于横向排列东西来说,我更倾向与使用inline-block来布局,因为这样清晰,也不用再像浮动那样清除浮动,害怕布局混乱等等。
  b.对于浮动布局就用于需要文字环绕的时候,毕竟这才是浮动真正的用武之地,水平排列的是就交给inline-block了。



H

HSB颜色模式

HSB又称HSV,表示一种颜色模式:在HSB模式中,H(hues)表示色相,S(saturation)表示饱和度,B(brightness)表示亮度。

HSB是色相、饱和度、明度的相应英文首字母缩写。

平常表述颜色时,一般用的就是HSB模式,因为人眼看到的就是色相、饱和度、明度,HSB模式对应的媒介是人眼。

1、色相(H,hue)在0~360°的标准色轮上,色相是按位置度量的。在通常的使用中,色相是由颜色名称标识的,比如红、绿或橙色。黑色和白色无色相。

红:0度或者360度
黄:300度
绿:240度
青:180度
蓝:120度
洋红:60度




2、饱和度(S,saturation):表示色彩的纯度,饱和度为0时为灰色。白、黑和其他灰色色彩都没有饱和度的。饱和度高,色彩鲜艳,在最大饱和度时,每一色相具有最纯的色光。取值范围在0-100之间。



3、亮度(B,brightness或V,value):是色彩的明亮度,表示色彩的明暗程度。为0时即为黑色。最大亮度是色彩最鲜明的状态。取值范围在0-100之间。





HTML Colors


颜色名列表

本页提供了被大多数浏览器支持的颜色名。

提示:W3C 的 HTML 4.0 标准仅支持 16 种颜色名,它们是:aqua、black、blue、fuchsia、gray、green、lime、maroon、navy、olive、purple、red、silver、teal、white、yellow。

如果使用其它颜色的话,就应该使用十六进制的颜色值


颜色名 十六进制颜色值 颜色
AliceBlue #F0F8FF  
AntiqueWhite #FAEBD7  
Aqua #00FFFF  
Aquamarine #7FFFD4  
Azure #F0FFFF  
Beige #F5F5DC  
Bisque #FFE4C4  
Black #000000  
BlanchedAlmond #FFEBCD  
Blue #0000FF  
BlueViolet #8A2BE2  
Brown #A52A2A  
BurlyWood #DEB887  
CadetBlue #5F9EA0  
Chartreuse #7FFF00  
Chocolate #D2691E  
Coral #FF7F50  
CornflowerBlue #6495ED  
Cornsilk #FFF8DC  
Crimson #DC143C  
Cyan #00FFFF  
DarkBlue #00008B  
DarkCyan #008B8B  
DarkGoldenRod #B8860B  
DarkGray #A9A9A9  
DarkGreen #006400  
DarkKhaki #BDB76B  
DarkMagenta #8B008B  
DarkOliveGreen #556B2F  
Darkorange #FF8C00  
DarkOrchid #9932CC  
DarkRed #8B0000  
DarkSalmon #E9967A  
DarkSeaGreen #8FBC8F  
DarkSlateBlue #483D8B  
DarkSlateGray #2F4F4F  
DarkTurquoise #00CED1  
DarkViolet #9400D3  
DeepPink #FF1493  
DeepSkyBlue #00BFFF  
DimGray #696969  
DodgerBlue #1E90FF  
Feldspar #D19275  
FireBrick #B22222  
FloralWhite #FFFAF0  
ForestGreen #228B22  
Fuchsia #FF00FF  
Gainsboro #DCDCDC  
GhostWhite #F8F8FF  
Gold #FFD700  
GoldenRod #DAA520  
Gray #808080  
Green #008000  
GreenYellow #ADFF2F  
HoneyDew #F0FFF0  
HotPink #FF69B4  
IndianRed #CD5C5C  
Indigo #4B0082  
Ivory #FFFFF0  
Khaki #F0E68C  
Lavender #E6E6FA  
LavenderBlush #FFF0F5  
LawnGreen #7CFC00  
LemonChiffon #FFFACD  
LightBlue #ADD8E6  
LightCoral #F08080  
LightCyan #E0FFFF  
LightGoldenRodYellow #FAFAD2  
LightGrey #D3D3D3  
LightGreen #90EE90  
LightPink #FFB6C1  
LightSalmon #FFA07A  
LightSeaGreen #20B2AA  
LightSkyBlue #87CEFA  
LightSlateBlue #8470FF  
LightSlateGray #778899  
LightSteelBlue #B0C4DE  
LightYellow #FFFFE0  
Lime #00FF00  
LimeGreen #32CD32  
Linen #FAF0E6  
Magenta #FF00FF  
Maroon #800000  
MediumAquaMarine #66CDAA  
MediumBlue #0000CD  
MediumOrchid #BA55D3  
MediumPurple #9370D8  
MediumSeaGreen #3CB371  
MediumSlateBlue #7B68EE  
MediumSpringGreen #00FA9A  
MediumTurquoise #48D1CC  
MediumVioletRed #C71585  
MidnightBlue #191970  
MintCream #F5FFFA  
MistyRose #FFE4E1  
Moccasin #FFE4B5  
NavajoWhite #FFDEAD  
Navy #000080  
OldLace #FDF5E6  
Olive #808000  
OliveDrab #6B8E23  
Orange #FFA500  
OrangeRed #FF4500  
Orchid #DA70D6  
PaleGoldenRod #EEE8AA  
PaleGreen #98FB98  
PaleTurquoise #AFEEEE  
PaleVioletRed #D87093  
PapayaWhip #FFEFD5  
PeachPuff #FFDAB9  
Peru #CD853F  
Pink #FFC0CB  
Plum #DDA0DD  
PowderBlue #B0E0E6  
Purple #800080  
Red #FF0000  
RosyBrown #BC8F8F  
RoyalBlue #4169E1  
SaddleBrown #8B4513  
Salmon #FA8072  
SandyBrown #F4A460  
SeaGreen #2E8B57  
SeaShell #FFF5EE  
Sienna #A0522D  
Silver #C0C0C0  
SkyBlue #87CEEB  
SlateBlue #6A5ACD  
SlateGray #708090  
Snow #FFFAFA  
SpringGreen #00FF7F  
SteelBlue #4682B4  
Tan #D2B48C  
Teal #008080  
Thistle #D8BFD8  
Tomato #FF6347  
Turquoise #40E0D0  
Violet #EE82EE  
VioletRed #D02090  
Wheat #F5DEB3  
White #FFFFFF  
WhiteSmoke #F5F5F5  
Yellow #FFFF00  
YellowGreen #9ACD32  

HTML图形字符

HTML图形特殊字符集 

使用方法:
这些字符属于unicode字符集,所以,你的文档需要声明为UTF-8;
下面符号列表的后面有两列编号,它们并不太一样,第一列是用于HTML的,你需要在前面加上&#符号; 例如:&#8672
第二列可以用于CSS文件中,但是需要用反斜杠\转义;  例如:\8672
第二列也可以用于JavaScript,和CSS用法一样,不过要用\u来转义。
需要注意的是:


有的字符在不同的浏览器下表现不太一样;比如小雪人 ☃ 在Firefox和Chrome下不太一样,钻石 ◆ 在IE下要比Chrome下要大一点儿;
有的字符在某个浏览器下不会显示;当然原因并不是字符代码的问题,而是浏览器的bug,比如,–在Chrome下。。。
但是,98%的字符都能在所有浏览器下正常显示的,不过如果你真的要使用,最好仔细在各个浏览器下验证一番。
经测试这些字符在Android/iOS等智能终端的识别度比较差,所以,使用的时候要特别注意移动浏览器~~
各种箭头

⇠ 8672 21E0
⇢ 8674 21E2
⇡ 8673 21E1
⇣ 8675 21E3
↞ 8606 219E
↠ 8608 21A0
↟ 8607 219F
↡ 8609 21A1
← 8592 2190
→ 8594 2192
↑ 8593 2191
↓ 8595 2193
↔ 8596 2194
↕ 8597 2195
⇄ 8644 21C4
⇅ 8645 21C5
↢ 8610 21A2
↣ 8611 21A3
⇞ 8670 21DE
⇟ 8671 21DF
↫ 8619 21AB
↬ 8620 21AC
⇜ 8668 21DC
⇝ 8669 21DD
↚ 8602 219A
↛ 8603 219B
↮ 8622 21AE
↭ 8621 21AD
形状
⇦ 8678 21E6
⇨ 8680 21E8
⇧ 8679 21E7
⇩ 8681 21E9
↷ 8631 21B7
↶ 8630 21B6
↻ 8635 21BB
↺ 8634 21BA
⟳ 10227 27F3
⟲ 10226 27F2
⟰ 10224 27F0
⟱ 10225 27F1
↵ 8629 21B5
↯ 8623 21AF
⇵ 8693 21F5
向右的箭头
➔ 10132 2794
➙ 10137 2799
➨ 10152 27A8
➲ 10162 27B2
➜ 10140 279C
➞ 10142 279E
➟ 10143 279F
➠ 10144 27A0
➤ 10148 27A4
➥ 10149 27A5
➦ 10150 27A6
➧ 10151 27A7
➵ 10165 27B5
➸ 10168 27B8
➼ 10172 27BC
➽ 10173 27BD
➺ 10170 27BA
➳ 10163 27B3
➾ 10174 27BE
基本形状
▲ 9650 25B2
► 9658 25BA
▼ 9660 25BC
◄ 9668 25C4
❤ 10084 2764
✈ 9992 2708
★ 9733 2605
✦ 10022 2726
☀ 9728 2600
◆ 9670 25C6
◈ 9672 25C8
▣ 9635 25A3
标点
« 171 00AB
» 187 00BB
‹ 139 008B
› 155 009B
“ 8220 201C
” 8221 201D
‘ 8216 2018
’ 8217 2019
• 8226 2022
◦ 9702 25E6
¡ 161 00A1
¿ 191 00BF
℅ 8453 2105
№ 8470 2116
& 38 0026
@ 64 0040
℞ 8478 211E
℃ 8451 2103
℉ 8457 2109
° 176 00B0
| 124 007C
¦ 166 00A6
– 8211 2013
— 8212 2014
… 8230 2026
¶ 182 00B6
∼ 8764 223C
≠ 8800 2260
法律符号
® 174 00AE
© 169 00A9
℗ 8471 2117
™ 153 0099
℠ 8480 2120
货币
$ 36 0024
¢ 162 00A2
£ 163 00A3
¤ 164 00A4
€ 8364 20AC
¥ 165 00A5
₱ 8369 20B1
₹ 8377 20B9
数学
½ 189 00BD
¼ 188 00BC
¾ 190 00BE
⅓ 8531 2153
⅔ 8532 2154
⅛ 8539 215B
⅜ 8540 215C
⅝ 8541 215D
‰ 8240 2030
% 37 0025
< 60 003C
> 62 003E
音乐符号
♩ 9833 2669
♪ 9834 266A
♫ 9835 266B
♬ 9836 266C
♭ 9837 266D
♯ 9839 266F
对号、错号
160 00A0
☐ 9744 2610
☑ 9745 2611
☒ 9746 2612
✓ 10003 2713
✔ 10004 2714
✕ 10005 10005
✖ 10006 2716
✗ 10007 2717
✘ 10008 2718
十字
☨ 9768 2628
☩ 9769 2629
✝ 10013 271D
✞ 10014 271E
✟ 10015 271F
✠ 10016 2720
✚ 10010 271A
† 8224 2020
✢ 10018 2722
✤ 10020 2724
✣ 10019 2723
✥ 10021 2725
星星、星号、雪花
★ 9733 2605
✭ 10029 272D
✮ 10030 272E
☆ 9734 2606
✪ 10026 272A
✡ 10017 2721
✯ 10031 272F
✵ 10037 2735
✶ 10038 2736
✸ 10040 2738
✹ 10041 2739
✺ 10042 273A
✱ 10033 2731
✲ 10034 2732
✴ 10036 2734
✳ 10035 2733
✻ 10043 273B
✽ 10045 273D
❋ 10059 274B
❆ 10054 2746
❄ 10052 2744
❅ 10053 2745
杂项
☻ 9787 263B
☺ 9786 263A
☹ 9785 2639
✉ 9993 2709
☎ 9742 260E
☏ 9743 260F
✆ 9990 2706
� 65533 FFFD
☁ 9729 2601
☂ 9730 2602
❄ 10052 2744
☃ 9731 2603
❈ 10056 2748
✿ 10047 273F
❀ 10048 2740
❁ 10049 2741
☘ 9752 2618
❦ 10086 2766
☕ 9749 9749
❂ 10050 2742
☥ 9765 2625
☮ 9774 262E
☯ 9775 262F
☪ 9770 262A
☤ 9764 2624
✄ 9988 2704
✂ 9986 2702
☸ 9784 2638
⚓ 9875 2693
☣ 9763 2623
⚠ 9888 26A0
⚡ 9889 26A1
☢ 9762 2622
♻ 9851 267B
♿ 9855 267F
☠ 9760 2620
手型、铅笔、笔
☜ 9756 261C
☞ 9758 261E
☝ 9757 261D
☟ 9759 261F
✌ 9996 270C
✍ 9997 270D
✎ 9998 270E
✐ 10000 2710
✏ 9999 270F
✑ 10001 2711
✒ 10002 2712
天空、植物
☽ 9789 263D
☾ 9790 263E
♂ 9794 2642
♀ 9792 2640
☿ 9791 263F
♁ 9793 2641
♃ 9795 2643
♄ 9796 2644
♅ 9797 2645
♆ 9798 2646
♇ 9799 2647
星座
♈ 9800 2648
♉ 9801 2649
♊ 9802 264A
♋ 9803 264B
♌ 9804 264C
♍ 9805 264D
♎ 9806 264E
♏ 9807 264F
♑ 9809 2651
♒ 9810 2652
♓ 9811 2653
象棋,扑克牌
♚ 9818 265A
♛ 9819 265B
♜ 9820 265C
♝ 9821 265D
♞ 9822 265E
♟ 9823 265F
♔ 9812 2654
♕ 9813 2655
♖ 9814 2656
♗ 9815 2657
♘ 9816 2658
♙ 9817 2659
♠ 9824 2660
♣ 9827 2663
♥ 9829 2665
♦ 9830 2666
♤ 9828 2664
♧ 9831 2667
♡ 9825 2661
♢ 9826 2662
希腊字母
Α 913 0391
Β 914 0392
Γ 915 0393
Δ 916 0394
Ε 917 0395
Ζ 918 0396
Η 919 0397
Θ 920 0398
Ι 921 0399
Κ 922 039A
Λ 923 039B
Μ 924 039C
Ν 925 039D
Ξ 926 039E
Ο 927 039F
Π 928 03A0
Ρ 929 03A1
Σ 931 03A3
Τ 932 03A4
Υ 933 03A5
Φ 934 03A6
Χ 935 03A7
Ψ 936 03A8
Ω 937 03A9



White Circled Number

⓪ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ ㉑ ㉒ ㉓ ㉔ ㉕ ㉖ ㉗ ㉘ ㉙ ㉚ ㉛ ㉜ ㉝ ㉞ ㉟ ㊱ ㊲ ㊳ ㊴ ㊵ ㊶ ㊷ ㊸ ㊹ ㊺ ㊻ ㊼ ㊽ ㊾ ㊿

These are specifically sans-serif:

🄋 ➀ ➁ ➂ ➃ ➄ ➅ ➆ ➇ ➈ ➉

Black Circled Number

⓿ ❶ ❷ ❸ ❹ ❺ ❻ ❼ ❽ ❾ ❿ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴

These are specifically sans-serif:

🄌 ➊ ➋ ➌ ➍ ➎ ➏ ➐ ➑ ➒ ➓

Circled Numbers on Black Square

㉈ ㉉ ㉊ ㉋ ㉌ ㉍ ㉎ ㉏

Double Circled Number

⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾

Number with Period

🄀 ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛

Parenthesized

⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇

Chinese/Japanese/Korean Circled Number

㊀ ㊁ ㊂ ㊃ ㊄ ㊅ ㊆ ㊇ ㊈ ㊉

Parenthesized Letters

🄐 🄑 🄒 🄓 🄔 🄕 🄖 🄗 🄘 🄙 🄚 🄛 🄜 🄝 🄞 🄟 🄠 🄡 🄢 🄣 🄤 🄥 🄦 🄧 🄨 🄩

⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵

White Circled Letters

Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ

ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ

The Ⓜ also means Metro, a sign for subway.

Black Circled Letters

🅐 🅑 🅒 🅓 🅔 🅕 🅖 🅗 🅘 🅙 🅚 🅛 🅜 🅝 🅞 🅟 🅠 🅡 🅢 🅣 🅤 🅥 🅦 🅧 🅨 🅩



HTML的样式管理

HTML的样式管理


HTML是网页开发的基础,而样式设置则是让网页更加美观和易读的关键。本文将介绍一些HTML样式设置的技巧,帮助您打造出更加精美的网页。

1. 使用内联样式

内联样式是指在HTML标签中直接设置样式,p style="color: red;">这是一段红色的文字</p>

这种方式虽然不太方便,但是可以快速实现简单的样式设置。

2. 使用样式表

样式表是一种更加灵活的样式设置方式。我们可以在HTML文档中引入一个样式表,然后在样式表中设置各种样式。head>k rel="stylesheet" type="text/css" href="style.css">

</head>

在style.css文件中可以设置各种样式:

color: red;

这样就可以使所有的段落文字变成红色了。

3. 使用类和ID选择器

类和ID选择器可以让我们更加精细地控制样式。p class="highlight">这是一段高亮的文字</p>

在样式表中可以这样设置:

.highlight {d-color: yellow;

这样就可以使.highlight类的元素背景色变成黄色了。

4. 使用CSS框模型

CSS框模型是指通过设置元素的外边距、内边距和边框来控制元素的大小和位置。例如:

gargin: 10px;">

这是一个带有边框、内边距和外边距的元素

</div>

这样就可以创建一个大小为200x100像素,带有1像素黑色边框、10像素内边距和外边距的元素。

5. 使用响应式设计

响应式设计是指根据设备屏幕大小和分辨率来自动调整网页布局和样式。例如:

ediadax-width: 600px) {

body {t-size: 12px;

这样就可以在屏幕宽度小于600像素的设备上自动将字体大小调整为12像素。

HTML样式设置是网页设计中非常重要的一部分。通过使用内联样式、样式表、类和ID选择器、CSS框模型和响应式设计等技巧,我们可以打造出更加精美和易读的网页。



M

Markdown语法

Markdown 是一种轻量级标记语言,它用简洁的语法代替排版,使我们专心于码字。它的目标是实现易读易写,成为一种适用于网络的书写语言。同时,Markdown支持嵌入html标签。

<u>注意:Markdown使用#+*等符号来标记, 符号后面必须跟上 至少1个 空格才有效!</u>

Markdown的常用语法

标题

Markdown 标题支持两种形式:

1、用#标记

标题开头 加上1~6个#,依次代表一级标题、二级标题....六级标题

# 一级标题
## 二级标题
### 三级标题
##### 四级标题
###### 五级标题
###### 六级标题

2、用=-标记

标题底下 加上任意个=代表一级标题,-代表二级标题

一级标题
======

二级标题
----------

效果如下:

一级标题

二级标题

三级标题

四级标题
五级标题
六级标题

列表

Markdown 支持有序列表和无序列表。

无序列表使用-+*作为列表标记:

- Red
- Green
- Blue

* Red
* Green
* Blue

+ Red
+ Green
+ Blue

效果如下:

  • Red
  • Green
  • Blue

有序列表则使用数字加英文句点.来表示:

1. Red
2. Green
3. Blue

效果如下:

  1. Red
  2. Green
  3. Blue

引用

引用以>来表示,引用中支持多级引用、标题、列表、代码块、分割线等常规语法。

常见的引用写法:

> 这是一段引用    //在`>`后面有 1 个空格
> 
>     这是引用的代码块形式    //在`>`后面有 5 个空格
>     
> 代码例子:
>   
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

> 一级引用
> > 二级引用
> > > 三级引用

> #### 这是一个四级标题
> 
> 1. 这是第一行列表项
> 2. 这是第二行列表项

效果如下:

这是一段引用

这是引用的代码块形式    //在`>`后面有 5 个空格

代码例子:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

一级引用

二级引用

三级引用

这是一个四级标题

  1. 这是第一行列表项
  2. 这是第二行列表项

以下是分割线


强调

两个*-代表加粗,一个*-代表斜体,~~代表删除。

**加粗文本** 或者 __加粗文本__

*斜体文本*  或者_斜体文本_

~~删除文本~~

效果如下:

加粗文本 或者 加粗文本

斜体文本 或者 斜体文本

删除文本


图片与链接

图片与链接的语法很像,区别在一个 ! 号。二者格式:

图片:![]()    ![图片文本(可忽略)](图片地址)

链接:[]()     [链接文本](链接地址)

链接又分为行内式参考式自动链接

这是行内式链接:[ConnorLin's Blog](http://connorlin.github.io)。

这是参考式链接:[ConnorLin's Blog][url],其中url为链接标记,可置于文中任意位置。

[url]: http://connorlin.github.io/ "ConnorLin's Blog"

链接标记格式为:[链接标记文本]:  链接地址  链接title(可忽略)

这是自动链接:直接使用`<>`括起来<http://connorlin.github.io>

这是图片:![][avatar]

[avatar]: 

效果如下:

这是行内式链接:ConnorLin's Blog

这是参考式链接:ConnorLin's Blog,其中url为链接标记,可置于文中任意位置。

这是自动链接:直接使用<>括起来http://connorlin.github.io

这是图片:
avatar.jpg

代码

代码分为行内代码代码块

  • 行内代码使用 `代码` 标识,可嵌入文字中

  • 代码块使用4个空格或

    标识
    
    

    这里是代码
    
    
    
  • 代码语法高亮在 后面加上空格和语言名称即可

     语言
    //注意语言前面有空格
    这里是代码

例如:

这是行内代码`onCreate(Bundle savedInstanceState)`的例子。

这是代码块和语法高亮:

 java
// 注意java前面有空格
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

效果如下:

这是行内代码onCreate(Bundle savedInstanceState)的例子。

这是代码块和语法高亮:

// 注意java前面有空格
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

表格

表格对齐格式

  • 居左::----
  • 居中::----:-----
  • 居右:----:

例子:

|标题|标题|标题|
|:---|:---:|---:|
|居左测试文本|居中测试文本|居右测试文本|
|居左测试文本1|居中测试文本2|居右测试文本3|
|居左测试文本11|居中测试文本22|居右测试文本33|
|居左测试文本111|居中测试文本222|居右测试文本333|

效果如下:

标题 标题 标题
居左测试文本 居中测试文本 居右测试文本
居左测试文本1 居中测试文本2 居右测试文本3
居左测试文本11 居中测试文本22 居右测试文本33
居左测试文本111 居中测试文本222 居右测试文本333

分隔线

在一行中用三个以上的*-_来建立一个分隔线,行内不能有其他东西。也可以在符号间插入空格。

***
---
___

* * *

效果均为一条分割线:



换行

在行尾添加两个空格加回车表示换行:

这是一行后面加两个空格  换行

效果如下:

这是一行后面加两个空格
换行


脚注(注解)

使用[^]来定义脚注:

这是一个脚注的例子[^1]

[^1]: 这里是脚注

效果如下:

这是一个脚注的例子[1]


常用弥补Markdown的Html标签

字体

<font face="微软雅黑" color="red" size="6">字体及字体颜色和大小</font>
<font color="#0000ff">字体颜色</font>

效果如下:

<font face="微软雅黑" color="red" size="6">字体及字体颜色和大小</font>
<font color="#0000ff">字体颜色</font>


换行

使用html标签`<br/>`<br/>换行

效果如下:

使用html标签<br/>
换行


文本对齐方式

<p align="left">居左文本</p>
<p align="center">居中文本</p>
<p align="right">居右文本</p>

效果如下:

<p align="left">居左文本</p>
<p align="center">居中文本</p>
<p align="right">居右文本</p>


下划线

<u>下划线文本</u>

效果如下:

<u>下划线文本</u>





P

PleaseJS Color Library

色轮模式参看🎞️Adobe Color

#PleaseJS

www.checkman.io/please

Please.js is a polite companion that wants to help you make your projects beautiful. It uses HSV color space to create random pleasing colors as well as color schemes based on a given color. It has two core functions and a bunch of little helpers for you to use.

Please.make_color();
//or
Please.make_scheme(
{
	h: 145,
	s: .7,
	v: .6
},
{
	scheme_type: 'triadic',
	format: 'rgb-string'
});

##Core

make_color

Please.make_color({options})

The make_color function by default will generate and return a random hex string using the golden ratio to ensure that the color will look nice on your screen.

You can also pass an options object to make_color and have it do a whole bunch of different things.

make_color options:

  • hue(0-360) By setting the hue, you determine the color.
  • saturation(0.0-1.0) By setting the saturation, you determine the distance from gray.
  • value(0.0-1.0) By setting the value, you determine the balance between black and white.
  • base_color('the name of an HTML color') Setting a base_color (e.g. 'pink') will create a random color within the HSV range of the chosen color. Please will recognize any of the 146 standard HTML colors, it has a very good memory. (参看143个颜色值
  • greyscale | grayscale(true/false) Setting either greyscale or grayscale (but we all know which one is correct) to true will cause all of the colors you generate to be within the grey or gray range. This is effectively the same as setting your saturation to 0.
  • golden(true/false) Setting golden to true randomizes your hue (overrides hue setting) and makes you a spectacular color based on the golden ratio. It's so good, it's the default. Make sure to turn it off if you want to have more control over your generated colors.
  • full_random(true/false) Setting full_random to true will make Please lose its mind. It will completely randomize the hue, saturation, and value of the colors it makes.
  • colors_returned(1-infinity) Setting colors_returned to higher than 1 will return an array full of the colors Please has made for you. If you set it to 1, you'll just get the one color! It makes a sort of sense if you think about it.
  • format('format string') Setting format string, will change the format of what make_color will return for you. The options are as follows (example is the color black):
    • 'hex' = '#000000'
    • 'rgb' = {r: 0, g: 0,b: 0}
    • 'rgb-string' = 'rgb(0,0,0)'
    • 'hsv' = {h: 0, s: 0, v: 0}

Here are the defaults for each option:

{
	hue: null,
	saturation: null,
	value: null,
	base_color: '',
	greyscale: false,
	grayscale: false,
	golden: true,
	full_random: false,
	colors_returned: 1,
	format: 'hex',
}

Here is an example of a fully random color call:

Please.make_color({
	golden: false,
	full_random: true
});

Here is an example that will produce 100 reds as RGB strings:

Please.make_color({
	golden: false,
	base_color: 'red',
	colors_returned: 100,
	format: 'rgb-string'
});

make_scheme

The second core function allows Please to make a color scheme for you.

Please.make_scheme(base_color,{options})

The make scheme function will return a series of colors based upon the color and options you feed it. The base_color must be in HSV color space and is an object in the format of

{
	h: ___,
	s: ___,
	v: ___
}

make_scheme options:

  • scheme_type (参看Adobe色轮
    • 'monochromatic' | 'mono' - Makes a 5 color scheme using your provided color, all the colors will be fairly similar to each other.
    • 'complementary' | 'complement' - Makes a two color scheme using your provided color, the 2nd color will be the complement of the 1st, such that mixing them will create a neutral grey.
    • 'split-complementary' | 'split-complement' | 'split' - Makes a three color scheme where the 2nd and 3rd colors are at a 30 degree split from the complement of the 1st color.
    • 'double-complementary' | 'double-complement' | 'double' - Makes a four color scheme where the 2nd color is the complement of the 1st, and the 3rd and 4th colors are complements of each other at a 30 degree ofset from the first pair
    • 'analogous' | 'ana' - Makes a six color scheme where each additional color is offset from the 1st by 20 degrees.
    • 'triadic' | 'triad' | 'tri' - Makes a 3 color scheme where the 2nd and 3rd color are equally spaced from the 1st.
  • format('format string') Setting format string, will change the format of what make scheme will return for you. The options are as follows (example is the color white):
    • 'hex' = '#ffffff'
    • 'rgb' = {r: 255, g: 255,b: 255}
    • 'rgb-string' = 'rgb(255,255,255)'
    • 'hsv' = {h: 0, s: 0, v: 1}

Here is an example of a complementary scheme in hex:

Please.make_scheme(
{
	h: 130,
	s: .7.
	v: .75
},
{
	scheme_type: 'complement',
	format: 'hex'
});

Here is an example that will produce a triadic scheme in rgb-strings:

Please.make_scheme(
{
	h: 130,
	s: .7.
	v: .75
},
{
	scheme_type: 'triadic',
	format: 'rgb-string'
});

Here are the defaults for each option:

{
	scheme_type: 'analogous',
	format: 'hex'
}

Other Methods

Please also has some bonus features. It allows you to convert freely between the color formats of RGB, HSV, and HEX.

RGB_to_HEX() HEX_to_RGB() RGB_to_HSV() HSV_to_RGB() HEX_to_HSV() HSV_to_HEX()

conversion from HSV or RGB expect an object with the properties

{
	r: 0-255,
	g: 0-255,
	b: 0-255
}

and

{
	h: 0-360,
	s: 0.0-1.0,
	v: 0,0-1.0
}

respectively, while converstions from HEX expect a string. Return formats are modeled the same way as the arguments.

In addition Please, can convert from an HTML color name into HEX, RGB, or HSV.

NAME_to_HEX()
NAME_to_RGB()
NAME_to_HSV()

These functions take a string and return a HEX string or an RGB/HSV object.

I hope you enjoy using Please. Have fun, and remember to say the magic word.



R

rgba颜色值

一、RGB

在CSS中能够使用颜色名来使用颜色,如果不使用颜色名,我们使用RGB值来描述颜色,R代表红色red,G代表绿色green,B代表蓝色blue。

每一种颜色的范围在0~255之间,或者也可以用0%~100%这种表示范围,因此 RGB 能够表示 255*255*255 种颜色

二、RGBA: 

RGBA的意思是(Red-Green-Blue-Alpha)它是在RGB上扩展包括了“alpha”通道,运行对颜色值设置透明度。

rgba(0,0,0,0)四个值,前三个值的范围是0~255之间的整数或0-100的百分数

前三个值,描述的是三原色,分别代表红绿蓝三原色在预期色彩中的量。最后一个则代表透明度,

范围在0-1之间。1表示不透明,0表示全透明,0.5为半透明。


示例:

rgba(255,255,255,0)则表示完全透明的白色;

rgba(0,0,0,1)则表示完全不透明的黑色;

rgba(0,0,0,0)则表示完全不透明的白色,也即是无色;

三、十六进制的 RGB

1.颜色有 0~f 十六个分档,分别代表0~255。且颜色是aabbcc形式的,可以简写

2.颜色用 # 开头



S

strudel

API Reference

This is the long list functions you can use! Remember that you don't need to remember all of those and that you can already make music with a small set of functions!

accelerate

A pattern of numbers that speed up (or slow down) samples while they play. Currently only supported by osc / superdirt.

s("sax").accelerate("<0 1 2 4 8 16>").slow(2).osc()

add

Assumes a pattern of numbers. Adds the given number to each item in the pattern.

// Here, the triad 0, 2, 4 is shifted by different amounts
"0 2 4".add("<0 3 4 0>").scale('C major').note()
// Without add, the equivalent would be:
// "<[0 2 4] [3 5 7] [4 6 8] [0 2 4]>".scale('C major').note()
// You can also use add with notes:
"c3 e3 g3".add("<0 5 7 0>").note()
// Behind the scenes, the notes are converted to midi numbers:
// "48 52 55".add("<0 5 7 0>").note()

addVoicings

Adds a new custom voicing dictionary.

addVoicings('cookie', {
  7: ['3M 7m 9M 12P 15P', '7m 10M 13M 16M 19P'],
  '^7': ['3M 6M 9M 12P 14M', '7M 10M 13M 16M 19P'],
  m7: ['8P 11P 14m 17m 19P', '5P 8P 11P 14m 17m'],
  m7b5: ['3m 5d 8P 11P 14m', '5d 8P 11P 14m 17m'],
  o7: ['3m 6M 9M 11A 15P'],
  '7alt': ['3M 7m 10m 13m 15P'],
  '7#11': ['7m 10m 13m 15P 17m'],
}, ['C3', 'C6'])
"<C^7 A7 Dm7 G7>".voicings('cookie').note()

almostAlways

Shorthand for .sometimesBy(0.9, fn)

s("hh*8").almostAlways(x=>x.speed("0.5"))

almostNever

Shorthand for .sometimesBy(0.1, fn)

s("hh*8").almostNever(x=>x.speed("0.5"))

always

Shorthand for .sometimesBy(1, fn) (always calls fn)

s("hh*8").always(x=>x.speed("0.5"))

amp

Like {@link gain}, but linear.

s("bd*8").amp(".1*2 .5 .1*2 .5 .1 .5").osc()

appBoth

When this method is called on a pattern of functions, it matches its haps with those in the given pattern of values. A new pattern is returned, with each matching value applied to the corresponding function.

In this _appBoth variant, where timespans of the function and value haps are not the same but do intersect, the resulting hap has a timespan of the intersection. This applies to both the part and the whole timespan.

appLeft

As with {@link Pattern#appBoth}, but the whole timespan is not the intersection, but the timespan from the function of patterns that this method is called on. In practice, this means that the pattern structure, including onsets, are preserved from the pattern of functions (often referred to as the left hand or inner pattern).

apply

Like layer, but with a single function:

"<c3 eb3 g3>".scale('C minor').apply(scaleTranspose("0,2,4")).note()

appRight

As with {@link Pattern#appLeft}, but whole timespans are instead taken from the pattern of values, i.e. structure is preserved from the right hand/outer pattern.

appWhole

Assumes 'this' is a pattern of functions, and given a function to resolve wholes, applies a given pattern of values to that pattern of functions.

arp

Selects indices in in stacked notes.

note("<[c,eb,g]!2 [c,f,ab] [d,f,ab]>")
.arp("0 [0,2] 1 [0,2]").slow(2)

arpWith

Selects indices in in stacked notes.

note("<[c,eb,g]!2 [c,f,ab] [d,f,ab]>")
.arpWith(haps => haps[2])

arrange

Allows to arrange multiple patterns together over multiple cycles. Takes a variable number of arrays with two elements specifying the number of cycles and the pattern to use.

arrange([4, "<c a f e>(3,8)"],[2, "<g a>(5,8)"]).note()

attack

Amplitude envelope attack time: Specifies how long it takes for the sound to reach its peak value, relative to the onset.

note("c3 e3").attack("<0 .1 .5>")

bank

Select the sound bank to use. To be used together with s. The bank name (+ "_") will be prepended to the value of s.

s("bd sd").bank('RolandTR909') // = s("RolandTR909_bd RolandTR909_sd")

begin

a pattern of numbers from 0 to 1. Skips the beginning of each sample, e.g. 0.25 to cut off the first quarter from each sample.

samples({ rave: 'rave/AREUREADY.wav' }, 'github:tidalcycles/Dirt-Samples/master/')
s("rave").begin("<0 .25 .5 .75>")

bpf

Sets the center frequency of the band-pass filter. When using mininotation, you can also optionally supply the 'bpq' parameter separated by ':'.

s("bd sd,hh*3").bpf("<1000 2000 4000 8000>")

bpq

Sets the band-pass q-factor (resonance).

s("bd sd").bpf(500).bpq("<0 1 2 3>")

brak

Returns a new pattern where every other cycle is played once, twice as fast, and offset in time by one quarter of a cycle. Creates a kind of breakbeat feel.

cat

Appends the given pattern(s) to the next cycle.

s("hh*2").cat(
  note("c2(3,8)")
)

cat

The given items are concatenated, where each one takes one cycle.

cat(e5, b4, [d5, c5]).note() // "<e5 b4 [d5 c5]>".note()

ceil

Assumes a numerical pattern. Returns a new pattern with all values set to their mathematical ceiling. E.g. 3.2 replaced with 4, and -4.2 replaced with -4.

"42 42.1 42.5 43".ceil().note()

channel

choose the channel the pattern is sent to in superdirt

choose

Chooses randomly from the given list of elements.

choose

Chooses from the given list of values (or patterns of values), according to the pattern that the method is called on. The pattern should be in the range 0 .. 1.

choose2

As with choose, but the pattern that this method is called on should be in the range -1 .. 1

chooseCycles

Picks one of the elements at random each cycle.

chooseCycles("bd", "hh", "sd").s().fast(4)
"bd | hh | sd".s().fast(4)

chooseInWith

As with {chooseWith}, but the structure comes from the chosen values, rather than the pattern you're using to choose with.

chooseWith

Choose from the list of values (or patterns of values) using the given pattern of numbers, which should be in the range of 0..1

chop

Cuts each sample into the given number of parts, allowing you to explore a technique known as 'granular synthesis'. It turns a pattern of samples into a pattern of parts of samples.

samples({ rhodes: 'https://cdn.freesound.org/previews/132/132051_316502-lq.mp3' })
s("rhodes")
 .chop(4)
 .rev() // reverse order of chops
 .loopAt(4) // fit sample into 4 cycles

chunk

Divides a pattern into a given number of parts, then cycles through those parts in turn, applying the given function to each part in turn (one part per cycle).

"0 1 2 3".chunk(4, x=>x.add(7)).scale('A minor').note()

chunkBack

Like chunk, but cycles through the parts in reverse order. Known as chunk' in tidalcycles

"0 1 2 3".chunkBack(4, x=>x.add(7)).scale('A minor').note()

clip

Multiplies the duration with the given number. Also cuts samples off at the end if they exceed the duration. In tidal, this would be done with legato, which has a complicated history in strudel. For now, if you're coming from tidal, just think clip = legato.

note("c a f e").s("piano").clip("<.5 1 2>")

coarse

fake-resampling for lowering the sample rate. Caution: This effect seems to only work in chromium based browsers

s("bd sd,hh*4").coarse("<1 4 8 16 32>")

compress

Compress each cycle into the given timespan, leaving a gap

cat(
  s("bd sd").compress(.25,.75),
  s("~ bd sd ~")
)

cosine

A cosine signal between 0 and 1.

stack(sine,cosine).segment(16).range(0,15).slow(2).scale('C minor').note()

cpm

Plays the pattern at the given cycles per minute.

s("<bd sd>,hh*2").cpm(90) // = 90 bpm

crush

bit crusher effect.

s("<bd sd>,hh*3").fast(2).crush("<16 8 7 6 5 4 3 2>")

csoundm

Sends notes to Csound for rendering with MIDI semantics. The hap value is translated to these Csound pfields:

p1 -- Csound instrument either as a number (1-based, can be a fraction), or as a string name. p2 -- time in beats (usually seconds) from start of performance. p3 -- duration in beats (usually seconds). p4 -- MIDI key number (as a real number, not an integer but in [0, 127]. p5 -- MIDI velocity (as a real number, not an integer but in [0, 127]. p6 -- Strudel controls, as a string.

cut

In the style of classic drum-machines, cut will stop a playing sample as soon as another samples with in same cutgroup is to be played. An example would be an open hi-hat followed by a closed one, essentially muting the open.

s("rd*4").cut(1)

decay

Amplitude envelope decay time: the time it takes after the attack time to reach the sustain level. Note that the decay is only audible if the sustain value is lower than 1.

note("c3 e3").decay("<.1 .2 .3 .4>").sustain(0)

defragmentHaps

Combines adjacent haps with the same value and whole. Only intended for use in tests.

degrade

Randomly removes 50% of events from the pattern. Shorthand for .degradeBy(0.5)

s("hh*8").degrade()
s("[hh?]*8")

degradeBy

Randomly removes events from the pattern by a given amount. 0 = 0% chance of removal 1 = 100% chance of removal

s("hh*8").degradeBy(0.2)
s("[hh?0.2]*8")

delay

Sets the level of the delay signal.

When using mininotation, you can also optionally add the 'delaytime' and 'delayfeedback' parameter, separated by ':'.

s("bd").delay("<0 .25 .5 1>")
s("bd bd").delay("0.65:0.25:0.9 0.65:0.125:0.7")

delayfeedback

Sets the level of the signal that is fed back into the delay. Caution: Values >= 1 will result in a signal that gets louder and louder! Don't do it

s("bd").delay(.25).delayfeedback("<.25 .5 .75 1>").slow(2)

delaytime

Sets the time of the delay effect.

s("bd").delay(.25).delaytime("<.125 .25 .5 1>").slow(2)

detune

Set detune of oscillators. Works only with some synths, see tidal doc

n("0 3 7").s('superzow').octave(3).detune("<0 .25 .5 1 2>").osc()

discreteOnly

Returns a new pattern, with 'continuous' haps (those without 'whole' timespans) removed from query results.

div

Divides each number by the given factor.

djf

DJ filter, below 0.5 is low pass filter, above is high pass filter.

n("0 3 7 [10,24]").s('superzow').octave(3).djf("<.5 .25 .5 .75>").osc()

drawLine

Intended for a debugging, drawLine renders the pattern as a string, where each character represents the same time span. Should only be used with single characters as values, otherwise the character slots will be messed up. Character legend:

  • "|" cycle separator
  • "-" hold previous value
  • "." silence

const line = drawLine("0 [1 2 3]", 10); // |0--123|0--123
console.log(line);
silence;

dry

Set dryness of reverb. See {@link room} and {@link size} for more information about reverb.

n("[0,3,7](3,8)").s("superpiano").room(.7).dry("<0 .5 .75 1>").osc()

early

Nudge a pattern to start earlier in time. Equivalent of Tidal's <~ operator

"bd ~".stack("hh ~".early(.1)).s()

echo

Superimpose and offset multiple times, gradually decreasing the velocity

s("bd sd").echo(3, 1/6, .8)

echoWith

Superimpose and offset multiple times, applying the given function each time.

"<0 [2 4]>"
.echoWith(4, 1/8, (p,n) => p.add(n*2))
.scale('C minor').note().clip(.2)

end

The same as .begin, but cuts off the end off each sample.

s("bd*2,oh*4").end("<.1 .2 .5 1>")

euclid

Changes the structure of the pattern to form an euclidean rhythm. Euclidian rhythms are rhythms obtained using the greatest common divisor of two numbers. They were described in 2004 by Godfried Toussaint, a canadian computer scientist. Euclidian rhythms are really useful for computer/algorithmic music because they can describe a large number of rhythms with a couple of numbers.

// The Cuban tresillo pattern.
note("c3").euclid(3,8)

euclidLegato

Similar to euclid, but each pulse is held until the next pulse, so there will be no gaps.

n("g2").decay(.1).sustain(.3).euclidLegato(3,8)

euclidRot

Like euclid, but has an additional parameter for 'rotating' the resulting sequence.

// A Samba rhythm necklace from Brazil
note("c3").euclidRot(3,16,14)

every

An alias for {@link firstOf}

note("c3 d3 e3 g3").every(4, x=>x.rev())

fast

Speed up a pattern by the given factor. Used by "*" in mini notation.

s("<bd sd> hh").fast(2) // s("[<bd sd> hh]*2")

fastGap

speeds up a pattern like fast, but rather than it playing multiple times as fast would it instead leaves a gap in the remaining space of the cycle. For example, the following will play the sound pattern "bd sn" only once but compressed into the first half of the cycle, i.e. twice as fast.

s("bd sd").fastGap(2)

filterHaps

Returns a new Pattern, which only returns haps that meet the given test.

filterValues

As with {@link Pattern#filterHaps}, but the function is applied to values inside haps.

firstCycle

Queries the pattern for the first cycle, returning Haps. Mainly of use when debugging a pattern.

firstCycleValues

Accessor for a list of values returned by querying the first cycle.

firstOf

Applies the given function every n cycles, starting from the first cycle.

note("c3 d3 e3 g3").firstOf(4, x=>x.rev())

floor

Assumes a numerical pattern. Returns a new pattern with all values set to their mathematical floor. E.g. 3.7 replaced with to 3, and -4.2 replaced with -5.

"42 42.1 42.5 43".floor().note()

fmap

see {@link Pattern#withValue}

focus

Similar to compress, but doesn't leave gaps, and the 'focus' can be bigger than a cycle

s("bd hh sd hh").focus(1/4, 3/4)

freq

Set frequency of sound.

freq("220 110 440 110").s("superzow").osc()
freq("110".mul.out(".5 1.5 .6 [2 3]")).s("superzow").osc()

fromBipolar

Assumes a numerical pattern, containing bipolar values in the range -1 .. 1 Returns a new pattern with values scaled to the unipolar range 0 .. 1

gain

Controls the gain by an exponential amount.

s("hh*8").gain(".4!2 1 .4!2 1 .4 1")

hpf

Applies the cutoff frequency of the high-pass filter.

When using mininotation, you can also optionally add the 'hpq' parameter, separated by ':'.

s("bd sd,hh*4").hpf("<4000 2000 1000 500 200 100>")
s("bd sd,hh*4").hpf("<2000 2000:25>")

hpq

Controls the high-pass q-value.

s("bd sd,hh*4").hpf(2000).hpq("<0 10 20 30>")

hurry

Both speeds up the pattern (like 'fast') and the sample playback (like 'speed').

s("bd sd:2").hurry("<1 2 4 3>").slow(1.5)

hush

Silences a pattern.

stack(
  s("bd").hush(),
  s("hh*3")
)

inside

Carries out an operation 'inside' a cycle.

"0 1 2 3 4 3 2 1".inside(4, rev).scale('C major').note()
// "0 1 2 3 4 3 2 1".slow(4).rev().fast(4).scale('C major').note()

invert

Swaps 1s and 0s in a binary pattern.

s("bd").struct("1 0 0 1 0 0 1 0".lastOf(4, invert))

irand

A continuous pattern of random integers, between 0 and n-1.

// randomly select scale notes from 0 - 7 (= C to C)
irand(8).struct("x(3,8)").scale('C minor').note()

iter

Divides a pattern into a given number of subdivisions, plays the subdivisions in order, but increments the starting subdivision each cycle. The pattern wraps to the first subdivision after the last subdivision is played.

note("0 1 2 3".scale('A minor')).iter(4)

iterBack

Like iter, but plays the subdivisions in reverse order. Known as iter' in tidalcycles

note("0 1 2 3".scale('A minor')).iterBack(4)

jux

The jux function creates strange stereo effects, by applying a function to a pattern, but only in the right-hand channel.

s("lt ht mt ht hh").jux(rev)

juxBy

Jux with adjustable stereo width. 0 = mono, 1 = full stereo.

s("lt ht mt ht hh").juxBy("<0 .5 1>/2", rev)

lastOf

Applies the given function every n cycles, starting from the last cycle.

note("c3 d3 e3 g3").lastOf(4, x=>x.rev())

late

Nudge a pattern to start later in time. Equivalent of Tidal's ~> operator

"bd ~".stack("hh ~".late(.1)).s()

layer

Layers the result of the given function(s). Like {@link Pattern.superimpose}, but without the original pattern:

"<0 2 4 6 ~ 4 ~ 2 0!3 ~!5>*4"
  .layer(x=>x.add("0,2"))
  .scale('C minor').note()

legato

a pattern of numbers from 0 to 1. Skips the beginning of each sample, e.g. 0.25 to cut off the first quarter from each sample.

"c4 eb4 g4 bb4".legato("<0.125 .25 .5 .75 1 2 4>")

legato

Multiplies the hap duration with the given factor. With samples, clip might be a better function to use (more info)

note("c3 eb3 g3 c4").legato("<.25 .5 1 2>")

leslie

Emulation of a Leslie speaker: speakers rotating in a wooden amplified cabinet.

n("0,4,7").s("supersquare").leslie("<0 .4 .6 1>").osc()

linger

Selects the given fraction of the pattern and repeats that part to fill the remainder of the cycle.

s("lt ht mt cp, [hh oh]*2").linger("<1 .5 .25 .125>")

loop

Loops the sample (from begin to end) the specified number of times. Note that the tempo of the loop is not synced with the cycle tempo.

s("bd").loop("<1 2 3 4>").osc()

loopAt

Makes the sample fit the given number of cycles by changing the speed.

samples({ rhodes: 'https://cdn.freesound.org/previews/132/132051_316502-lq.mp3' })
s("rhodes").loopAt(4)

loopAtCps

Makes the sample fit the given number of cycles and cps value, by changing the speed. Please note that at some point cps will be given by a global clock and this function will be deprecated/removed.

samples({ rhodes: 'https://cdn.freesound.org/previews/132/132051_316502-lq.mp3' })
s("rhodes").loopAtCps(4,1.5).cps(1.5)

lpf

Applies the cutoff frequency of the low-pass filter.

When using mininotation, you can also optionally add the 'lpq' parameter, separated by ':'.

s("bd sd,hh*3").lpf("<4000 2000 1000 500 200 100>")
s("bd*8").lpf("1000:0 1000:10 1000:20 1000:30")

lpq

Controls the low-pass q-value.

s("bd sd,hh*4").lpf(2000).lpq("<0 10 20 30>")

lrate

Rate of modulation / rotation for leslie effect

n("0,4,7").s("supersquare").leslie(1).lrate("<1 2 4 8>").osc()

lsize

Physical size of the cabinet in meters. Be careful, it might be slightly larger than your computer. Affects the Doppler amount (pitch warble)

n("0,4,7").s("supersquare").leslie(1).lrate(2).lsize("<.1 .5 1>").osc()

mask

Returns silence when mask is 0 or "~"

note("c [eb,g] d [eb,g]").mask("<1 [0 1]>").slow(2)

mul

Multiplies each number by the given factor.

"1 1.5 [1.66, <2 2.33>]".mul(150).freq()

n

Selects the given index from the sample map. Numbers too high will wrap around. n can also be used to play midi numbers, but it is recommended to use note instead.

s("bd sd,hh*3").n("<0 1>")

never

Shorthand for .sometimesBy(0, fn) (never calls fn)

s("hh*8").never(x=>x.speed("0.5"))

note

Plays the given note name or midi number. A note name consists of

  • a letter (a-g or A-G)
  • optional accidentals (b or #)
  • optional octave number (0-9). Defaults to 3

Examples of valid note names: cbbBbf#c3A4Eb2c#5

You can also use midi numbers instead of note names, where 69 is mapped to A4 440Hz in 12EDO.

note("c a f e")
note("c4 a4 f4 e4")
note("60 69 65 64")

octave

Sets the default octave of a synth.

n("0,4,7").s('supersquare').octave("<3 4 5 6>").osc()

off

Superimposes the function result on top of the original pattern, delayed by the given time.

"c3 eb3 g3".off(1/8, x=>x.add(7)).note()

often

Shorthand for .sometimesBy(0.75, fn)

s("hh*8").often(x=>x.speed("0.5"))

onsetsOnly

Returns a new pattern, with all haps without onsets filtered out. A hap with an onset is one with a whole timespan that begins at the same time as its part timespan.

orbit

An orbit is a global parameter context for patterns. Patterns with the same orbit will share the same global effects.

stack(
  s("hh*3").delay(.5).delaytime(.25).orbit(1),
  s("~ sd").delay(.5).delaytime(.125).orbit(2)
)

osc

Sends each hap as an OSC message, which can be picked up by SuperCollider or any other OSC-enabled software. For more info, read MIDI & OSC in the docs

outside

Carries out an operation 'outside' a cycle.

"<[0 1] 2 [3 4] 5>".outside(4, rev).scale('C major').note()
// "<[0 1] 2 [3 4] 5>".fast(4).rev().slow(4).scale('C major').note()

palindrome

Applies rev to a pattern every other cycle, so that the pattern alternates between forwards and backwards.

note("c d e g").palindrome()

pan

Sets position in stereo.

s("[bd hh]*2").pan("<.5 1 .5 0>")

Pattern

Create a pattern. As an end user, you will most likely not create a Pattern directly.

perlin

Generates a continuous pattern of perlin noise, in the range 0..1.

// randomly change the cutoff
s("bd sd,hh*4").cutoff(perlin.range(500,2000))

ply

The ply function repeats each event the given number of times.

s("bd ~ sd cp").ply("<1 2 3>")

polymeter

Combines the given lists of patterns with the same pulse. This will create so called polymeters when different sized sequences are used.

polymeter(["c", "eb", "g"], ["c2", "g2"]).note()
// "{c eb g, c2 g2}".note()

polymeterSteps

Aligns one or more given sequences to the given number of steps per cycle.

polymeterSteps(2, ["c", "d", "e", "f", "g", "f", "e", "d"])
.note().stack(s("bd")) // 1 cycle = 1 bd = 2 notes
// note("{c d e f g f e d}%2").stack(s("bd"))

press

Syncopates a rhythm, by shifting each event halfway into its timespan.

stack(s("hh*4"),
      s("bd mt sd ht").every(4, press)
     ).slow(2)

pressBy

Like press, but allows you to specify the amount by which each event is shifted. pressBy(0.5) is the same as press, while pressBy(1/3) shifts each event by a third of its timespan.

stack(s("hh*4"),
      s("bd mt sd ht").pressBy("<0 0.5 0.25>")
     ).slow(2)

pure

A discrete value that repeats once per cycle.

pure('e4') // "e4"

queryArc

Query haps inside the given time span.

const pattern = sequence('a', ['b', 'c'])
const haps = pattern.queryArc(0, 1)
console.log(haps)
silence

rand

A continuous pattern of random numbers, between 0 and 1.

// randomly change the cutoff
s("bd sd,hh*4").cutoff(rand.range(500,2000))

rand2

A continuous pattern of random numbers, between -1 and 1

range

Assumes a numerical pattern, containing unipolar values in the range 0 .. 1. Returns a new pattern with values scaled to the given min/max range. Most useful in combination with continuous patterns.

s("bd sd,hh*4").cutoff(sine.range(500,2000).slow(4))

range2

Assumes a numerical pattern, containing bipolar values in the range -1 .. 1 Returns a new pattern with values scaled to the given min/max range.

s("bd sd,hh*4").cutoff(sine2.range2(500,2000).slow(4))

rangex

Assumes a numerical pattern, containing unipolar values in the range 0 .. 1 Returns a new pattern with values scaled to the given min/max range, following an exponential curve.

s("bd sd,hh*4").cutoff(sine.rangex(500,2000).slow(4))

rarely

Shorthand for .sometimesBy(0.25, fn)

s("hh*8").rarely(x=>x.speed("0.5"))

ratio

Allows dividing numbers via list notation using ":". Returns a new pattern with just numbers.

ratio("1, 5:4, 3:2").mul(110).freq().s("piano").slow(2)

register

Registers a new pattern method. The method is added to the Pattern class + the standalone function is returned from register.

release

Amplitude envelope release time: The time it takes after the offset to go from sustain level to zero.

note("c3 e3 g3 c4").release("<0 .1 .4 .6 1>/2")

removeUndefineds

Returns a new pattern, with haps containing undefined values removed from query results.

reset

Resets the pattern to the start of the cycle for each onset of the reset pattern.

s("<bd lt> sd, hh*4").reset("<x@3 x(3,8)>")

restart

Restarts the pattern for each onset of the restart pattern. While reset will only reset the current cycle, restart will start from cycle 0.

s("<bd lt> sd, hh*4").restart("<x@3 x(3,8)>")

rev

Reverse all haps in a pattern

note("c3 d3 e3 g3").rev()

ribbon

Loops the pattern inside at offset for cycles.

// Looping a portion of randomness
note(irand(8).segment(4).scale('C3 minor')).ribbon(1337, 2)

room

Sets the level of reverb.

When using mininotation, you can also optionally add the 'size' parameter, separated by ':'.

s("bd sd").room("<0 .2 .4 .6 .8 1>")
s("bd sd").room("<0.9:1 0.9:4>")

roomsize

Sets the room size of the reverb, see {@link room}.

s("bd sd").room(.8).roomsize("<0 1 2 4 8>")

rootNotes

Maps the chords of the incoming pattern to root notes in the given octave.

"<C^7 A7 Dm7 G7>".rootNotes(2).note()

round

Assumes a numerical pattern. Returns a new pattern with all values rounded to the nearest integer.

"0.5 1.5 2.5".round().scale('C major').note()

run

A discrete pattern of numbers from 0 to n-1

run(4).scale('C4 major').note()
// "0 1 2 3".scale('C4 major').note()

s

Select a sound / sample by name. When using mininotation, you can also optionally supply 'n' and 'gain' parameters separated by ':'.

s("bd hh")
s("bd:0 bd:1 bd:0:0.3 bd:1:1.4")

samples

Loads a collection of samples to use with s

samples('github:tidalcycles/Dirt-Samples/master');
s("[bd ~]*2, [~ hh]*2, ~ sd")
samples({
 bd: '808bd/BD0000.WAV',
 sd: '808sd/SD0010.WAV'
 }, 'https://raw.githubusercontent.com/tidalcycles/Dirt-Samples/master/');
s("[bd ~]*2, [~ hh]*2, ~ sd")

saw

A sawtooth signal between 0 and 1.

"c3 [eb3,g3] g2 [g3,bb3]".note().clip(saw.slow(4))
saw.range(0,8).segment(8).scale('C major').slow(4).note()

scale

Turns numbers into notes in the scale (zero indexed). Also sets scale for other scale operations, like {@link Pattern#scaleTranspose}.

A scale consists of a root note (e.g. c4cf#bb4) followed by semicolon (':') and then a scale type.

The root note defaults to octave 3, if no octave number is given.

n("0 2 4 6 4 2").scale("C:major")
n("[0,7] 4 [2,7] 4")
.scale("C:<major minor>/2")
.s("piano")
n(rand.range(0,12).segment(8).round())
.scale("C:ritusen")
.s("folkharp")

scaleTranspose

Transposes notes inside the scale by the number of steps. Expected to be called on a Pattern which already has a {@link Pattern#scale}

"-8 [2,4,6]"
.scale('C4 bebop major')
.scaleTranspose("<0 -1 -2 -3 -4 -5 -6 -4>")
.note()

segment

Samples the pattern at a rate of n events per cycle. Useful for turning a continuous pattern into a discrete one.

note(saw.range(0,12).segment(24)).add(40)

seq

Appends the given pattern(s) to the current pattern.

s("hh*2").seq(
  note("c2(3,8)")
)

seq

Like cat, but the items are crammed into one cycle.

seq(e5, b4, [d5, c5]).note() // "e5 b4 [d5 c5]".note()

sequence

See {@link fastcat}

setContext

Returns a new pattern with the context field set to every hap set to the given value.

shape

Wave shaping distortion. CAUTION: it might get loud

s("bd sd,hh*4").shape("<0 .2 .4 .6 .8>")

showFirstCycle

More human-readable version of the {@link Pattern#firstCycleValues} accessor.

silence

Does absolutely nothing..

silence // "~"

sine

A sine signal between 0 and 1.

sine.segment(16).range(0,15).slow(2).scale('C minor').note()

slice

Chops samples into the given number of slices, triggering those slices with a given pattern of slice numbers. Instead of a number, it also accepts a list of numbers from 0 to 1 to slice at specific points.

await samples('github:tidalcycles/Dirt-Samples/master')
s("breaks165").slice(8, "0 1 <2 2*2> 3 [4 0] 5 6 7".every(3, rev)).slow(1.5)
await samples('github:tidalcycles/Dirt-Samples/master')
s("breaks125/2").fit().slice([0,.25,.5,.75], "0 1 1 <2 3>")

slow

Slow down a pattern over the given number of cycles. Like the "/" operator in mini notation.

s("<bd sd> hh").slow(2) // s("[<bd sd> hh]/2")

slowcat

Concatenation: combines a list of patterns, switching between them successively, one per cycle:

synonyms: {@link cat}

slowcat(e5, b4, [d5, c5])

slowcatPrime

Concatenation: combines a list of patterns, switching between them successively, one per cycle. Unlike slowcat, this version will skip cycles.

someCycles

Shorthand for .someCyclesBy(0.5, fn)

s("hh(3,8)").someCycles(x=>x.speed("0.5"))

someCyclesBy

Randomly applies the given function by the given probability on a cycle by cycle basis. Similar to {@link Pattern#sometimesBy}

s("hh(3,8)").someCyclesBy(.3, x=>x.speed("0.5"))

sometimes

Applies the given function with a 50% chance

s("hh*4").sometimes(x=>x.speed("0.5"))

sometimesBy

Randomly applies the given function by the given probability. Similar to {@link Pattern#someCyclesBy}

s("hh(3,8)").sometimesBy(.4, x=>x.speed("0.5"))

sortHapsByPart

Returns a new pattern, which returns haps sorted in temporal order. Mainly of use when comparing two patterns for equality, in tests.

source

Define a custom webaudio node to use as a sound source.

speed

Changes the speed of sample playback, i.e. a cheap way of changing pitch.

s("bd").speed("<1 2 4 1 -2 -4>")
speed("1 1.5*2 [2 1.1]").s("piano").clip(1)

splitQueries

Returns a new pattern, with queries split at cycle boundaries. This makes some calculations easier to express, as all haps are then constrained to happen within a cycle.

square

A square signal between 0 and 1.

square.segment(2).range(0,7).scale('C minor').note()

squiz

Made by Calum Gunn. Reminiscent of some weird mixture of filter, ring-modulator and pitch-shifter. The SuperCollider manual defines Squiz as:

"A simplistic pitch-raising algorithm. It's not meant to sound natural; its sound is reminiscent of some weird mixture of filter, ring-modulator and pitch-shifter, depending on the input. The algorithm works by cutting the signal into fragments (delimited by upwards-going zero-crossings) and squeezing those fragments in the time domain (i.e. simply playing them back faster than they came in), leaving silences inbetween. All the parameters apart from memlen can be modulated."

squiz("2 4/2 6 [8 16]").s("bd").osc()

stack

Stacks the given pattern(s) to the current pattern.

s("hh*2").stack(
  note("c2(3,8)")
)

stack

The given items are played at the same time at the same length.

stack(g3, b3, [e4, d4]).note() // "g3,b3,[e4,d4]".note()

stripContext

Returns a new pattern with the context field of every hap set to an empty object.

struct

Applies the given structure to the pattern:

note("c3,eb3,g3")
  .struct("x ~ x ~ ~ x ~ x ~ ~ ~ x ~ x ~ ~")
  .slow(4)

stut

Deprecated. Like echo, but the last 2 parameters are flipped.

s("bd sd").stut(3, .8, 1/6)

sub

Like add, but the given numbers are subtracted.

"0 2 4".sub("<0 1 2 3>").scale('C4 minor').note()
// See add for more information.

superimpose

Superimposes the result of the given function(s) on top of the original pattern:

"<0 2 4 6 ~ 4 ~ 2 0!3 ~!5>*4"
  .superimpose(x=>x.add(2))
  .scale('C minor').note()

sustain

Amplitude envelope sustain level: The level which is reached after attack / decay, being sustained until the offset.

note("c3 e3").decay(.2).sustain("<0 .1 .4 .6 1>")

timeCat

Like {@link Pattern.seq}, but each step has a length, relative to the whole.

timeCat([3,e3],[1, g3]).note() // "e3@3 g3".note()

toBipolar

Assumes a numerical pattern, containing unipolar values in the range 0 ..

  1. Returns a new pattern with values scaled to the bipolar range -1 .. 1

transpose

Change the pitch of each value by the given amount. Expects numbers or note strings as values. The amount can be given as a number of semitones or as a string in interval short notation. If you don't care about enharmonic correctness, just use numbers. Otherwise, pass the interval of the form: ST where S is the degree number and T the type of interval with

  • M = major
  • m = minor
  • P = perfect
  • A = augmented
  • d = diminished

Examples intervals:

  • 1P = unison
  • 3M = major third
  • 3m = minor third
  • 4P = perfect fourth
  • 4A = augmented fourth
  • 5P = perfect fifth
  • 5d = diminished fifth

"c2 c3".fast(2).transpose("<0 -2 5 3>".slow(2)).note()
"c2 c3".fast(2).transpose("<1P -2M 4P 3m>".slow(2)).note()

tri

A triangle signal between 0 and 1.

tri.segment(8).range(0,7).scale('C minor').note()

undegradeBy

Inverse of {@link Pattern#degradeBy}: Randomly removes events from the pattern by a given amount. 0 = 100% chance of removal 1 = 0% chance of removal Events that would be removed by degradeBy are let through by undegradeBy and vice versa (see second example).

s("hh*8").undegradeBy(0.2)

unit

Used in conjunction with {@link speed}, accepts values of "r" (rate, default behavior), "c" (cycles), or "s" (seconds). Using unit "c" means speed will be interpreted in units of cycles, e.g. speed "1" means samples will be stretched to fill a cycle. Using unit "s" means the playback speed will be adjusted so that the duration is the number of seconds specified by speed.

speed("1 2 .5 3").s("bd").unit("c").osc()

velocity

Sets the velocity from 0 to 1. Is multiplied together with gain.

s("hh*8")
.gain(".4!2 1 .4!2 1 .4 1")
.velocity(".4 1")

voicing

Turns chord symbols into voicings. You can use the following control params:

  • chord: Note, followed by chord symbol, e.g. C Am G7 Bb^7
  • dict: voicing dictionary to use, falls back to default dictionary
  • anchor: the note that is used to align the chord
  • mode: how the voicing is aligned to the anchor
    • below: top note <= anchor
    • duck: top note <= anchor, anchor excluded
    • above: bottom note >= anchor
  • offset: whole number that shifts the voicing up or down to the next voicing
  • n: if set, the voicing is played like a scale. Overshooting numbers will be octaved

All of the above controls are optional, except chord. If you pass a pattern of strings to voicing, they will be interpreted as chords.

voicing("<C Am F G>")
n("0 1 2 3 4 5 6 7").chord("<C Am F G>").voicing()

voicings

DEPRECATED: still works, but it is recommended you use .voicing instead (without s). Turns chord symbols into voicings, using the smoothest voice leading possible. Uses chord-voicings package.

stack("<C^7 A7 Dm7 G7>".voicings('lefthand'), "<C3 A2 D3 G2>").note()

vowel

Formant filter to make things sound like vowels.

note("c2 <eb2 <g2 g1>>").s('sawtooth')
.vowel("<a e i <o u>>")

when

Applies the given function whenever the given pattern is in a true state.

"c3 eb3 g3".when("<0 1>/2", x=>x.sub(5)).note()

withContext

Returns a new pattern with the given function applied to the context field of every hap.

withHap

As with {@link Pattern#withHaps}, but applies the function to every hap, rather than every list of haps.

withHaps

Returns a new pattern with the given function applied to the list of haps returned by every query.

withHapSpan

Similar to {@link Pattern#withQuerySpan}, but the function is applied to the timespans of all haps returned by pattern queries (both part timespans, and where present, whole timespans).

withHapTime

As with {@link Pattern#withHapSpan}, but the function is applied to both the begin and end time of the hap timespans.

withLoc

Returns a new pattern with the given location information added to the context of every hap.

withQuerySpan

Returns a new pattern, where the given function is applied to the query timespan before passing it to the original pattern.

withQueryTime

As with {@link Pattern#withQuerySpan}, but the function is applied to both the begin and end time of the query timespan.

withValue

Returns a new pattern, with the function applied to the value of each hap. It has the alias {@link Pattern#fmap}.

"0 1 2".withValue(v => v + 10).log()

zoom

Plays a portion of a pattern, specified by the beginning and end of a time span. The new resulting pattern is played over the time period of the original pattern:

s("bd*2 hh*3 [sd bd]*2 perc").zoom(0.25, 0.75)
// s("hh*3 [sd bd]*2") // equivalent


Superformula

超级方程式
📖算法说明
▶️曲线绘制过程演示



超级公式是超椭圆的推广,由 Johan Gielis 在 2000 年左右提出。 Gielis 认为该公式可以用来描述自然界中存在的许多复杂形状和曲线。Gielis 已提交与超级公式生成的模式合成相关的专利申请,该专利于 2020 年 5 月 10 日到期。

极坐标中,有r半径和\varphi角度,超级公式为:

r\left(\varphi\right) = \left( \left| \frac{\cos\left(\frac{m\varphi}{4}\right)}{a} \right| ^{n_2} + \左| \frac{\sin\left(\frac{m\varphi}{4}\right)}{b} \right| ^{n_3} \right) ^{-\frac{1}{n_{1} }}。

通过为参数选择不同的值{\displaystyle a,b,m,n_{1},n_{2},}{\displaystyle n_{3},}可以生成不同的形状。

该公式是对超椭圆进行推广得到的,由丹麦数学家皮特·海因命名并推广。

在以下示例中,每个图上方显示的值应为m123

SF2D.png


通过超级公式的球积,可以将公式扩展到 3、4 或n维。例如,通过将两个超级公式r 12相乘获得3D参数化表面。坐标由以下关系定义:

x=r_{1}(\theta )\cos \theta \cdot r_{2}(\phi )\cos \phi ,
y=r_{1}(\theta )\sin \theta \cdot r_{2}(\phi )\cos \phi ,
z=r_{2}(\phi )\sin \phi ,

\phi纬度)在 − π /2 和π /2 之间变化,θ经度)在 − ππ之间变化。

3D超级公式:a = b = 1;m123显示在图片中。

  • SF3D 3257.SVGSF3D 3.5.5.5.svgSF3D 3301515.svgSF3D 7284.SVGSF3D 5111.SVGSF3D 4.5.54.svgSF3D 8.5.58.svgSF3D 4121515.svg

可以通过在超级公式的两项中允许不同的m个参数来概括超级公式。通过替换第一个参数{\displaystyle m}米带有y和第二个参数{\displaystyle m}米z : 

{\displaystyle r\left(\varphi \right)=\left(\left|{\frac {\cos \left({\frac {y\varphi }{4}}\right)}{a}}\right |^{n_{2}}+\left|{\frac {\sin \left({\frac {z\varphi }{4}}\right)}{b}}\right|^{n_{3} }\right)^{-{\frac {1}{n_{1}}}}}

这允许创建旋转不对称和嵌套结构。在下面的例子中 a, b、{\displaystyle {n_{2}}}{\displaystyle {n_{3}}}是 1:

超级公式U-several-structures.svg



倒计时特效

倒计时特效函数-counterDownAnimation,调用参数:

number - 倒计时从哪个数字开始计

color - 数字圆框颜色

diameter - 数字圆框直径

audio - 每次倒计时的音效

onEnd - 倒计时结束后的回调函数



取整函数

取整函数主要有三种:round()、ceil()、floor()



round:在英文中是有大约,环绕,在某某四周,附近的意思,所以,可以取其大约的意思,在函数中是四舍五入。

四舍五入的时候,正数,小数位大于5,则整数位加一,小数位小于5,则整数位不变,抹除小数位;负数,小数位小于5,则整数位不变,抹除小数位,小数位大于5,则整数位加一;整数,则不变。


ceil:在英文中,是天花板的意思,有向上的意思,所以,此函数是向上取整,它返回的是大于或等于函数参数,并且与之最接近的整数。

向上取整的时候,正数,则直接将当前整数加一;负数,则将整数后面的数据抹除;整数,则不变。



floor:在英文中,是地面,地板的意思,有下面的意思,所以,此函数是向下取整,它返回的是小于或等于函数参数,并且与之最接近的整数。

向下取整的时候,正数,则取其整数部位,抹除小数部位;负数,则取其整数加一;整数,则不变。




平面设计的要素

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

2016/10/31 推荐: 程远

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

@乘与九设计 :提高视觉冲击力的方法非常非常多,我将结合下我的平面设计经验,总结归纳一下我所学习到的平面设计理论。我一直觉得学习平面设计不能只着眼于平面,应该让眼光开阔些,所以我下面的一些例子会从传统平面海报,绘画,建筑,电影等各个方面来分析设计原则。

内容摘要

  • 排版四大原则
  • 字体选择与运用
  • 平面版式
  • 故事元素

排版四大原则

平面设计中最经常被使用到,也是经常被人提及的四大原则分别是Contrast/对比,Repetition/重复,Alignment/排列,Proximity/亲近。

1. Contrast/对比:

“Contrast is the most important element of all graphic design. ” --- Jan Tschichold

对比是所有平面设计中最重要的元素。我们可以在设计过程中,找一个对比点,再把这个对比极端化,例如,使用正负形空间,对比色,粗细对比,尺寸大小对比,字体bold和Italic对比等等。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

上面这张经典而精彩额封面由Emily Mahon 设计,封面插画的作者是RayMorimura 。通过田野线条的纵向延伸,同时使用负空间将观看者的注意力引向(TheWealth of Nations)这一标题的,设计师使用了自然风景,动物和人物手掌为设计元素,是否是利用人与自然之间的关系的角度来诠释书籍内容?

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

在上面这张Helen Yentus 设计的封面中,设计者使用了白色的方框来象征医院中冰冷的消毒灯。设计者还有意识地将医生的形象处理得没有特色,这是为了凸出该书主题的普遍性。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

上面这张海报中,标题字体颜色对比,副标题颜色对比,大标题副标题正文的字体大小对比,狼人,小孩,叶子等正负形的手法作为图形,可以说是对比手法用的很成功的一幅海报作品。负空间并非意味着封面要保持绝对的极简主义。它可以是一种集中读者注意力的设计策略。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

学习平面设计,从艺术绘画中获得灵感是必不可少的方法。例如,毕卡索运用黑、白、灰的色调来表现画境,使得整幅画的画面看起来如同服丧般晦暗。房子正熊熊地燃烧著,一个女人被火烧著掉下来,停止呼吸的婴儿、四肢分离的士兵尸体,刀子旁边开著的白花。是电灯?还是炸弹爆炸的光芒?整幅画的结构和笔法看起来似乎相当粗率。人物的肢体被任意地任意地延长或缩短。手指和脚趾大得不协调,本是人的侧面之处,却有两个眼睛不自然地长在一起,或是不自然地排列着。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

2001太空漫游中的经典画面,富有故事的对比,是原始到现代科技的转变。

2. Repetition/重复

重复并不是单调,重复是可以用少数的元素快速传达画面想要传达的信息,例如

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

重复的元素是信息设计中必不可少的手法,重复图像一出来,信息数据、画面中传达的内容故事也就直接的呈现,可以说这是非常直观的手法。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

重复并不一定是一个元素不变。在这幅壁画中,科学家、艺术家、哲学家全都被安排在一座宏伟的厅堂内。大厅中央是腋下夹着「蒂迈乌斯篇」(Timeaus)、富于象征意义地以食指指天的柏拉图(Plato),以及一手拿「伦理学」、另一隻手臂伸向前方的亚里士多德(Aristotle)。其他的著名人物包括苏格拉底、毕达格拉斯、欧几里德等人。这些聚集在一起的人物造型,使拉斐尔成功地用简单的形象来表达这一个最复杂的内容。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?
专业科班方法!平面设计里怎样提高作品的视觉冲击力?

重复手法在建筑的应用上,从古埃及到现在都是不可缺少的设计原则,在英国的格洛斯特大教堂(Gloucester Cathedral)可以看到重複的扇状拱顶(vault),在北京天坛祈年殿的藻井也看到环形式的重复构图。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

如果每一个单位是一个元素,那二十世纪中国著名的建筑师贝聿铭(I. M.Pei)为巴黎罗浮宫所建造的玻璃金字塔即为一个很杰出的建筑范例。三角形让它朝三度空间重复地发展可以形成有趣的立体构成。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?
专业科班方法!平面设计里怎样提高作品的视觉冲击力?

还有一种重复,是风格。重复让一个产品或者品牌形成了风格,也可以把它理解我我们品牌设计中常说的视觉统一。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

重复也可以形成品牌符号,有没发现有很多奢侈品的品牌视觉就是用重复手法做的。

3. Alignment/排列

排列手法有一个很大作用是引导视觉,它让我们的画面中的元素找到平衡,它可以让我们的画面形成一个系统,如“网格”,网格后面我们再详谈。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?
专业科班方法!平面设计里怎样提高作品的视觉冲击力?

从上面这张封面上,读者可以判断出书的内容与强迫症有关。封面中色彩搭配和近乎完美的线条都给人以愉悦之感。封面的风格应该体现全书的整体风格。如果书籍的内容和严肃,不可用充满幽默元素的封面来误导读者。这会让读者失去对设计师的信任。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

设计师Jessie-Jisun Lee将著名导演大卫林奇的照片不加修饰地放到了封面中。而使用方块隔开的字体则给人一种猜谜之感,这暗示该书将把与大卫林奇相关的细节透露给读者。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

在窦加的作品《浴盆中的裸女》(The tub)当中,从裸女右手抓著头发的位置开始欣赏这幅画,将顺着头发往下随着少女的眼神注意浴盆的边缘。然后再一路随着浴盆的弧线,经过少女的手指,与桌边的直线相交。但是,窦加很技巧地运用桌上的梳子再引导观赏者的视线回到少女迷人的身躯以及她的右手。画中其他的物品或摆设,则是用来平衡整个画面,使观众的注意力随时停留在裸女身上。

看似平平无奇的画面,却都是带给我们无限的内容和学习空间,所以我们要多多留意周边的物品,说不定下一幅牛逼作品就在你身旁:)

4. Proximity/亲近

亲近这个词是英语翻译过来,我们中文会不太好理解,大致意思可以是元素与元素之间的关系。我们把画面中的几个元素放在一起,他们之间必须是有联系的,或者说,应该是合理的。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

这本书封面的淡绿色调让人很自然地联想到书中虚构的翡翠城市(Emerald City)。此外,胆小狮子的双眼也充满魔力,同时用拼贴的手法,让水桶,狮子,人和麻布衣服构成一个完整的脸,确实会引起读者的好奇心,这样的配合到底和书中内容有什么必然联系。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

上图封面的设计者从心理测验所用的洛夏墨迹(Rorschach Inkblot test)中获得了灵感,这张封面表现了这本名著(《蝇王》)凶杀和智力游戏的主题。四溅的鲜血让人觉得怪异却印象深刻。没有什么能比强烈的感情更能促使读者入手一本书的东西了。在设计时,应试图通过唤醒读者的内心情感使他们与书籍的角色及主题建立起联系。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

将人的眼睛部位和拱形门将结合,两个元素之间的替换是想要阐述人物与图像的关系还是想类比人物当时眼中所见之物呢?亲近方法是类似一种比喻的方式,让人对作品无限联想。

字体选择与运用

说完平面四大原则,这一部分是也是重中之重——字体。每一款字体都带有其各自的风格和情绪,例如衬线字体带有高贵,传统的感觉,而无衬线字体则给人简约,现代的感觉。选择正确的字体会让画面加分不少,当然,选择不当会直接毁掉画面。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

我们把所有字母在视觉上保持水平对齐,但是他们并没有绝对意义上的相同高度。比如,这个三角形比矩形要高,否则,三角形肯定会看上去比矩形要小。同样,圆形也需要超出基准线而达到视觉上的对齐。如果圆形和矩形高度相同,那肯定会看起来比矩形小,这原则可以应用在字体设计中的每一个字母,是很重要的一条法则。

字体的选择是协调画面的黑和白。黑,字体的外形。白,字体内部以及字体与字体之间的部分。字母内部的白决定了字母与字母之间的白。创造一种黑多白多的字体是不可能的,一种黑体白的部分肯定比细体白的部分少。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

选择和安排设计的字型时,阅读难易度应该是首要考虑之一。字太小难以阅读,字太大又很烦人,因此一般而言,印刷用段落文字,中文最小最好不要超过7点,英文一般来说不低于8-9 点之间,而网页则是 15-20 之间,大部分的浏览器默认值是 16 点。当然,这不是准则,应视情况而定,最保守的做法是直接输出打印,测试最合适字号。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

每种字型都散发独特的情感或个性,也许是友善、新潮、严肃或傻里傻气,但大部分的字型并不是万用的,所以你要判断一个字型对你来说是怎么样的感觉,还有它适不适合放在这个设计里面。我的方法之一就是列出该设计需要呈现哪些特质,如果能先确定内容更好,这样就能直接挑选字型来配合建立好的内文调性。

每种字体都有自己的声音,这种声音将影响我们阅读文字的感受,也影响我们吸收和处理信息的过程。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

对于海报设计上的字体,因为空间更多而且大家通常会从远一点的距离观看,就可以容纳大字,若选择相对小的字体,则有更多空间发挥创意和选择更有型的文字。一些像名片之类的小型项目或是长段文章会需要小一点的字,但这些字也要清晰易读,而都充满装饰。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

该作品通过后台程序编码,用户可以输入一串文字,该文字将会自动生成一只已字体组成的怪兽,用户可以通过键盘控制该怪兽进行一 系列游戏,该怪兽会跟随着音乐的节奏而变化,玩这个音乐电视就像在玩游戏一样,运用多样化的交互工具我们可以尽可能的调用人体多种感官,我们通过自己的身体感受和体验在字体之中所蕴含的情感。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

不同的质感和肌理,会使人产生不同的心理感受。施德明Stefan Sagmeister 通过利用各种材料的质地效果来完成字体的创意设计, 有拼贴、缠绕、排列组合等手法,为字体的视觉表现开创了新的思路。有的材质字体是实物模型制作出来, 通过摄像技术,拍摄成视频影像。有的材质字体是借助计算机来完成多元渠道的应用使字体增添更多趣味。

平面版式

平面版式中最科学严谨的就是“网格”了,可能很多人觉得网格限制设计师的工具,会让设计变得理性而没有人情味,我觉得不然,仅仅几个矩形就可以有创造无数的版式,如果再配合图形,图片,文字信息,那将会是有更多的惊喜。这里有运用网格尝试了16种排版方式,可以作为部分版式的指导。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

360设计杂志的风格是用三张封面叠加的方式设计,安排层次图形和元素之间的层次感,可以在干扰视觉的同时,突出自身所想体现的主题,这种表现方式往往是比较直接而且有效的方式。这种视觉干扰是在分散欣赏者多余视线的同时,更能注意到杂志logo上,这种叠加方式所产生的图形视觉效果也是这本杂志的辅助图形。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

比例也是版式中不可忽视的部分,比利时的超现实主义画家马格利特(Rene’ Magritte )画了一件名为《个人价值》(Personal Values)的作品。在这幅画中,我们看到一把梳子、一个酒杯、一把修面刷和一个肥皂。这些日常用品的相对大小与其所处的空间关系十分奇怪;如果不是它们的尺寸过大,超乎常理,要不然就是这个空间是一个很小的玩具屋。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

自古至今,运用黄金分割比例原理创作的伟大艺术作品不胜枚举,如埃及的金字塔、雅典的巴特农(Parthenon)神庙、达文西的蒙娜丽莎 … 等等。以上以雅典巴特农神庙及法国点描派画家秀拉(Georges Seurat)的《戏水的人》(Bathers)为例说明之。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

利用黄金分割比例连续製作愈来愈大的正方形,以弧形连接每一个正方形的对角,可以形成一个螺旋状的曲线,将这个曲线运用在希腊建筑柱头的设计,就形成爱奥尼亚式(ionic order)的柱头。

故事元素

前面几个方法都是设计手法为主,而这部分,强调的是画面带来的内容。如何把画面内容、故事等用平面设计的手法传达给观众,就是我们平面设计师的工作。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

皇冠+鲜血所渲染的气氛是血腥和凝重的,背后无疑是一个极为扣人心弦的故事。这张封面虽然没有提供详尽的细节,但权力争斗,悬疑及皇室的要素已经彰显无遗。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

上面这张为Jules Verne的小说《地心历险记》葡文版设计的封面出自Carlo Giovani之手。封面通过不同的颜色,形状,质感,加上层层分级的效果,展现了地壳的不同分层。单从书籍封面的图像就可以清楚该书的大致内容,只是非常高明的故事表达方法。

专业科班方法!平面设计里怎样提高作品的视觉冲击力?

Chanel 2011年指甲油创意广告,片子拍摄全程用女性的手指作为主体,这是一个很棒的比喻手法,将手指比喻为女性双腿,红色指甲油自然变成舞鞋,在搭建的舞台上,配合音乐节奏跳起舞,这种讲故事的手法会给观看者留下深刻印象,因为这是指甲油已经不只是指甲油,它是舞台上不可缺少的闪光点。

总结

以上介绍了排版四大原则 + 字体选择与运用 + 平面版式 + 故事元素四大内容,均通过其他人的作品来分析设计手法与运用。

我个人认为,提高视觉冲击只是更快地抓住别人的注意力,视觉手法只是用来辅助和表现你的主题与创意的手段。



插值

颜色模型中的插值就是利用已知邻近像素点的灰度值(或RBG图像中的三色值)来产生未知像素点的灰度值,以便由原始图像再生出具有更高分辨率的图像。

插值的作用是对原图像的像素重新分布,从而来改变像素数量的一种方法。在图像放大过程中,像素也相应地增加,增加的过程就是“插值”发生作用的过程,“插值”程序自动选择信息较好的像素作为增加、弥补空白像素的空间,而并非只使用临近的像素,所以在放大图像时,图像看上去会比较平滑、干净。不过需要说明的是插值并不能增加图像信息,尽管图像尺寸变大,但效果也相对要模糊些,过程可以理解为白酒掺水。

插值几乎应用于所有需要进行图像缩放功能的领域内,如数码相机、图像处理软件(如Photoshop)。


数组常用函数

1、join();将数组元素转换字符串

2、push()函数:在数组的末尾添加一个或多个元素

3、pop()函数:从数组的末尾删除一个元素,函数返回被删除的元素

4、shift()函数:从数组的开头删除一个元素,函数返回被删除的元素

5、unshift()函数:在数组的首部插入一个或多个元素

6、slice()函数:切片函数。会接受一个或两个参数,从数组中截取部分数据

        (1) slice(索引1):截取数组中从给定索引到末尾的所有位置

        (2)slice(索引1,索引2):截取数组中索引1到索引2之间的元素(包括索引1,不包括索引2)        

                                索引:可以为负数。负数是从后向前找        

7、fill()函数:用给定的值填充数组

8、fillter()函数:对数组的元素进行过滤,参数是一个函数,返回值是一个数组

                变量名.fittler(function(元素,索引){

                        函数体


})



常用数组函数

1、array_merge($arr1,$arr2); 两个数组组成一个数组  但是要注意这个函数组装后,键值重新被定义,若不想键值重新定义,可以直接使用 $arr = $arr1 +$arr2 ;也可以达到两个数组组委一个数组的目的

2、array_rand();函数返回数组中的随机键名,或者如果您规定函数返回不只一个键名,则返回包含随机键名的数组;即一个参数返回随机键名,存在第二个参数且大于1,返回多个随机键名组成的数组   注意:第二个参数不能大于第一个参数的总数

3、array_keys();返回由键名组成的数组

4、array_key_exists(key,array);数组中书否存在指定的键

5、array_search();查找某一键值并返回该值的键,但是只能返回一个,若存在多个,返回最后一个的键值

6、array_unique();去掉以为数组中重复的值

7、join(‘拆分方式’,array)、implode(‘拆分方式’,array);拆分数组为字符串

8、reset(array);输出目前数组指针对应的值

9、array_shift();删除数组中的第一个元素(red),并返回被删除的元素:

10、array_pop();函数删除数组中的最后一个元素。

11、end();查看数组的最后一个;可以使用另外一个方法;$arr[count($arr)-1];

12、current();查看当前值

13、in_array;是否在数组内

14、is_array;是否存在数组

15、array_value();重新分配key

16、array_slice();从数组中取出一段 从0开始

17、array_splice();从数组移除选定的元素  并用新元素发取代

18、unset(); 删除数组

19、shuffle() ;随即重新排列数组

20、array_flip(); 交换键名和键值

21、array_clumn(); 返回数组某一栏的值

22、array_reduce(); 发送数组值到自定义函数返回字符串

数组操作的基本函数

array_values($arr)获得数组的值

array_keys($arr)获得数组的键名

array_flip($arr)数组中的值与键名互换(如果有重复前面的会被后面的覆盖)

in_array(值,$arr);  在数组中检索值是否存在

array_search(值,$arr);在数组中检索值,存在返回键名,否则返回false

array_key_exists(键,$arr);  检索给定的键名是否存在数组中

range(低位,高位);  创建一个包含指定范围单元的数组

array_unique($arr);  移除数组中重复的值,新的数组中会保留原始的键名

array_reverse($arr,TRUE);返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名

array_rand($arr,2);  从数组中随机取出一个或多个元素的键

shuffle($arr);  将数组的顺序打乱

count($arr);统计元素个数

array_merge(数组1,数组1…)将多个数组合并起来

数组和变量之间的转换

extract($arr);用于把数组中的元素转换成变量导入到当前文件中,键名当作变量名,值作为变量值

注:(第二个参数很重要,可以看手册使用)

     2.compact(var1,var2,var3);用给定的变量名创建一个数组

数组的分段和填充

array_slice(数组,偏移量,[长度]): 从偏移量开始取出一定长度的数组.

array_chunk(数组,长度):将数组切割成指定长度的多个数组.

array_pad(数组,长度,值): 用值将数组填补到指定长度

array_fill(索引,长度,值): 用给定的值填充一个新数组

 数组的排序函数

对值进行排序:

sort($arr);由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序

rsort($arr);由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序

asort($arr);  由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序

arsort($arr);  由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序


 对键进行排序

ksort($arr);  按照键名正序排序

krsort($arr);  按照键名逆序排序

自然排序:

natsort(数组) 按照人的自然习惯排序.



架子鼓drum

架子鼓的名称和记谱法
标准的架子鼓配置是5鼓3镲,即5个鼓和3个镲(好像弱智的解释)。
会看鼓谱是基本能力!架子鼓的记谱法很简单,逻辑大概是基于摆放位置设计的。鼓谱没有调号、和弦和全半音的关系,每个鼓的记谱位置基本都是固定的。

下面开始普法:
底鼓(bass drum)记在五线谱第一间上(可能是因为只有它是放地上的原因吧)
军鼓(snare drum)记在第三间,因为在中间位置
嗵一(tom1)记在第四间
嗵二(Tom2)记在四线
嗵三(Tom3)记在二间
踩镲(HiHat)记在上加一间
脚镲(HH C)记在下加一间(脚镲同时控制开闭踩镲)
吊镲(crash cymbal)记在上加一线
叮叮镲(ride cymbal)记在第五线上

以上就是标配的架子鼓的全部名称和记谱法


DrumAbbreviation
Bass drum, Kick drumbd
Snare drumsd
Rimshotrim
Clapcp
Closed hi-hathh
Open hi-hatoh
Crashcr
Riderd
Shakers (and maracas, cabasas, etc)sh
High tomht
Medium tommt
Low tomlt
Cowbellcb
Tambourinetb
Other percussionsperc
Miscellaneous samplesmisc
Effectsfx



一、设备术语

Drum Set:套鼓

bass/ bass drum/ kick/ kick drum:贝斯鼓、大鼓、底鼓

twin bass/ double bass/ twin kick:双贝斯鼓

pedal:踏板

twin pedal/ double pedal:双踏板

bass drum beater:踏板上的敲击槌

tom:桶鼓

mountend tom:悬挂桶鼓

high tom:高桶鼓(或一桶鼓/标准五鼓情况下)

medium tom:中桶鼓(或二桶鼓/标准五鼓情况下)

floor tom:落地桶鼓(或三通鼓/标准五鼓情况下)

snare/ snare drum:军鼓

snare/ snappy snare:响弦

hoop:边圈、压圈

rim:鼓边

rim-shot:击边

ghost snare:魔鬼音符

cross stick:制音边击

buzz snare:军鼓压奏

Hi-Hats:踩镲

Hi-Hats closed:踩镲闭镲

Hi-Hats open:踩镲开镲

Hi-Hats half open:踩镲开镲

Hi-Hats foot closed:脚踩闭镲

Hi-Hats foot open:脚踩开镲

Ride:节奏镲

Crash:强音镲

Bell:镲冒

Splash:水镲china/china crash:中国镲,、反镲

taper:镲片的主要平面部分

edge:镲边

Crash roll:镲片连击

stick:鼓槌

tip:槌头

neck:槌颈

butt end:槌尾

nylon tip:尼龙头

wood tip:木头

bearing edge:鼓身与鼓皮接触的部分

drumhead/head:鼓皮

batter head:打击面皮

snare head:响弦皮

bottom head/resonant head:桶鼓底鼓的底皮

tension:张力

tone:音高

tune:给鼓调音




二、Rudiments:基本功

Para:单击(RL或LR)

diddle:双击(RR或LL)

Single Paradiddle:单击+双击(RLRR或LRLL)

Reverse Paradiddle:RRLR或LLRL

Inward Paradiddle:RLLR或LRRL

Outward Paradiddle:RLRL或LRLR

Paradiddle-diddle:RLRRLL或LRLLRR

ParaParadiddle(Double Paradiddle):RLRLRR或LRLRLL

ParaParadiddle-diddle:RLRLRRLL或LRLRLLRR

ParaParaParadiddle(Triplet Paradiddle):RLRLRLRR或LRLRLRLL

Paradiddle-diddle-diddle:RLRRLLRR或LRLLRRLL

Rudiments/基本功40条 第一页




SINGLE STROKE RUDIMENTS(单击基本功)

1,Single Stroke Roll:单击滚奏(RLRL或LRLR)

2,Single Stroke Four:单击四连击(RLR L或LRL R)

3,Single Stroke Seven:单击七连击(RLRLRL R 或 LRLRLR L)




DRUM ROLL RUDIMENTS(轮鼓基本功)

4,Multiple Bounce Roll:压奏

5,Triple Stroke Roll:三连击滚奏(RRR LLL)

6,Double Stroke Roll:双击滚奏(RRLL或LLRR)

7,Five Stroke Roll:五击滚奏(rrll R或 llrr L)

8,Six Stroke Roll:六击滚奏(R llrr L或 L rrll R)

9,Seven Stroke Roll:七击滚奏(rrllrrL或llrrllR)

10,Nine Stroke Roll:九击滚奏(rrllrrll R或llrrllrr L)

11,Ten Stroke Roll:十击滚奏(rrllrrll RL或llrrllrr LR)

12,Eleven Stroke Roll:十一击滚奏(rrllrrllrrL或llrrllrrllR)

13,Thirteen Stroke Roll:十三击滚奏(rrllrrllrrllR或llrrllrrllrrL)

14,Fifteen Stroke Roll:十五击滚奏(rrllrrllrrllrrllrrL或llrrllrrllrrllR)

15,Seventeen Stroke Roll:十七击滚奏(rrllrrllrrllrrllR或llrrllrrllrrllrrL)




Paradiddle Rudiments

16,Single Paradiddle(Rlrr Lrll)

17,Double Paradiddle(Rlrlrr Lrlrll)

18,Triplet Paradiddle(Rlrlrlrr Lrlrlrll)

19,Single Paradiddle-diddle(Rlrrll或Lrllrr)

Rudiments/基本功40条 第二页




FLAM-BASED RUDIMENTS(装饰音)

20,Flam:单装饰音

21,Flam Accent

22,Flam Tap

23,Flamacue

24,Flam Paradiddle

25,Single Flammed Mill

26,Flam Paradiddle-diddle

27,Swiss Army Triplet

28,Inverted Flam Tap

29,Flam Drag

30,Pataflafla




DRAG-BASED RUDIMENTS(拖曳类)

31,Drag Ruff

32,Single Drag Tap

33,Double Drag Tap

34,Lesson 25

35,Single Dragadiddle

36,Dragadiddle #1

37,Dragadiddle #2

38,Single Ratamacue

39,Double Ratamacue

40,Triple Ratamacue

架子鼓录音话筒




三、technique:技巧




sticking:槌法

Stroke:击打

Full Stroke:全击

Down Stroke:下击

Up Stroke:上击

Tap Stroke:点击

Half Stroke:半击

Fill in:加花/过门

Solo:独奏

Backbeat:反拍

Accent:重音

Ghost Note:鬼音

Dotted Notes:附点音符

32nd note:三十二分音符

16th note:十六分音符

8th note:八分音符

quarter note:四分音符

half note:二分音符

whole note:全音符

triplet:三连音

sextuplet::六连音

Dynamics:动态弱

ppp:最弱

pp:很弱

p:弱

mp:中弱

mf:中强

f:强

ff:很强

fff:最强

Even:平均

Beat:拍子

Keep time:保持时值

weak/off hand:弱手

train ur off hand:训练你的弱手

Lead:从哪只手起

Pattern:模型/模式

Groove:节奏/律动

Layback:拖拍/落后拍点

16s shuffle:16分音符演奏成shuffle感

swung quavers:摇摆八分音符

Pockets:节拍稳定

Play-along:打伴奏

Jam/Jam session:即兴演奏

Colors:点缀

Chops:华彩/大招

Subdivision:节奏单元

Note placement:音符置位

Velocity:瞬间速度

Bury the beater:贝斯鼓踩完制音

4-way coordination:四肢协调

4-way independence:四肢独立

4-way interdependence:四肢配合

Open hand:开放式

Cross hand:交叉式

Grouping:音组

Time-feel:节奏感

half time feel:半速时值

Double time feel:倍速时值

Metric modulation:节奏度量重组

Parmutation:起始音轮转

Rate:速率

Orchestration:编配

Phrasing:组织乐句

Intro:前奏

Verse:主歌

chorus:副歌

Bridge:过渡段/过门

Outro:尾奏

Develop:发展

Cont.sim.:相似的演奏(节奏型需变化)

Rit.(ritardando)渐慢




架子鼓录音




四、Music styles:音乐风格




Rock:摇滚

Funk:疯克

Indie rock:独立摇滚

Reggae:雷鬼音乐

Solid rock:硬摇滚

Pop:流行

Soul:灵魂乐

Folk rock:民谣摇滚

R&B:节奏布鲁斯

Heavy rock:重摇滚

Grooving:节奏舞曲

Swing:摇摆乐

Blues:布鲁斯

Blues rock:布鲁斯摇滚

Disco:迪斯高

soulful rock:器乐摇滚

Grunge:垃圾摇滚

Metal:金属

Funk Metal:疯克金属

alternative rock:另类摇滚

Heavy Metal:重金属

Jazz:爵士

Jazz funk:爵士疯克

Fusion:融合音乐

Drum 'n' bass:鼓与贝斯

prog rock:前卫摇滚

epic rock:史诗摇滚

Hi-hop:嘻哈

Ballad:叙事民谣

Classic rock:经典摇滚

Country:乡村音乐

Motown:摩城音乐

Gospel:福音音乐

Modern rock:现代摇滚

mambo:曼波

Grime:伦敦地下乐

Latin:拉丁

Latin funk:拉丁疯克

Latin rock:拉丁摇滚

Rock funk:摇滚疯克

Rap:说唱

Disco rap:迪斯高说唱

Punk:朋克

Pop punk:流行朋克

Ska:斯卡

Neo Soul:新灵魂乐

Samba:桑巴

Samba rock:桑巴摇滚

trip hop:神游舞曲

Soca:索卡音乐

calypso:卡利普索民歌

Electronica:电子乐

Salsa:莎莎

Songo:松戈奥

dubstep:回响贝斯

Be bop:比波普

Cool jazz:冷爵士

Bossa nova:波萨诺瓦




经纬度

世界主要城市经纬度

城市英文名城市中文名所属国家纬度经度
Abidjan阿比让科特迪瓦北纬:5°19‘东经:4°01‘
Abu Dhabi阿布扎比阿联酋北纬:24°27‘东经:54°23‘
Abuja阿布贾尼日利亚北纬:9°12‘东经:7°11‘
Acapulco阿卡普尔科墨西哥北纬:16°51‘西经:99°56‘
Accra阿克拉加纳北纬:5°33‘东经:0°15‘
Adak艾达克岛美国北纬:51°52‘东经:176°39‘
Adamstown亚当斯敦英国南纬:25°04‘西经:130°05‘
Addis Ababa亚的斯亚贝巴埃塞俄比亚北纬:9°03‘东经:38°42‘
Adelaide阿得莱德澳大利亚南纬:34°56‘东经:138°36‘
Aden亚丁也门北纬:12°5‘东经:45°
Agra阿格拉印度北纬:27°09‘东经:78°
Aguascalientes阿瓜斯卡连特斯墨西哥北纬:21°51‘西经:102°18‘
Ahmedabad艾哈迈达巴德印度北纬:23°03‘东经:72°4‘
Akron阿科隆美国北纬:41°04‘西经:81°31‘
Al Jizah吉萨埃及北纬:30°01‘东经:31°12‘
Albany奥尔巴尼美国北纬:42°4‘西经:73°47‘
Albuquerque阿尔布开克美国北纬:35°07‘西经:106°4‘
Alexandria亚历山大埃及北纬:31°13‘东经:29°55‘
Algiers阿尔及尔阿尔及利亚北纬:36°42‘东经:3°13‘
Almaty阿拉木图哈萨克斯坦北纬:43°19‘东经:76°55‘
Alofi阿洛菲纽埃南纬:19°03‘西经:169°55‘
Ambon安汶印度尼西亚南纬:4°5‘东经:128°1‘
Amman安曼约旦北纬:31°57‘东经:35°56‘
Amsterdam阿姆斯特丹荷兰北纬:52°21‘东经:4°52‘
Anadyr阿纳德尔俄罗斯北纬:64°4‘东经:177°32‘
Anaheim阿纳海姆美国北纬:33°5‘西经:117°52‘
Anchorage安克雷奇美国北纬:61°13‘西经:149°52‘
Andorra La Vella安道尔安道尔北纬:42°3‘东经:1°31‘
Ankara安卡拉土耳其北纬:40°02‘东经:32°54‘
Anshan鞍山中国北纬:41°05‘东经:122°58‘
Antananarivo塔那那利佛马达加斯加南纬:18°55‘东经:47°31‘
Apia阿皮亚萨摩亚群岛南纬:13°48‘西经:171°45‘
Aqtau阿克陶哈萨克北纬:44°31‘东经:50°16‘
Aqtobe阿克托贝哈萨克北纬:50°17‘东经:57°1‘
Arlington阿灵顿美国北纬:32°41‘西经:97°07‘
Ashgabat阿什哈巴德土库曼斯坦北纬:37°58‘西经:58°24‘
Asmara阿斯马拉厄立特里亚北纬:15°2‘西经:38°58‘
Astana阿斯塔纳哈萨克北纬:51°1‘东经:71°3‘
Asuncion亚松森巴拉圭南纬:25°15‘西经:57°4‘
Athens雅典希腊北纬:38°02‘东经:23°44‘
Atlanta亚特兰大美国北纬:33°46‘西经:84°25‘
Auckland奥克兰新西兰南纬:36°55‘东经:174°45‘
Augusta奥克斯塔美国北纬:44°19‘西经:69°46‘
Aurora奥罗拉美国北纬:39°42‘西经:104°43‘
Austin奥斯丁美国北纬:30°17‘西经:97°44‘
Azores亚速尔群岛葡萄牙北纬:38°3‘西经:28°
Baghdad巴格达伊拉克北纬:33°14‘东经:44°22‘
Baku巴库阿塞拜疆北纬:40°22‘东经:49°53‘
Balikpapan巴厘巴板印度尼西亚南纬:1°15‘东经:116°5‘
Baltimore巴尔的摩美国北纬:39°17‘西经:76°37‘
Bamako巴马科马里北纬:12°4‘西经:7°59‘
Bandar Seri Begawan斯里巴加湾港文莱北纬:4°56‘东经:114°58‘
Bandung万隆印度尼西亚南纬:6°57‘东经:107°34‘
Bangalore班加罗尔印度北纬:12°58‘东经:77°34‘
Bangkok曼谷泰国北纬:13°5‘东经:100°29‘
Bangui班吉中非共和国北纬:4°23‘东经:18°37‘
Banjul班珠尔冈比亚北纬:13°28‘西经:16°39‘
Baotou包头中国北纬:40°38‘东经:109°59‘
Barcelona巴塞罗那西班牙北纬:41°18‘东经:2°06‘
Barnaul巴尔瑙尔俄罗斯北纬:53°21‘东经:83°47‘
Basel巴塞尔瑞士北纬:47°34‘东经:7°36‘
Basra巴士拉伊拉克北纬:30°3‘东经:47°49‘
Basse-Terre巴斯特尔法国北纬:16°14‘西经:61°32‘
Basseterre巴斯特尔圣斯茨和尼维斯北纬:17°18‘西经:62°43‘
Bastia巴斯蒂亚法国北纬:42°41‘东经:9°26‘
Baton Rouge巴吞鲁日美国北纬:30°27‘西经:91°08‘
Beijing北京中国北纬:39°55‘东经:116°23‘
Beirut贝鲁特黎巴嫩北纬:33°52‘东经:35°3‘
Belfast贝尔法斯特英国北纬:54°36‘西经:5°57‘
Belgrade贝尔格莱德塞尔维亚北纬:44°49‘东经:20°28‘
Belmopan贝尔莫潘伯利兹北纬:17°25‘西经:88°46‘
Berlin柏林德国北纬:52°31‘东经:13°2‘
Bern伯尔尼瑞士北纬:46°57‘东经:7°26‘
Bethlehem伯利恒西岸北纬:31°42‘东经:35°12‘
Bhubaneshwar布巴内斯印度北纬:20°15‘东经:85°5‘
Billings比林斯美国北纬:45°47‘西经:108°27‘
Birmingham伯明翰英国北纬:52°3‘西经:1°55‘
Birmingham伯明翰美国北纬:33°3‘西经:86°55‘
Bishkek比什凯克吉尔吉斯北纬:42°53‘东经:74°46‘
Bismarck俾斯麦酒美国北纬:46°49‘西经:100°47‘
Bissau比绍几内亚比绍北纬:11°52‘西经:15°39‘
Blanc-Sablon勃朗峰-萨伯隆加拿大北纬:51°26‘西经:57°08‘
Bogota波哥大哥伦比亚北纬:4°38‘西经:74°05‘
Boise博伊西美国北纬:43°37‘西经:116°13‘
Boston波士顿美国北纬:42°19‘西经:71°05‘
Brades布雷德斯英国北纬:16°46‘西经:62°12‘
Brampton布兰普顿加拿大北纬:43°41‘西经:79°46‘
Brasilia巴西利亚巴西南纬:15°45‘西经:47°57‘
Bratislava布拉迪斯拉发斯洛伐克共和国北纬:48°09‘东经:17°07‘
Brazzaville布拉柴维尔刚果南纬:4°14‘东经:15°14‘
Bridgetown布里奇顿巴巴多斯北纬:13°06‘西经:59°37‘
Brisbane布里斯班澳大利亚南纬:27°28‘东经:153°02‘
Brussels布鲁塞尔比利时北纬:50°51‘东经:4°21‘
Bucharest布加勒斯特罗马尼亚北纬:44°23‘东经:26°1‘
Budapest布达佩斯匈牙利北纬:47°26‘东经:19°15‘
Buenos Aires布宜诺斯艾利斯阿根廷南纬:34°2‘西经:58°3‘
Buffalo布法罗美国北纬:42°52‘西经:78°55‘
Bujumbura布琼布拉布隆迪南纬:3°22‘东经:29°21‘
Cairo开罗埃及北纬:30°东经:31°17‘
Calgary卡尔加里加拿大北纬:51°05‘西经:114°05‘
Cali卡利哥伦比亚北纬:3°24‘西经:76°3‘
Canberra堪培拉澳大利亚南纬:35°18‘东经:149°08‘
Cancun坎昆墨西哥北纬:21°1‘西经:86°51‘
Canton广州中国北纬:23°2‘东经:113°3‘
Cape Town开普敦南非南纬:33°55‘东经:18°27‘
Caracas加拉加斯委内瑞拉北纬:10°3‘西经:66°58‘
Cardiff加地夫英国北纬:51°28‘西经:3°11‘
Carson City卡森城美国北纬:39°1‘西经:118°46‘
Casablanca卡萨布兰卡摩洛哥北纬:33°36‘西经:7°37‘
Castries卡斯特里圣卢西亚北纬:14°01‘西经:60°59‘
Cayenne卡宴法国北纬:4°55‘西经:52°18‘
Cebu City宿务岛菲律宾北纬:10°17‘东经:123°54‘
Changchun长春中国北纬:43°5‘东经:125°2‘
Changsha长沙中国北纬:28°1‘东经:113°
Charleston查尔斯顿美国北纬:38°23‘西经:81°4‘
Charlotte夏洛特美国北纬:35°05‘西经:80°5‘
Charlottetown夏洛特敦加拿大北纬:46°14‘西经:63°09‘
Chatham Island查塔姆岛新西兰南纬:44°西经:176°35‘
Chelyabinsk车里雅宾斯克俄罗斯北纬:55°1‘东经:61°25‘
Chengdu成都中国北纬:30°37‘东经:104°06‘
Chennai钦奈印度北纬:13°05‘东经:80°18‘
Cheyenne夏延文美国北纬:41°08‘西经:104°49‘
Chicago芝加哥美国北纬:41°51‘西经:87°41‘
Chihuahua奇瓦瓦墨西哥北纬:28°38‘西经:106°05‘
Chisinau基希讷乌摩尔多瓦北纬:47°东经:28°5‘
Chittagong吉大港孟加拉国北纬:22°2‘东经:91°48‘
Choibalsan乔巴山蒙古北纬:48°04‘东经:114°3‘
Chongqing重庆中国北纬:29°31‘东经:106°35‘
Christchurch基督城新西兰南纬:43°32‘东经:172°37‘
Cincinnati辛辛那提美国北纬:39°1‘西经:84°3‘
Cleveland克利夫兰美国北纬:41°3‘西经:81°41‘
Colombo科伦坡斯里兰卡北纬:6°55‘东经:79°52‘
Columbia哥伦比亚美国北纬:34°01‘西经:81°
Columbus哥伦布美国北纬:39°59‘西经:82°59‘
Conakry科纳克里几内亚北纬:9°3‘西经:13°43‘
Concord康科特美国北纬:43°13‘西经:71°32‘
Copenhagen哥本哈根丹麦北纬:55°43‘东经:12°34‘
Cordoba科尔多瓦西班牙北纬:37°53‘西经:4°46‘
Dakar达喀尔塞内加尔北纬:14°38‘西经:17°27‘
dalian大连中国北纬:38°53‘东经:121°37‘
Dallas达拉斯美国北纬:32°47‘西经:96°47‘
Damascus大马士革叙利亚北纬:33°3‘东经:36°19‘
Dar es Salaam达累斯萨拉姆坦桑尼亚南纬:6°51‘东经:39°18‘
Darwin达尔文澳大利亚南纬:12°28‘东经:130°51‘
Delhi德令哈印度北纬:28°4‘东经:77°14‘
Denpasar登巴萨印度尼西亚南纬:8°4‘东经:115°14‘
Denver丹佛美国北纬:39°43‘西经:104°59‘
Des Moines得梅因美国北纬:41°36‘西经:93°38‘
Detroit底特律美国北纬:42°23‘西经:83°05‘
Dhaka达卡孟加拉国北纬:23°51‘东经:90°24‘
Dili帝力东帝汶南纬:8°35‘东经:125°35‘
Djibouti吉布提吉布提北纬:12°东经:42°5‘
Dodoma多多马坦桑尼亚南纬:6°1‘东经:35°4‘
Doha多哈卡塔尔北纬:25°15‘东经:51°34‘
Dover多佛尔美国北纬:39°1‘西经:75°32‘
Dubai迪拜阿联酋北纬:25°13‘东经:55°17‘
Dublin都柏林爱尔兰北纬:53°26‘西经:6°15‘
Durban德班南非南纬:29°53‘东经:31°03‘
Dushanbe杜尚别塔吉克斯坦北纬:38°38‘东经:68°51‘
Dusseldorf杜塞尔多夫德国北纬:51°13‘东经:6°47‘
Easter Island复活节岛智利南纬:27°05‘西经:109°2‘
Edinburgh爱丁堡英国北纬:55°57‘西经:3°13‘
Edmonton埃德蒙顿加拿大北纬:53°34‘西经:113°25‘
El Aaiun阿尤恩西撒哈拉北纬:27°09‘西经:13°12‘
El Paso埃尔帕索美国北纬:31°45‘西经:106°29‘
Endeh英德印度尼西亚南纬:8°51‘东经:121°4‘
Esfahan伊斯法罕伊朗北纬:32°42‘东经:51°4‘
Fairbanks费尔班克斯美国北纬:64°5‘西经:147°43‘
Faisalabad费萨拉巴德巴基斯坦北纬:31°25‘东经:73°09‘
Fernando de Noronha费尔南多-迪诺罗尼亚巴西南纬:3°54‘西经:32°25‘
Foochow福州中国北纬:26°01‘东经:119°2‘
Fort-de-France法兰西堡法国北纬:14°36‘西经:61°05‘
Fort Worth福特沃斯美国北纬:32°45‘西经:97°2‘
Frankfort法兰克福美国北纬:38°12‘西经:84°52‘
Frankfurt法兰克福德国北纬:50°02‘东经:8°34‘
Freetown费里敦塞拉利昂北纬:8°3‘西经:13°17‘
Fresno弗雷斯诺美国北纬:36°45‘西经:119°45‘
Fukuoka福冈日本北纬:33°39‘东经:130°21‘
Funafuti福纳佛提图瓦卢南纬:8°31‘东经:179°13‘
Funchal丰沙尔葡萄牙北纬:32°38‘西经:16°54‘
Fushun抚顺中国北纬:41°51‘东经:123°53‘
Gaborone哈博罗内博茨瓦纳南纬:24°45‘东经:25°55‘
Galapagos Islands加拉帕戈斯群岛厄瓜多尔南纬:0°54‘西经:89°36‘
Gambier Islands甘比尔群岛法国南纬:23°08‘西经:134°57‘
Gatineau加蒂诺加拿大北纬:45°29‘西经:75°4‘
Gaza加沙加沙地带北纬:31°3‘东经:34°28‘
Gdansk格但斯克波兰北纬:54°22‘东经:18°38‘
Geneva日内瓦瑞士北纬:46°14‘东经:6°04‘
Georgetown乔治敦圭亚那北纬:6°46‘西经:58°1‘
Georgetown乔治敦英国北纬:19°2‘西经:81°23‘
Gibraltar直布罗陀英国北纬:36°07‘西经:5°22‘
Glasgow格拉斯哥英国北纬:55°52‘西经:4°15‘
Guadalajara瓜达拉哈拉墨西哥北纬:20°4‘西经:103°21‘
Guam关岛美国北纬:13°3‘东经:144°4‘
Guatemala危地马拉危地马拉北纬:14°38‘西经:90°22‘
Guayaquil瓜亚基尔厄瓜多尔南纬:2°13‘西经:79°54‘
Guiyang桂阳中国北纬:26°35‘东经:106°4‘
Halifax哈利法克斯加拿大北纬:44°38‘西经:63°35‘
Hamburg汉堡德国北纬:53°33‘东经:10°
Hamilton汉密尔顿百慕大群岛北纬:32°18‘西经:64°47‘
Hamilton汉密尔顿加拿大北纬:43°15‘西经:79°51‘
Hangzhou杭州中国北纬:30°1‘东经:120°07‘
Hanoi河内越南北纬:21°01‘东经:105°53‘
Harare哈拉雷津巴布韦南纬:17°49‘东经:31°04‘
Harbin哈尔滨中国北纬:45°45‘东经:126°41‘
Harrisburg哈里斯堡美国北纬:40°16‘西经:76°53‘
Hartford哈特福德美国北纬:41°46‘西经:72°41‘
Havana哈瓦那古巴北纬:23°08‘西经:82°23‘
Helena赫勒拿美国北纬:46°35‘西经:112°02‘
Helsinki赫尔辛基芬兰北纬:60°1‘东经:24°53‘
Hiroshima广岛日本北纬:34°23‘东经:132°27‘
Ho Chi Minh胡志明越南北纬:10°46‘东经:106°43‘
Hobart荷伯特澳大利亚南纬:42°54‘东经:147°18‘
Hong Kong香港中国北纬:22°17‘东经:114°08‘
Honiara霍尼亚拉所罗门群岛南纬:9°32‘东经:160°12‘
Honolulu檀香山美国北纬:21°19‘西经:157°5‘
Houston休斯顿美国北纬:29°45‘西经:95°23‘
Hovd科布多蒙古北纬:46°4‘东经:90°45‘
Hyderabad海得拉巴印度北纬:17°22‘东经:78°26‘
Incheon仁川韩国北纬:37°3‘东经:126°38‘
Indianapolis印第安纳波利斯美国北纬:39°47‘西经:86°08‘
Indore印多尔印度北纬:22°42‘东经:75°54‘
Iqaluit伊卡瑞特加拿大北纬:63°45‘西经:68°3‘
Islamabad伊斯兰堡巴基斯坦北纬:33°4‘东经:73°08‘
Istanbul伊斯坦布尔土耳其北纬:41°02‘东经:28°58‘
Izmir伊兹密尔土耳其北纬:38°24‘东经:27°09‘
Jackson杰克逊美国北纬:32°2‘西经:90°11‘
Jacksonville杰克逊维尔美国北纬:30°2‘西经:81°4‘
Jaipur斋浦尔印度北纬:26°53‘东经:75°5‘
Jakarta雅加达印度尼西亚南纬:6°08‘东经:106°45‘
Jayapura查亚普拉印度尼西亚南纬:2°28‘东经:140°38‘
Jeddah吉达沙特阿拉伯北纬:21°3‘东经:39°1‘
Jefferson City杰斐逊城美国北纬:38°34‘西经:92°11‘
Jersey City泽西城美国北纬:40°42‘西经:74°03‘
Jerusalem耶路撒冷以色列北纬:31°47‘东经:35°13‘
Jilin吉林中国北纬:43°53‘东经:126°35‘
Jinan济南中国北纬:36°5‘东经:117°
Jinzhou锦州中国北纬:41°07‘东经:121°06‘
Johannesburg约翰内斯堡南非南纬:26°08‘东经:27°54‘
Juneau朱诺美国北纬:58°18‘西经:134°25‘
Kabul喀布尔阿富汗北纬:34°3‘东经:69°1‘
Kaliningrad加里宁格勒俄罗斯北纬:54°43‘东经:20°3‘
Kamchatka堪察加俄罗斯北纬:53°01‘东经:158°39‘
Kampala坎帕拉乌干达北纬:0°19‘东经:32°35‘
Kano Nigeria尼日利亚卡诺尼日利亚北纬:12°东经:8°31‘
Kanpur坎普尔印度北纬:26°27‘东经:80°14‘
Kansas City堪萨斯城美国北纬:39°02‘西经:94°33‘
Kaohsiung高雄中国北纬:23°03‘东经:120°27‘
Karachi卡拉奇巴基斯坦北纬:24°51‘东经:67°02‘
Kathmandu加德满都餐厅尼泊尔北纬:27°42‘东经:85°19‘
Kaunas考纳斯立陶宛北纬:54°54‘东经:23°54‘
Kawasaki川崎日本北纬:35°32‘东经:139°43‘
Kazan喀山俄罗斯北纬:55°45‘东经:49°1‘
Khartoum喀士穆苏丹北纬:15°34‘东经:32°36‘
Khon Kaen孔敬泰国北纬:16°25‘东经:102°5‘
Khulna库尔纳孟加拉国北纬:22°49‘东经:89°34‘
Kigali基加利卢旺达南纬:1°59‘东经:30°05‘
Kingston京斯敦澳大利亚南纬:29°03‘东经:167°58‘
Kingston京斯敦牙买加北纬:17°58‘西经:76°48‘
Kingstown金斯敦圣文森特和格林纳丁斯北纬:13°12‘西经:61°14‘
Kinshasa金沙萨刚果民主共和国南纬:4°18‘东经:15°18‘
Kiritimati圣诞岛基里巴斯北纬:1°52‘西经:157°2‘
Kitakyushu北九州日本北纬:33°52‘东经:130°49‘
Knoxville诺克斯维尔美国北纬:35°58‘西经:83°56‘
Kobe神户日本北纬:34°41‘东经:135°1‘
Kolkata加尔各答印度北纬:22°34‘东经:88°2‘
Koror科罗尔帕劳北纬:7°3‘东经:134°3‘
Kowloon九龙中国北纬:22°2‘东经:114°15‘
Krakow克拉科夫波兰北纬:50°03‘东经:19°55‘
Krasnoyarsk克拉斯诺亚尔斯克俄罗斯北纬:56°05‘东经:92°46‘
Kuala Lumpur吉隆坡马来西亚北纬:3°08‘东经:101°42‘
Kunming昆明中国北纬:25°04‘东经:102°41‘
Kupang古邦印度尼西亚南纬:10°23‘东经:123°38‘
Kuwait City科威特省科威特北纬:29°2‘东经:48°
Kyiv基辅乌克兰北纬:50°28‘东经:30°29‘
Kyoto京都日本北纬:35°东经:135°45‘
La Coruna拉柯鲁尼亚西班牙北纬:43°22‘西经:8°24‘
La Paz拉巴斯玻利维亚南纬:16°3‘西经:68°09‘
La Plata拉普拉塔阿根廷南纬:34°55‘西经:57°57‘
Lagos拉各斯尼日利亚北纬:6°35‘东经:3°02‘
Lahore拉合尔巴基斯坦北纬:31°34‘东经:74°22‘
Lanchow兰州中国北纬:36°01‘东经:103°45‘
Las Palmas拉斯帕尔马斯西班牙北纬:28°08‘西经:15°27‘
Las Vegas拉斯维加斯美国北纬:36°1‘西经:115°1‘
Lausanne洛桑瑞士北纬:46°32‘东经:6°39‘
Laval拉瓦尔加拿大北纬:45°35‘西经:73°45‘
Leon莱昂墨西哥北纬:21°1‘西经:101°42‘
Lexington-Fayette法耶特美国北纬:38°02‘西经:84°27‘
Lhasa拉萨中国北纬:29°41‘东经:91°1‘
Libreville利伯维尔加蓬北纬:0°3‘东经:9°25‘
Lilongwe利隆圭马拉维南纬:13°58‘东经:33°49‘
Lima利马秘鲁南纬:12°06‘西经:76°55‘
Lincoln林肯美国北纬:40°49‘西经:96°4‘
Lisbon里斯本葡萄牙北纬:38°42‘西经:9°05‘
Little Rock小石城美国北纬:34°44‘西经:92°19‘
Liverpool利物浦英国北纬:53°25‘西经:3°
Ljubljana卢布尔雅那斯洛文尼亚北纬:46°03‘东经:14°31‘
Lodz罗兹波兰北纬:51°49‘东经:19°28‘
Lome洛美多哥北纬:6°1‘东经:1°21‘
London伦敦加拿大北纬:42°59‘西经:81°14‘
London伦敦英国北纬:51°3‘西经:0°07‘
Long Beach长滩美国北纬:33°47‘西经:118°09‘
Longueuil隆格伊加拿大北纬:45°32‘西经:73°3‘
Lord Howe Island豪勋爵岛澳大利亚南纬:33°3‘东经:159°
Los Angeles洛杉矶美国北纬:34°05‘西经:118°22‘
Louisville路易斯维尔美国北纬:38°13‘西经:85°48‘
Luanda罗安达安哥拉南纬:8°5‘东经:13°2‘
Lubumbashi卢本巴希刚果民主共和国南纬:11°44‘东经:27°29‘
Lucknow勒克瑙印度北纬:26°5‘东经:80°54‘
Ludhiana鲁得希阿那印度北纬:30°56‘东经:75°52‘
Luoyang洛阳中国北纬:34°48‘东经:112°25‘
Lusaka卢萨卡赞比亚南纬:15°2‘东经:28°14‘
Luxembourg卢森堡卢森堡北纬:49°37‘东经:6°08‘
Macau澳门中国北纬:22°11‘东经:113°33‘
Madison麦迪逊美国北纬:43°05‘西经:89°23‘
Madrid马德里西班牙北纬:40°26‘西经:3°42‘
Madurai马杜赖印度北纬:9°55‘东经:78°07‘
Majuro马朱罗马绍尔群岛北纬:7°09‘东经:171°12‘
Makkah麦加沙特阿拉伯北纬:21°26‘东经:39°49‘
Malabo马拉博赤道几内亚北纬:3°45‘东经:8°48‘
Malang马朗印度尼西亚南纬:7°59‘东经:112°45‘
Male马累马尔代夫北纬:4°1‘东经:73°28‘
Mamoutzou马穆楚法国南纬:12°47‘东经:45°14‘
Manado美娜多印度尼西亚北纬:1°3‘东经:124°58‘
Managua马那瓜尼加拉瓜北纬:12°06‘西经:86°18‘
Manama麦纳麦巴林北纬:26°12‘东经:50°36‘
Manaus马瑙斯巴西南纬:3°06‘西经:60°
Manila马尼拉菲律宾北纬:14°37‘东经:121°
Maputo马普托莫桑比克南纬:25°58‘东经:32°35‘
Mar del Plata马德普拉塔阿根廷南纬:38°西经:57°32‘
Markham马卡姆加拿大北纬:43°49‘西经:79°19‘
Maseru马塞卢莱索托南纬:29°18‘东经:27°28‘
Mataram马塔兰印度尼西亚南纬:8°36‘东经:116°07‘
Mazatlan马萨特兰墨西哥北纬:23°13‘西经:106°25‘
Mbabane姆巴巴纳斯威士兰南纬:26°19‘东经:31°08‘
Medan棉兰印度尼西亚北纬:3°35‘东经:98°39‘
Medellin麦德林哥伦比亚北纬:6°15‘西经:75°36‘
Melbourne墨尔本澳大利亚南纬:37°49‘东经:144°58‘
Memphis孟菲斯美国北纬:35°05‘西经:90°
Mendoza门多萨阿根廷南纬:32°54‘西经:68°5‘
Merida梅里达墨西哥北纬:20°58‘西经:89°37‘
Mesa梅萨美国北纬:33°25‘西经:111°44‘
Mexicali墨西卡利墨西哥北纬:32°38‘西经:115°27‘
Mexico City墨西哥城墨西哥北纬:19°28‘西经:99°09‘
Miami迈阿密美国北纬:25°47‘西经:80°13‘
Midland米德兰美国北纬:32°西经:102°05‘
Midway中途岛美国北纬:28°13‘西经:177°22‘
Milan米兰意大利北纬:45°28‘东经:9°1‘
Milwaukee密尔沃基雄鹿美国北纬:43°03‘西经:87°57‘
Minneapolis明尼阿波利斯美国北纬:45‘西经:93°15‘
Minsk明斯克白俄罗斯北纬:53°51‘东经:27°3‘
Mississauga米西索加加拿大北纬:43°41‘西经:79°36‘
Mobile莫比尔美国北纬:30°4‘西经:88°05‘
Mogadishu摩加迪沙索马里北纬:2°02‘东经:45°21‘
Monaco摩纳哥摩纳哥北纬:43°4‘东经:7°25‘
Monrovia蒙罗维亚利比里亚北纬:6°2‘西经:10°46‘
Monterrey蒙特雷墨西哥北纬:25°4‘西经:100°2‘
Montevideo蒙得维的亚乌拉圭南纬:34°53‘西经:56°11‘
Montgomery蒙哥马利美国北纬:32°22‘西经:86°2‘
Montpelier蒙彼利埃美国北纬:44°16‘西经:72°34‘
Montreal蒙特利尔加拿大北纬:45°3‘西经:73°35‘
Moroni莫罗尼科摩罗南纬:11°4‘东经:43°19‘
Moscow莫斯科俄罗斯北纬:55°45‘东经:37°37‘
Mumbai孟买印度北纬:18°56‘东经:72°51‘
Munich慕尼黑德国北纬:48°08‘东经:11°35‘
Murmansk摩尔曼斯克俄罗斯北纬:68°59‘东经:33°08‘
Muscat马斯喀特阿曼北纬:23°36‘东经:58°37‘
Nagoya名古屋日本北纬:35°1‘东经:136°55‘
Nagpur那格浦尔印度北纬:21°1‘东经:79°12‘
Nairobi内罗毕肯尼亚南纬:1°17‘东经:36°49‘
Nanchang南昌中国北纬:28°38‘东经:115°56‘
Naples那不勒斯意大利北纬:40°5‘东经:14°14‘
Nashville纳什维尔美国北纬:36°1‘西经:86°46‘
Nassau拿骚巴哈马北纬:25°03‘西经:77°2‘
Ndjamena恩贾梅纳乍得北纬:12°1‘东经:14°59‘
Neuquen内乌肯阿根廷南纬:38°57‘西经:68°04‘
New Delhi新德里印度北纬:28°37‘东经:77°13‘
New Orleans新奥尔良美国北纬:29°58‘西经:90°05‘
New York纽约美国北纬:40°44‘西经:73°55‘
Newark纽瓦克美国北纬:40°43‘西经:74°1‘
Niamey尼亚美尼日尔北纬:13°32‘东经:2°05‘
Nice尼斯法国北纬:43°42‘东经:7°16‘
Nicosia尼科西亚塞浦路斯北纬:35°11‘东经:33°23‘
Nizhny Novgorod下诺夫哥罗德俄罗斯北纬:56°2‘东经:44°01‘
Nome诺姆美国北纬:64°32‘西经:165°24‘
Norfolk诺福克美国北纬:36°54‘西经:76°18‘
Nouakchott努瓦克肖特毛里塔尼亚北纬:18°09‘西经:15°58‘
Noumea努美阿法国南纬:22°16‘东经:166°27‘
Novgorod诺夫哥罗德俄罗斯北纬:58°3‘东经:31°2‘
Novosibirsk新西伯利亚俄罗斯北纬:55°04‘东经:82°55‘
Nukualofa努库阿洛法汤加南纬:21°07‘西经:175°12‘
Nuuk努克丹麦北纬:64°1‘西经:51°4‘
Oakland奥克兰美国北纬:37°47‘西经:122°13‘
Odesa敖德萨乌克兰北纬:46°3‘东经:30°46‘
Okayama冈山日本北纬:34°4‘东经:133°54‘
Oklahoma City俄克拉何马城美国北纬:35°29‘西经:97°32‘
Omsk鄂木斯克俄罗斯北纬:55°东经:73°22‘
Oranjestad奥拉涅斯塔克荷兰北纬:12°3‘西经:69°58‘
Orlando奥兰多美国北纬:28°3‘西经:81°22‘
Osaka大阪日本北纬:34°4‘东经:135°3‘
Oslo奥斯陆挪威北纬:59°56‘东经:10°41‘
Ottawa渥太华加拿大北纬:45°25‘西经:75°43‘
Ouagadougou瓦加杜古布基纳法索北纬:12°2‘西经:1°4‘
Pago Pago帕果帕果美国南纬:14°16‘西经:170°42‘
Palembang巨港印度尼西亚南纬:2°59‘东经:104°5‘
Palikir波赫恩密克罗尼西亚北纬:6°55‘东经:158°1‘
palma帕尔马西班牙北纬:39°26‘东经:2°39‘
Panama巴拿马巴拿马北纬:8°57‘西经:79°3‘
Papeete帕皮提法国南纬:17°32‘西经:149°34‘
Paramaribo帕拉马里博苏里南北纬:5°52‘西经:55°14‘
paris巴黎法国北纬:48°51‘东经:2°2‘
Patna巴特那印度北纬:25°37‘东经:85°12‘
Pensacola彭沙科拉美国北纬:30°3‘东经:87°12‘
Perm彼尔姆联邦政府北纬:58°01‘东经:56°1‘
Perth珀斯澳大利亚南纬:31°58‘东经:115°49‘
Peshawar白沙瓦巴基斯坦北纬:34°01‘东经:71°4‘
Philadelphia费拉德尔菲亚美国北纬:40°西经:75°09‘
Phnom Penh金边柬埔寨北纬:11°35‘东经:104°55‘
Phoenix菲尼克斯美国北纬:33°3‘西经:112°05‘
Pierre皮尔美国北纬:44°22‘西经:100°2‘
Pittsburgh匹兹堡美国北纬:40°26‘西经:80‘
Podgorica波德戈里察门的内哥罗北纬:42°27‘东经:19°28‘
Port-au-Prince太子港海地北纬:18°32‘西经:72°2‘
Port-aux-Francais法兰西港法国南纬:49°21‘东经:70°13‘
Port Elizabeth伊丽莎白港南非南纬:33°57‘东经:25°36‘
Port Louis路易港毛里求斯南纬:20°09‘东经:57°29‘
Port Moresby莫尔兹比港巴布亚新几内亚南纬:9°3‘东经:147°07‘
Port of Spain西班牙港特立尼达和多巴哥北纬:10°38‘西经:61°31‘
Port Vila维拉港瓦努阿图南纬:17°44‘东经:168°19‘
Portland波特兰美国北纬:45°31‘西经:122°39‘
Porto波尔图葡萄牙北纬:41°09‘西经:8°37‘
Porto Alegre阿雷格里港巴西南纬:30°02‘西经:51°14‘
Porto Novo波多诺伏贝宁北纬:6°3‘东经:2°47‘
Poznan波兹南波兰北纬:52°25‘东经:16°53‘
Prague布拉格捷克北纬:50°05‘东经:14°25‘
Praia普拉亚佛得角北纬:14°55‘西经:23°31‘
Pretoria比勒陀利亚南非南纬:25°43‘东经:28°11‘
Pristina普里什蒂纳科索沃北纬:42°39‘东经:21°1‘
Providence普罗维登斯美国北纬:41°49‘西经:71°25‘
Pune浦那印度北纬:18°34‘东经:73°58‘
Pusan釜山韩国北纬:35°05‘东经:129°02‘
Pyongyang平壤朝鲜北纬:39°东经:125°47‘
Qiqihar齐齐哈尔中国北纬:47°23‘东经:124‘
Quebec魁北克加拿大北纬:46°5‘西经:71°15‘
Quito基多厄瓜多尔南纬:0°14‘西经:78°3‘
Raba拉巴印度尼西亚南纬:8°27‘东经:118°45‘
Rabat拉巴特摩洛哥北纬:34°02‘西经:6°51‘
Raleigh瑞丽美国北纬:35°47‘西经:78°39‘
Rapid City拉皮德城美国北纬:44°05‘西经:103°13‘
Rarotonga拉罗汤加岛库克群岛南纬:21°2‘西经:160°16‘
Rawaki拉瓦基基里巴斯南纬:3°08‘西经:171°05‘
Recife累西腓巴西南纬:8°06‘西经:34°53‘
Regina里贾那加拿大北纬:50°3‘西经:104°38‘
Reykjavik雷克雅未克冰岛北纬:64°09‘西经:21°58‘
Richmond里士满美国北纬:37°32‘西经:77°28‘
Riga里加拉脱维亚北纬:56°53‘东经:24°05‘
Rio Branco里奥布兰科巴西南纬:9°59‘西经:67°49‘
Rio de Janeiro里约热内卢巴西南纬:22°54‘西经:43°15‘
Riverside河滨市美国北纬:33°56‘西经:117°23‘
Riyadh利雅得沙特阿拉伯北纬:24°39‘东经:46°44‘
Road Town罗德城英国北纬:18°3‘西经:64°3‘
Rochester罗彻斯特美国北纬:43°12‘西经:77°37‘
Rome罗马意大利北纬:41°52‘东经:12°37‘
Rosario罗萨里奥阿根廷南纬:32°57‘西经:60°4‘
Roseau罗索多米尼克北纬:15°18‘西经:61°23‘
Rotterdam鹿特丹荷兰北纬:51°55‘东经:4°29‘
Ryazan梁赞俄罗斯北纬:54°37‘东经:39°45‘
Sacramento萨克拉门托美国北纬:38°34‘西经:121°28‘
Saint-Denis圣蒂尼斯法国南纬:20°52‘东经:55°28‘
Saint George‘s圣乔治格林纳达北纬:12°04‘西经:61°44‘
Saint Helier圣赫利尔英国北纬:49°11‘西经:2°07‘
Saint John圣约翰加拿大北纬:45°16‘西经:66°03‘
Saint John‘s圣约翰安提瓜和巴布达北纬:17°07‘西经:61°51‘
Saint-Petersburg圣彼得堡俄罗斯北纬:59°55‘东经:30°25‘
Saipan塞班岛美国北纬:15°12‘东经:145°45‘
Salem塞伦美国北纬:44°56‘西经:123°02‘
Salt Lake City盐湖城美国北纬:40°46‘西经:111°52‘
Salta萨尔塔阿根廷南纬:24°47‘西经:65°24‘
Salvador萨尔瓦多巴西南纬:12°58‘西经:38°29‘
Salzburg萨尔茨保奥地利北纬:47°54‘东经:13°03‘
Samara萨马拉俄罗斯北纬:53°1‘东经:50°15‘
San Antonio圣安东尼奥美国北纬:29°25‘西经:98°3‘
San Bernardino圣博娜迪诺美国北纬:34°06‘西经:117°17‘
San Diego圣地亚哥美国北纬:32°43‘西经:117°09‘
San Francisco旧金山美国北纬:37°46‘西经:122°26‘
San Jose圣何塞哥斯达黎加北纬:9°59‘西经:84°04‘
San Jose圣何塞美国北纬:37°2‘西经:121°53‘
San Juan圣胡安波多黎各北纬:18°29‘西经:66°08‘
San Luis Potosi圣路易波托西墨西哥北纬:22°09‘西经:100°59‘
San Marino圣马力诺圣马力诺北纬:43°55‘东经:12°28‘
San Salvador圣萨尔瓦多萨尔瓦多北纬:13°4‘西经:89°1‘
Sana萨那也门北纬:15°23‘东经:44°14‘
Santa Ana圣安那萨尔瓦多北纬:14°西经:89°31‘
Santa Fe圣达菲美国北纬:35°4‘西经:105°57‘
Santiago圣地亚哥智利南纬:33°26‘西经:70°4‘
Santo Domingo圣多明各多米尼加北纬:18°3‘西经:69°57‘
Sao Paulo圣保罗巴西南纬:23°34‘西经:46°38‘
Sao Tome圣多美圣多美和普林西比北纬:0°2‘东经:6°44‘
Sapporo扎幌日本北纬:43°05‘东经:141°21‘
Sarajevo萨拉热窝波黑北纬:43°52‘东经:18°26‘
Saskatoon萨斯卡通加拿大北纬:52°1‘西经:106°4‘
Seattle西雅图美国北纬:47°38‘西经:122°2‘
Semarang三宝垄印度尼西亚南纬:6°58‘东经:110°29‘
Sendai仙台日本北纬:38°16‘东经:140°52‘
Seoul首尔韩国北纬:37°35‘东经:127°03‘
Shanghai上海中国北纬:31°14‘东经:121°27‘
Shenzhen深圳中国北纬:22°39‘东经:114°13‘
Shijiazhuang石家庄中国北纬:38°04‘东经:114°28‘
Sialkot锡亚尔科特巴基斯坦北纬:32°29‘东经:74°35‘
Sian西安中国北纬:34°16‘东经:108°54‘
Singapore新加坡新加坡北纬:1°22‘东经:103°45‘
Singaraja新卡拉雅印度尼西亚南纬:8°06‘东经:115°07‘
Sioux Falls苏福尔斯美国北纬:43°34‘西经:96°42‘
Skopje斯科普里马其顿北纬:41°35‘东经:21°3‘
Sofia索非亚保加利亚北纬:42°43‘东经:23°2‘
St.John‘s圣约翰加拿大北纬:47°34‘西经:52°41‘
St.Louis圣路易斯美国北纬:38°4‘西经:90°15‘
St.Paul圣保罗美国北纬:45°西经:93°1‘
St.Petersburg圣彼得堡美国北纬:27°45‘西经:82°38‘
Stanley斯坦利美国南纬:51°42‘西经:57°52‘
Stockholm斯德哥尔摩瑞典北纬:59°23‘东经:18°
Stockton斯托克顿美国北纬:37°58‘西经:121°18‘
Sucre苏克雷玻利维亚南纬:19°02‘西经:65°16‘
Surabaya苏腊巴亚印度尼西亚南纬:7°14‘东经:112°45‘
Surakarta苏腊卡尔塔印度尼西亚南纬:7°32‘东经:110°5‘
Surat苏拉特印度北纬:21°1‘东经:72°54‘
Surrey萨里加拿大北纬:49°11‘西经:122°51‘
Suva苏瓦斐济南纬:18°08‘东经:178°25‘
Sydney悉尼澳大利亚南纬:33°55‘东经:151°17‘
Szczecin什切青波兰北纬:53°25‘东经:14°32‘
Taegu大丘韩国北纬:35°52‘东经:128°36‘
Taiohae泰奥海伊法国南纬:9°西经:139°3‘
Taipei台北中国北纬:25°02‘东经:121°38‘
Taiyuan太原中国北纬:37°5‘东经:112°3‘
Tallinn塔林爱沙尼亚北纬:59°22‘东经:24°48‘
Tampa坦帕美国北纬:27°58‘西经:82°38‘
Tangier丹吉尔摩洛哥北纬:35°48‘西经:5°45‘
Tangshan唐山中国北纬:39°37‘东经:118°05‘
Tarawa塔拉瓦基里巴斯北纬:1°25‘东经:173°
Tashkent塔什干乌兹别克北纬:41°16‘东经:69°13‘
Tbilisi第比利斯乔治亚州北纬:41°43‘东经:44°48‘
Tegucigalpa特古西加尔巴洪都拉斯北纬:14°05‘西经:87°14‘
Tehran德黑兰伊朗北纬:35°45‘东经:51°3‘
Tel Aviv特拉维夫以色列北纬:32°05‘东经:34°46‘
Ternate特尔纳特印度尼西亚北纬:0°48‘东经:127°23‘
The Settlement新村澳大利亚南纬:10°3‘东经:105°4‘
TheValley瓦利安圭拉岛南纬:18°13‘西经:63°04‘
Thimphu廷布不丹南纬:27°29‘东经:89°4‘
Thiruvananthapuram特里凡得琅印度北纬:8°3‘东经:76°57‘
Tianjin天津中国北纬:39°08‘东经:117°12‘
Tijuana提华纳墨西哥北纬:32°32‘西经:117°01‘
Tirane地拉那阿尔巴尼亚北纬:41°2‘东经:19°48‘
Tokyo东京日本北纬:35°41‘东经:139°44‘
Toledo托莱多美国北纬:41°4‘西经:83°35‘
Topeka托皮卡美国北纬:39°02‘西经:95°41‘
Toronto多伦多加拿大北纬:43°4‘西经:79°22‘
Torshavn托沙芬丹麦北纬:62°01‘西经:6°46‘
Trenton特伦顿美国北纬:40°13‘西经:74°46‘
Tripoli的黎波里利比亚北纬:32°58‘东经:13°12‘
Tsingtao青岛中国北纬:36°04‘东经:120°22‘
Tucson图森美国北纬:32°13‘西经:110°58‘
Tucuman图库曼阿根廷南纬:26°3‘西经:65°2‘
Tunis突尼斯突尼斯北纬:36°47‘东经:10°1‘
Turin都灵意大利北纬:45°04‘东经:7°4‘
Tyumen秋明俄罗斯北纬:57°09‘东经:65°32‘
Ufa乌法俄罗斯北纬:54°45‘东经:55°58‘
Ulaanbaatar乌兰巴托蒙古北纬:47°55‘东经:106°53‘
Unalaska安那拉斯加美国北纬:53°51‘西经:166°43‘
Vadodara巴罗达印度北纬:22°19‘东经:73°14‘
Vaduz瓦杜兹列支敦士登北纬:47°09‘东经:9°31‘
Valletta瓦莱塔马耳他北纬:35°53‘东经:14°31‘
Vancouver温哥华加拿大北纬:49°13‘西经:123°06‘
Varanasi瓦腊纳西印度北纬:25°2‘东经:83°
Vatican City梵蒂冈城梵蒂冈北纬:41°54‘东经:12°27‘
Venice威尼斯意大利北纬:45°26‘东经:12°2‘
Veracruz韦拉克鲁斯墨西哥北纬:19°11‘西经:96°1‘
Victoria维多利亚加拿大北纬:48°25‘西经:123°21‘
Victoria维多利亚塞舌尔南纬:4°4‘东经:55°28‘
Vienna维也纳奥地利北纬:48°13‘东经:16°22‘
Vientiane万象老挝北纬:18°01‘东经:102°48‘
Vilnius维尔纽斯立陶宛北纬:54°4‘东经:25°19‘
Virginia Beach弗吉尼亚海滨市美国北纬:36°44‘西经:76°02‘
Visakhapatnam维萨卡帕特南印度北纬:17°42‘东经:83°24‘
Vladivostok符拉迪沃斯托克俄罗斯北纬:43°09‘东经:131°53‘
Warsaw华沙波兰北纬:52°15‘东经:21°
Washington DC华盛顿市美国北纬:38°53‘西经:77°02‘
Wellington惠灵顿新西兰南纬:41°17‘东经:174°47‘
Whitehorse怀特霍斯加拿大北纬:60°41‘西经:135°08‘
Wichita卫奇塔美国北纬:37°43‘西经:97°2‘
Willemstad威廉斯塔德荷兰北纬:12°12‘西经:68°56‘
Windhoek温得和克纳米比亚南纬:22°34‘东经:17°06‘
Windsor温泽加拿大北纬:42°18‘西经:83°01‘
Winnipeg温尼伯加拿大北纬:49°53‘西经:97°1‘
Wroclaw弗罗茨瓦夫波兰北纬:51°05‘东经:17°
Wuhan武汉中国北纬:30°35‘东经:114°19‘
Yakutsk雅库茨克俄罗斯北纬:62°1‘东经:129°51‘
Yamoussoukro亚穆苏克罗科特迪瓦北纬:6°51‘西经:5°18‘
Yangon仰光缅甸北纬:16°46‘东经:96°09‘
Yaounde雅温得喀麦隆北纬:3°51‘东经:11°31‘
Yaren亚伦瑙鲁南纬:0°32‘东经:166°55‘
Yekaterinburg叶卡捷琳堡俄罗斯北纬:56°52‘东经:60°35‘
Yellowknife耶洛奈夫加拿大北纬:62°3‘西经:114°29‘
Yerevan耶烈万亚美尼亚共北纬:40°1‘东经:44°31‘
Yokohama横滨日本北纬:35°27‘东经:139°39‘
Yuzhno-Sakhalinsk南萨哈林斯克俄罗斯北纬:46°58‘东经:142°44‘
Zagreb萨格勒布克罗地亚北纬:45°49‘东经:15°58‘
Zhengzhou郑州中国北纬:34°35‘东经:113°38‘
Zibo淄博中国北纬:36°5‘东经:118°
Zurich苏黎世瑞士北纬:47°22‘东经:8°32‘



色彩搭配

色彩搭配速成!3个实用方法帮你全面搞定配色 

2014/12/02 推荐: 程远

色彩搭配速成!3个实用方法帮你全面搞定配色

编者按:最值得收藏的色彩设计方法!色彩搭配是一门花样繁多的学问,但任天下奇招再多,独孤九剑总有破法,今天阿里的同学这篇色彩设计方法,仅有简单3大类,但囊括了众多顶尖的配色技巧,不可多得的集大成篇,别错过咯。

为什么要整理设计色彩方法?

在色彩设计应用中,我们对颜色不同程度的理解,影响到设计页面的表现,熟练地运用色彩搭配,设计时岂不事半功倍。一张优秀的设计作品,它的色彩搭配必定和谐得体,令人赏心悦目,反思我们在设计过程中,怎样的色彩搭配更容易达到设计目的,又是什么影响了我们的配色思维呢?

以下几点常会影响色彩搭配思维:

1. 仅关注色彩表象

2. 搭配方法不够系统

3. 色彩与构成掌握不到位

首先,我们简单理解一下色相和色调概念:

色彩搭配速成!3个实用方法帮你全面搞定配色

接下来我们按三个大类的配色方法,结合一些案例,分析色彩在页面中的应用手法。

色彩搭配速成!3个实用方法帮你全面搞定配色

一、色相差而形成的配色方式

1.1 有主导色彩配色

这是由一种色相构成的统一性配色。即由某一种色相支配、统一画面的配色,如果不是同一种色相,色环上相邻的类似色也可以形成相近的配色效果。当然,也有一些色相差距较大的做法,比如撞色的对比,或者有无色彩的对比,但这里先讲述带主导色的配色案例。

根据主色与辅色之间的色相差不同,可以分为以下各种类型:

1.1-1  同色系主导

1.1-2  邻近色主导

1.1-3  类似色主导

1.1-4  中差色主导

1.1-5  对比色主导

1.1-6  中性色主导

1.1-7  多色搭配下的主导

...
1.1-1 同色系配色

同色系配色是指主色和辅色都在统一色相上,这种配色方法往往会给人页面很一致化的感受。

色彩搭配速成!3个实用方法帮你全面搞定配色

twitter的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

整体蓝色设计带来统一印象,颜色的深浅分别承载不同类型的内容信息,比如信息内容模块,白色底代表用户内容,浅蓝色底代表回复内容,更深一点的蓝色底代表可回复操作,颜色主导着信息层次,也保持了twitter的品牌形象。

观点:颜色差分割页面层次和模块,并代表不同功能任务属性。

多有范儿的色带,想自己来一个吗?看教程!《配色弱有救了!教你利用图片创建独有的色彩方案!》

1.1-2 邻近色配色

近邻色配色方法比较常见,搭配比同色系稍微丰富,色相柔和过渡看起来也很和谐。

色彩搭配速成!3个实用方法帮你全面搞定配色

ALIDP的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

纯度高的色彩,基本用于组控件和文本标题颜色,各控件采用邻近色使页面不那么单调,再把色彩饱和度降低用于不同背景色和模块划分。

观点:基于品牌色的邻近色运用,灵活运用到各类控件中。

1.1-3 类似色配色

类似色配色也是常用的配色方法,对比不强给人色感平静、调和的感觉。

色彩搭配速成!3个实用方法帮你全面搞定配色

BENMAPT的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

红黄双色主导页面,色彩基本用于不同组控件表现,红色用于导航控件、按钮和图标,同时也作辅助元素的主色。利用偏橙的黄色代替品牌色,用于内容标签和背景搭配。

观点:基于品牌色的类似色运用,有主次地用到页面各类控件和主体内容中。

想用红色玩出花样?来看顶尖设计师的杰作!《洒一腔热血!35个热烈奔放的红色色调网站设计》

1.1-4 中差色配色

中差色对比相对突出,色彩对比明快,容易呈现饱和度高的色彩。

色彩搭配速成!3个实用方法帮你全面搞定配色

颜色深浅营造空间感,也辅助了内容模块层次之分,统一的深蓝色系运用,传播品牌形象。中间色绿色按钮起到丰富页面色彩的作用,同时也突出绿色按钮任务层级为最高。深蓝色吊顶导航打通整站路径,并有引导用户向下阅读之意。

观点:利用色彩对比突出按钮任务优先级,增加页面气氛。

1.1-5 对比色配色

主导的对比配色需要精准地控制色彩搭配和面积,其中主导色会带动页面气氛,产生激烈的心理感受。

色彩搭配速成!3个实用方法帮你全面搞定配色

YouTube的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

红色的热闹体现内容的丰富多彩,品牌红色赋予组控件色彩和可操作任务,贯穿整个站点的可操作提示,又能体现品牌形象。红色多代表导航指引和类目分类,蓝色代表登录按钮、默认用户头像和标题,展示用户所产生的内容信息。

观点:红蓝色反应不同交互和信息的可操作性,针对系统操作和用户操作的区分。

1.1-6 中性色配色

用一些中性的色彩作为基调搭配,常应用在信息量大的网站,突出内容,不会受不必要的色彩干扰。这种过配色比较通用,非常经典。

色彩搭配速成!3个实用方法帮你全面搞定配色

Bechan的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

黑色突出网站导航和内容模块的区分,品牌蓝色主要用于可点击的操作控件,包括用户名称、内容标题。相较于大片使用品牌色的手法,更能突出内容和信息,适合以内容为王的通用化、平台类站点。

观点:利用大面积中性色作为主导色,品牌色在这里起到画龙点睛的作用,用于一些需要重点突出的场景,强调交互的状态等。

1.1-7 多色搭配下的主导

主色和其他搭配色之间的关系会更丰富,可能有类似色、中差色、对比色等搭配方式,但其中某种色彩会占主导。

色彩搭配速成!3个实用方法帮你全面搞定配色

Google的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

对于具有丰富产品线的谷歌来说,通过4种品牌色按照一定的纯度比,再用无色彩黑白灰能搭配出千变万化的配色方案,让品牌极具统一感。在大部分页面,蓝色会充当主导色,其他3色作辅色并设定不同的任务属性,黑白灰多作为辅助色,对于平台类站点来说,多色主导有非常好的延展性。

观点:谷歌设置了四种品牌色,通过主次、合理的比例应用在界面中,并通过组控件不同的交互状态合理分配功能任务。

谷歌的经典色彩搭配,一直延续到各类产品中,比如这家:《能过稿的LOGO!谷歌设计师如何为Squared做品牌重设计》

二、色调调和而形成的配色方式

2.1 有主导色调配色

这是由同一色调构成的统一性配色。深色调和暗色调等类似色调搭配也可以形成同样的配色效果。即使出现多种色相,只要保持色调一致,画面也能呈现整体统一性。

根据色彩的情感,不同的调子会给人不同的感受:

2.1-1  清澈的色调

2.1-2  阴暗的色调

2.1-3  明亮色调

2.1-4  深暗色调

2.1-5  雅白色调

...

2.1-1 清澈色调

色彩搭配速成!3个实用方法帮你全面搞定配色

SHOTFOLIO的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

清澈调子使页面非常和谐,即使是不同色相形同色调的配色能让页面保持较高的协调度。蓝色另页面产生安静冰冷的气氛,茶色让我们想起大地泥土的厚实,给页面增加了稳定踏实感觉,同时暖和蓝色的冰冷。

观点:互补的色相搭配在一起,通过统一色调的手法,可以缓和色彩之间的对比效果。

2.1-2 阴暗色调

色彩搭配速成!3个实用方法帮你全面搞定配色

概念应用的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

阴暗的色调渲染场景氛围,通过不同色相的色彩变化丰富信息分类,降低色彩饱和度使各色块协调并融入场景,白色和明亮的青绿色作为信息载体呈现。

Tips:多色彩经过统一色调处理,区域间非常协调,也不影响整体页面阴暗气氛表现。

2.1-3 明亮色调

色彩搭配速成!3个实用方法帮你全面搞定配色

Kids plus的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

明亮的颜色活泼清晰,热闹的气氛和醒目的卡通形像叙述着一场庆典,但铺满高纯度的色彩,过于刺激,不适宜长时间游览。

观点:饱和度与纯度特性明显的搭配,在达到视觉冲击力的同时,可适当采用对比色或降低明度等方法调和视觉表现。

2.1-4 深暗色调

色彩搭配速成!3个实用方法帮你全面搞定配色

LEES FERRY的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

页面以深暗偏灰色调为主,不同的色彩搭配,像在叙述着不同的故事,白色文字的排版,整个页面显得厚重精致,小区域微渐变增加版面质感。

观点:以低暗色调构成整体画面氛围,小面积明亮部分不会影响整体感觉。

2.1-5 雅白色调

色彩搭配速成!3个实用方法帮你全面搞定配色

Very的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

柔和的调子使页面显得明快温暖,就算色彩很多也不会造成视觉负重。页面的同色调搭配,颜色作为不同模块的信息分类,不抢主体的重点,还能衬托不同类型载体的内容信息。

观点:同色调不同色彩的模块,就算承载着不同的信息内容也能表现很和谐。

2.2 同色调配色

这是由同一或类似色调中的色相变化构成的配色类型,与主导色调配色中的属于同类技法。区别在于色调分布平均,没有过深或过浅的模块,色调范围更为严格。

色彩搭配速成!3个实用方法帮你全面搞定配色

Tumblr的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

在实际的设计运用中,常会用些更综合的手法,例如整体有主导色调,小范围布局会采用同色调搭配。拿tumblr的发布模块来说,虽然页面有自己的主色调,但小模块使用同色调不同色彩的功能按钮,结合色相变化和图形表达不同的功能点,众多的按钮放在一起,由于同色调原因模块非常稳定统一。

观点:综合运用的情况,整体界面是有主导色调,在布局例如重点图标等是同色调配色灵活运用。

2.3 同色深浅搭配

这是由同一色相的色调差构成的配色类型,属于单一色彩配色的一种。 与主导色调配色中的同色系配色属于同类技法。从理论上来讲,在同一色相下的色调不存在色相差异,而是通过不同的色调阶层搭配形成,可以理解为色调配色的一种。

色彩搭配速成!3个实用方法帮你全面搞定配色

Genrecolours的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

拿紫色界面来说,利用同一色相通过色调深浅对比,营造页面空间层次。虽然色彩深浅搭配合理,但有些难以区分主次,由于是同一色相搭配,颜色的特性决定着心理感受。

观点:同色深浅配色有着极高的统一性,但有点枯燥。

三、对比配色而形成的配色方式

由于对比色相互对比构成的配色,可以分为互补色或相反色搭配构成的色相对比效果,由白色、黑色等明度差异构成的明度对比效果,以及由纯度差异构成的纯度对比效果。

3.1 色相对比

3.1-1  双色对比

3.1-2 三色对比

3.1-3 多色对比

3.2 纯度对比

3.3 明度对比

....

3.1-1 双色对比

色彩间对比视觉冲击强烈,容易吸引用户注意,使用时经常大范围搭配。

色彩搭配速成!3个实用方法帮你全面搞定配色

VISA的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

VISA是一个信用卡品牌,深蓝色传达和平安全的品牌形象,黄色能让用户产生兴奋幸福感。另外蓝色降低明度后再和黄色搭配,对比鲜明之余还能缓和视觉疲劳。

观点: 不管是整体对比还是局部对比,对比色给人强烈的视觉冲击,结合色彩心理学对品牌传达效果更佳。

3.1-2 三色对比

三色对比色相上更为丰富,通过加强色调重点突出某一种颜色,且在色彩面积更为讲究。

色彩搭配速成!3个实用方法帮你全面搞定配色

NAVER的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

大面积绿色作为站点主导航,形象鲜明突出。使用品牌色对应的两种中差色作二级导航,并降低其中一方蓝色系明度,再用同色调的西瓜红作为当前位置状态,二级导航内部对比非常强烈却不影响主导航效果。

观点: 三色对比中西瓜红作为强调色限定在小面积展现非常关键,面积大小直接影响画面平衡感。

3.1-3 多色对比

多色对比给人丰富饱满的感觉,色彩搭配协调会使页面会非常精致,模块感强烈。

色彩搭配速成!3个实用方法帮你全面搞定配色

Metro的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

Metro风格采用大量色彩,分隔不同的信息模块。保持大模块区域面积相等,模块内部可以细分出不同内容层级,单色模块只承载一种信息内容,配上对应功能图标识别性高。

观点:色彩色相对比、色彩面积对比,只要保持一定的比例关系,页面也能整整有序。

3.2 纯度对比

相对与色相对比,纯度差对比,对比色彩的选择非常多,设计应用范围广泛,可用于一些突出品牌、营销类的场景。

色彩搭配速成!3个实用方法帮你全面搞定配色

PINTEREST的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

页面中心登录模块,通过降低纯度处理制造无色相背景,再利用红色按钮的对比,形成纯度差关系。与色相对比相较,纯色对比冲突感刺激感相对小一些,非常容易突出主体内容的真实性。

观点: 运用对比重要的是对比例的把握,面积、构图、节奏、颜色、位置等一切可以发生变化的元素,形成视觉的强烈冲突。

3.3 明度对比

明度对比接近生活实际反映,通过环境远近、日照角度等明暗关系,设计趋于真实。

色彩搭配速成!3个实用方法帮你全面搞定配色

ARKTIS的案例

色彩搭配速成!3个实用方法帮你全面搞定配色

明度对比够构成画面的空间纵深层次,呈现远近的对比关系,高明度突出近景主体内容,低明度表现远景的距离。而明度差使人注意力集中在高亮区域,呈现出药瓶的真实写照。

观点: 明度对比使页面显得更单纯、统一,而高低明度差可产生距离关系。

总结:

色彩是最能引起心境共鸣和情绪认知的元素,三原色能调配出非常丰富的色彩,色彩搭配更是千变万化。设计配色时,我们可以摒弃一些传统的默认样式,了解设计背后的需求目的,思考色彩对页面场景表现、情感传达等作用,从而有依据、有条理、有方法地构建色彩搭配方案。


标签:

设计四大基本原则

设计易容术!如何设计一张高品位高水准的海报?

2014/10/27 推荐: 程远

设计易容术!如何设计一张高品位高水准的海报?

编者按:最适合大学生社团的海报教程!今天的教程跟平时不一样,我们从一张糟糕透顶的海报开始,一步一步教你改善它,直到...变成一张特别有设计感的海报。这是一个非常具有可操作性,非常适合零基础新手的设计教程,赶快来近距离感受专业设计师的改善思路吧。

@Simmy小敏 :先祭出设计四大基本原则:

重复,对比,亲密,对齐。

1,重复

设计易容术!如何设计一张高品位高水准的海报?

重复指的是,设计中的视觉要素在整个作品中重复出现。

可不是说放几个一样的小方块就是重复了哦,仔细看上图,颜色重复出现,高度、宽度重复出现,元素间距重复出现,可以预见的是,如果我们在最后再加一个小方块,一定还是同样的颜色、高度、宽度、间距,如果不是为了突出,我们不会引入新的元素。

应用上来说就是,如果我要加一行字,第一反应是,用之前用过的颜色和字体,如果没有确凿的理由,就坚决不出现新的要素。这是设计的克制,也是初学者最最先要学会的一件事!

来我们根据这个原则,对海报进行第一次手术,手术的奥义是——重复。

设计易容术!如何设计一张高品位高水准的海报?

完全按照原海报的意图和内容,将文字提了出来,字体全部用微软雅黑(新手用这个字体没错就是啦),大小和位置也没有改,只是扔掉了花花绿绿的视觉元素(字体样式、大小、行间距),按照重复的原则进行整顿。

什么,一点都不高大上?都说了这是科学!要一步一步来!

2,对比

设计易容术!如何设计一张高品位高水准的海报?

……?

对比指的是,避免页面元素的太过相似,如果元素不相同,那就请深深的不相同。

有重复就一定有对比,重复是基调,对比就是焦点。重复一定要精确,对比一定要大胆。

对比可以有多种方式产生。大字体与小字体,oldstyle与sanserif,粗线条与细线条,冷色与暖色,平滑与粗糙,长宽与高窄,小明与大明(咦?)……等等。

关于字体,有一篇有趣的好文,对理解设计也很有帮助呦:《设计师必看!为什么英文要比中文在设计中显得高大上》

设计易容术!如何设计一张高品位高水准的海报?

正所谓密不透风,疏可跑马,放手去搞不要逃,不强烈的对比宁可不要。

设计易容术!如何设计一张高品位高水准的海报?

好吧其实原本的对比已经很明显了(我指字号),我稍微调整一下,再配张小图,形成图与文的对比。(图是百度来的,百度图片现在很好用哒,还有推荐的是昵图网,设计师标配,不过切记要注意版权问题~)

是不是看着很乱,找来找去找不到想要的信息累觉不爱?不急,下一步。

3,亲密

设计易容术!如何设计一张高品位高水准的海报?

亲密性指的是,物理位置的接近意味着内容的关联,所以要将相关的项目组织在一起

新手的设计总是元素四散,杂乱无章,看似是他们不懂留白的奥义,但实际上是不懂亲密。相关内容得到有效组织,空间自然会空出来,就像Club感觉会场都是人,但要是让他们按照大小个以男左女右前后相隔一臂左右相隔一拳原则立正看齐排排站,我保证还能塞进500人(……我在说什么)。

标题要对应相关文本,图片要响应对应内容,大小层次,尊卑有序,亲密,保证了内容传达的有效性。

设计易容术!如何设计一张高品位高水准的海报?

稍微有点样子了吧~?再来本阶段最后一步。

4,对齐

设计易容术!如何设计一张高品位高水准的海报?

对齐指的是,任何元素都不能在页面上随意安放,每一项都应当与页面上的某个内容存在某种视觉联系。

对齐是地心引力,一根参考线立在那里,就要求所以被选中的元素死死的贴在上面,不允许有一像素的叛离。

同一根参考线意味着某种联系,将依附于它的元素建立起亲密以外的秩序。

由于对齐原则在以上的示范中其实无处不在,我已经默默遵循了(不对其会死晚期),就不再单独示范啦。需要强调的是,在物理位置相聚太远的情况中,要熟练运用辅助元素将不同的对齐联系起来。比如:

设计易容术!如何设计一张高品位高水准的海报?

右边利用辅助线,将上半部分的左对齐与下半部分的右对齐联系起来,使得画面稳定,内容具有连续性。

到现在为止,我们利用设计四项基本原则对海报进行了初步的处理,使其基本达到【及格】标准。

设计易容术!如何设计一张高品位高水准的海报?

这是一个非常具有可操作性,非常适合零基础新手的设计方法,各位切记设计也是门科学,谨记原则多加练习才是正道哦~~

当然,最后这张成果仅仅是初步处理,完全算不上高品位也完全算不上优秀,颜色上氛围上,字体的考究选择上依然有非常大的改进空间,但是路要一步一步走嘛,由于时间(拖延)和精力(太懒)原因,我下次再慢慢写:)

对了,以上理论基础均来自于《写给大家看的设计书》,此书深入浅出,例证丰富,居家旅行必备良品,每次公司的产品GG问我怎么提高设计审美时,我都首推这本书。PS:不光是新手,好多设计专业的同学们,也真的需要看一看了……



设计师的美术基础

超全面!设计师必须了解的美术基础 

2018/05/08 编辑: 程远作者: 郗鉴


编者按:文章总结了想要提高审美和设计感,设计师必须要了解的美术基础。

一、美术的重要性

任何类别的设计师都需要有一定的美术基础,甚至也要有一定的手绘能力。我们在用电脑设计图形的时候其实也潜移默化地在使用我们储存在大脑中的美术知识和审美,即使再先进的人工智能,也不能代替设计师的审美和美术知识。说到底软件仅仅是工具而已,要想提高你图形的审美和设计感,那么就需要补一下美术基础的课了。手绘在互联网设计中占的比重也在逐渐增多,对于我们 UI 设计师来说手绘也成为一个绕不过去的技能,但是不要紧张,我们不需要成为手绘大神或者插画师,只需要掌握一定的美术知识再加练习即可。那么如果我们掌握了美术知识并可以画出还可以的画,对我们会有什么好处呢?

超全面!设计师必须了解的美术基础

△ 「Outlaws」Playing Cards by Mike

1. 美术在草稿中的优势

在作品创作的初期,草稿对我们构思起了很关键的作用。比如在 APP 项目、运营图、图标绘制以及一些图形化的设计中,首先很多设计师会打开电脑直接开始作图,然后就陷入了对工具选择的困惑中:我是该用钢笔工具勾形状还是用画笔工具呢。不要纠结这些,你只要拿出纸笔,手绘出脑海中思考的图形就好了。等草图完成后,再打开电脑完善这个作品。

超全面!设计师必须了解的美术基础

△ 「Outlaws」Playing Cards by Mike

2. 美术在提案中的优势

在提案之前通过手绘将自己的想法画出来,和上司或者客户讲解自己的提案方向,这种方法会避免上司对电脑图形设计细节的不满意,毕竟我们还没时间完成细节。如配图中的一个图标,从最初提案到最终定稿,中间经历20多版的手绘稿件,如果每次提案都是以 PS 输出效果提交,在电脑绘制时要考虑的色彩细节会更多,同时也会浪费大量的时间。

超全面!设计师必须了解的美术基础

△ 手绘完成的原型图 作者:Anne

3. 美术在原型图中的优势

开始视觉设计前,原型图的沟通可以节省双方很多时间。用软件设计出的原型图有些抽象,会让大家不了解具体内容搭配下的情况。而手绘的原型图可以帮助我们有更多的思考,不仅可以用于沟通方案,还可以后期包装展示时放入,让自己的作品区别于他人。

超全面!设计师必须了解的美术基础

△ 手绘风格的运营图设计 作者:valiant_kwok

4. 美术在实际项目中的优势

越来越多的视觉稿都将手绘插画运用在当中,增加视觉冲击感,给用户带来全新的体验。比如 H5、网页、APP 等项目,「walk up」APP 更是运用了大量的插画表现。然而我们浏览某些设计的时候,总会看到并吐槽一些用到烂大街的素材,到了自己工作的时候依然会选择那些素材。再精致的素材有时候不如一些手绘原创的图形,手绘的图形插画能减少素材感,给用户耳目一新的视觉展现。尤其是现在闪屏、弹窗、运营图,手绘图表现形式已经是常态化,它们可能没有很精细,没有很美观,但是很独特、很有氛围感、很吸引眼球。如果你总是运用素材,不如尝试一下自己手绘原创一个图形,这样它的分量与价值会更大。在你尝试手绘之前,让我们先具体了解绘画的一些原理再开始动手吧。

超全面!设计师必须了解的美术基础

△ 手绘在实际项目中的使用 作者:甘地xi

二、三大基本关系

首先我们要了解的是在美术里最重要的三个主要关系,他们是:结构关系、素描关系、色彩关系。

结构关系是物体的透视关系(也就是近大远小的空间关系)和物体的基本结构(可以把一个复杂的物体拆解成基本的圆形、三角形、正方形、长方形等简单容易描绘的结构)等,结构关系是我们如何理解形体的基础。

素描关系主要是研究光影的关系,一个物体在光源下肯定会产生如黑白灰等不同的明暗变化就是素描关系了。素描关系中最重要的就是三大面和五大调,我们下面会详细讲。

色彩关系则是要研究不同的色彩互相融合产生的影响,比如对比色、互补色、邻近色等,两个物体的颜色不一样也会产生环境色、固有色等。

所以我们为了用手绘或者电脑绘图来描绘物体时,可以从这三个关系中来审视对象,就会描绘地更加准确了。

超全面!设计师必须了解的美术基础

1. 结构关系

透视

在结构关系中最重要的知识点就是透视了。透视是绘画理论术语,「透视」(perspective)来源于拉丁文「perspclre」(看透),是一种在平面绘画物体的空间关系的方法。物体由于近大远小的空间关系所以在我们观察者视角就出现了变化,这种变化和空间位置正相关。能够准确描绘出近大远小就能暗示出空间关系了。所以透视是画准结构的必要前提。

灭点

灭点指的是立体图形各条边的延伸所产生的相交点。透视点的消失点。灭点透视中,两条或多条代表平行线线条向远处地平线伸展直至相交的一点。平行的线能在灭点上推进而聚合的原则同样是以肉眼观察到的现象为依据的。

超全面!设计师必须了解的美术基础

△ 灭点

第一种透视:平视

一个物体如果是正面或者没有近大远小的关系,那么该物体横竖对齐即可。

我自己的理解就是,看一个物体,正面去看就是没有透视。和你的视线是平行的,没有任何的偏离。

超全面!设计师必须了解的美术基础

△ 此图中的物体就是平视,没有近大远小

第二种透视:一点透视

一点透视:透视来源于一个点,形状的变化与该点的距离相关。一点透视可以理解为在一个空间内多个物体产生的近大远小的关系。

超全面!设计师必须了解的美术基础

△ 一点透视

第三种透视:两点透视

两点透视:通过两个灭点建立透视。就像我们站在一个比较庞大物体的面前,这个物体的两侧都会产生近大远小的关系。把近大远小的线延伸,它们会相较于视平线上的两个灭点。这就叫两点透视了。

超全面!设计师必须了解的美术基础

△ 两点透视

第四种透视:三点透视

三点透视:通过两个灭点和延长线进行辅助。一个高于观察者的物体除了产生两点透视之外也会在其顶部产生另一个灭点,三个灭点都存在,我们称之为三点透视。

超全面!设计师必须了解的美术基础

△ 三点透视

练习方法:结构素描

结构素描,又称「形体素描」。这种素描的特点是以线条为主要表现手段,不施明暗,没有光影变化,而强调突出物象的结构特征。 以理解和表达物体自身的结构本质为目的,结构素描的观察常和测量与推理结合起来,透视原理的运用自始至终贯穿在观察的过程中,而不仅仅注重于直观的方式。这种表现方法相对比较理性,可以忽视对象的光影、质感、体量和明暗等外在因素。大家可以尝试在纸上绘制主要表现结构的结构素描作为练习。结构素描对于美术基础不好的同学也可以适用。只要用尺子和圆规等工具搭配合适的自动铅即可上手。

超全面!设计师必须了解的美术基础

△ 达芬奇的结构素描练习

超全面!设计师必须了解的美术基础

△ 达芬奇的结构素描练习

2. 素描关系

三大面:黑白灰

有的时候设计师经常会说黑白灰关系,黑白灰关系就是我们要介绍的「三大面」。三大面就是受光程度不同产生的:光打得多就是受光面,光打得少就是侧光面,光由折射或者完全遮住就是背光面了。这么说比较容易理解:就好比是我们的地球,热带地区就是受光面,温带地区就是侧光面,北极南极就是背光面。这与光源的距离和位置有关,越朝向和接近光源越亮。立体形状在光源的照射下都有黑白灰三个面,你可以观察分析一下身边的事物。

超全面!设计师必须了解的美术基础

△ 三大面

五大调:亮面、灰面、明暗交界线、反光、投影

超全面!设计师必须了解的美术基础

△ 五大调:亮面、灰面、明暗交界线、反光、投影

五大调同样是分析光影问题的,通过描绘光影我们可以塑造立体感。五大调是三大面的细分,三大面五大调是我们每位设计师都需要记牢印在心里的,在绘制一些拟物造型或者专题的时候,为了塑造更逼真的感觉,我们必须检查自己的造型有没有三大面五大调。

超全面!设计师必须了解的美术基础

△ 图中图标中的三大面五大调你能分析出来吗?

  • 亮面:受光物体最亮的部分,表现的是物体直接反射光源的部分。
  • 灰面:高光与明暗交界线之间的区域。
  • 明暗交界线:区分亮部与暗部的区域,是物体的结构转折处。明暗交界线不是一条真实的线,但是这个区域一般会决定亮面灰面的势力范围,也跟随着形体来走,所以非常重要。
  • 反光:物体的背光部分受其他物体或物体所处环境的反射光影响的部分。
  • 投影:物体本身遮挡光线后在空间中产生的暗影。

练习方法:黑白素描练习

黑白素描的练习就是我们用铅笔来描绘对象物体的明暗变化。这种素描相较结构素描来说比较难,需要练习上「调子」。调子就是用铅笔排线而产生的明暗,需要一定的技巧。

超全面!设计师必须了解的美术基础

△ 丢勒的素描作品

3. 色彩关系

三原色

三原色是指色彩中不能再分解的三种基本颜色。相互混合可以产生出所有的颜色。黑白灰属于无彩色。色彩三原色是红、黄、蓝。红+黄=橙,黄+蓝=绿,红+蓝=紫。屏幕三原色为红(Red)、绿(Green)、蓝(Blue),也叫色光三原色,是加色模式,相加混合为白色。但是 RGB 依赖于电脑屏幕,不同的电脑由于对色彩值的检测的重现都不一样,所以存在色差。我们家里的彩色电视屏幕就是由这红、绿、蓝三种颜色的小点组成,将这三种颜色按不同比例混合,就可以有千变万化的色彩。

超全面!设计师必须了解的美术基础

△ 屏幕三原色 RGB

印刷三原色为青(Cyan)、品红(Magenta)、黄(Yellow)是减色模式,混合为深灰色,并不能产生黑色,所以在印刷时加上黑色油墨,才能产生纯正的黑,就是 CMYK 颜色模式。

超全面!设计师必须了解的美术基础

△ 印刷三原色

色彩三属性

超全面!设计师必须了解的美术基础

色相:色相就是颜色的样子。就像人的脸一样,都是独一无二的,也就是色彩的相貌。冷色、暖色、中性色,是色彩最突出的特点,简单来说,他决定「是什么颜色」。光谱上的红、绿、蓝等就是不同色彩的色相,黑色为没有色相的中性色。色相在人眼中的不同是光的波长的长短不同所造成的。红色的波长最长,紫色的波长最短。把红、橙、黄、绿、蓝、紫六种颜色和处在它们各自之间的红橙、黄橙、黄绿、蓝绿、蓝紫、红紫这六种中间色作为12色相环。能够使人清楚明了的看出色彩平衡和冷暖色、对比色等。由12色相环也可以衍生出更多的色相环。

亮度:亮度,我的理解是,亮的反义词就是暗,那说明是与颜色的明暗程度有关。色彩的明亮程度,简单来说,就是颜色的从黑到白的变化。亮度最低时是黑色,亮度最高时是白色。颜色深浅的不同程度,与光波的幅度有关,也取决于环境中反射光有多强。亮度高的色彩给人清新、明快的感觉,让人联想到蓝天白云和青春。明度低的色彩给人沉重、稳定、坚硬的感觉,让人联想到石头和钢铁。

饱和度:饱和度,饱和度从字面上的意思来理解,是比较饱和,太饱和可能就会很刺眼,就是与明度有关了。色彩纯粹度,是色彩的纯净程度鲜艳程度,饱和度越低,颜色的色相就越不明显,也与光波的幅度有关,饱和度低的颜色给人一种很灰,不明亮的感觉,饱和度为0的颜色为无彩色,就是黑白灰。在一张图中,饱和度高的地方给人的感觉很靠近,饱和度低的地方给人的感觉很远。高饱和度和低饱和度的色彩都给人坚硬的感觉。

4. 色彩关系

互补色

红+绿+蓝=白色,在色环上相隔180度,是对比最强的色组,在三原色中,这两种相隔180度的色光等量相加会得到白色。经典互补色有黄色和紫色(例如科比的球衣)、黄色和蓝色、红色和绿色。互补色在视觉上给人非常大的冲击力,所以在使用上常给人潮流、刺激、兴奋的感觉。

对比色

指在色环上相距120度到180 度之间的两种颜色。也是两种可以明显区分的色彩,包括颜色三要素的对比、冷暖对比、彩色和消色的对比等等。对比色能使色彩效果表现明显,形式多样,极赋表现力。互补色一定是对比色,但是对比色就不一定是互补色。因为对比色的范围更大,包括的要素更多,例如冷暖对比,明度对比,纯度对比等。

邻近色

相互接近的颜色在色环上的距离相距90度,或者相隔五六个数位的两色。色相相近。冷暖性质相近,传递的情感也较为相似。例如红色、黄色和橙色就是一组邻近色。邻近色表现的情感多为温和稳定,没有太大的视觉冲击。

同类色

色相性质相同,但色度有深浅之分(在色环上相距15度以内的颜色)。

超全面!设计师必须了解的美术基础

△ 色彩关系

5. 固有色、光源色、环境色

了解完基本的色彩知识,我们来简单讲讲色彩和光源的关系。如果想描绘好对象的色彩,那我们必须了解对象的固有色、光源色、环境色以及它们之间的关系和变化。

超全面!设计师必须了解的美术基础

△ Workplace by Igor Kozak for Rocketboy

固有色

最简单的理解是物体本身的颜色。物体的固有色并不存在,在绘画过程中为了观察方便我们常引用 「固有色」这个概念。固有色是指在光源条件下物体占主导地位的色彩,比如红色的罐子、绿色的植物等。

光源色

一切物体只有光源的点亮下才能观察到它的色彩。光源有自然光源(太阳、天光)和人造光源(灯),这些光源都各自具有不同的颜色。太阳光是白的暖色光,月光是偏青的冷色光,阴天更多的是蓝灰色的天光,普通灯光是偏黄色的暖色光。光源的颜色对物体的颜色影响很大,红色的光源下的蓝色物体你觉得会是什么颜色呢?

环境色

物体周围环境的颜色就是环境色。环境色对物体的影响非常大,比如在一个红色背景下的白色石膏方块,由于光源打到红色背景下也会「染」到白色石膏方块身上,产生一种淡红色的色彩。所以我们在电脑作图的时候也要想象环境色的影响。

6. 练习方法:三大构成

三大构成指的是:平面构成、色彩构成、立体构成。三大构成起源于包豪斯学院,一所在设计历史上非常重要的学术机构。三大构成是美术知识过渡到设计领域最重要的一个转折。我们掌握了美术知识并练习了一定的程度后,就可以开始三大构成练习了。

平面构成:什么是画面最小的单位?点、线、面。如果我们从无到有需要构建一个画面而不知所措时,可以尝试用点、线、面来开始。同时也可以尝试用点、线、面来做命题进行设计练习,这都是大多数高等院校对设计专业进行的最有效的训练。

色彩构成:根据我们上文学到的色彩知识,色彩原理、邻近色、对比色、互补色、环境色、固有色等,融入这些知识到一个练习之中。比如用紫色和黄色创作一个对比强烈的画面。这就是色彩构成的练习方法了。

立体构成:通过对比、重复肌理、骨骼等三维空间物体,完成一组设计练习。通常 UI 设计是二维平面的图形设计,立体构成练习可以相对减弱。但是如果你对立体构成比较感兴趣,可以查找相关资料了解。

超全面!设计师必须了解的美术基础

△ Cocktail Hour by Hayden Walker

超全面!设计师必须了解的美术基础

△ The Lamp by MUTI

超全面!设计师必须了解的美术基础

△ Pattern by Steve Wolf

三、色彩心理学

色彩心理学是美术知识学习中非常重要的一部分,它所研究的是色彩通过对人的视觉上的刺激,而引发的人的情感和感官上的变化。通过对色彩的经验积累而变成的对色彩的心理上的逾期感受。在生活中,色彩心理学对人们对颜色的认知有很大的影响。而在生活我们常用「亮不亮」、「艳不艳」、「淡红」、「苹果绿」来形容。如果开一家快餐店,你会用什么颜色作为品牌的主色?为什么交通灯用红色表示停止通行而不是绿色呢?这都是色彩心理学的相关知识。这并不是说色彩本身就具有这些含义和情感,而是我们社会和人为的认知,是关于社会、生活。运用好色彩心理学可以带给用户极佳的视觉体验,影响用户的内心情感和思维,引导用户的感知和行为,并且促进我们自身的发展。

超全面!设计师必须了解的美术基础

△ Personal Website Final Concept by Jamie Syke

黑色:黑色是一种代表品质、权威、稳重、时尚的色彩,同时也含有冷漠、悲伤、防御的消极情感。它是所有色彩中最有力量的,能很快吸引用户的注意力。黑色吸收所有光线而且没有反射,可以说是没有任何光进入视觉,它和白色相反。当你不想引人注目或想专心处理事情时常用。黑色作为一种无彩色,能让和它配合的其他色彩看起来更亮。所以在界面设计中,黑色常与其他色彩搭配,使产品颜色更加亮丽和时尚。即使是和暗色系的色彩相搭配也会很好看。黑+红很引人注目,黑+黄活力突出有亮点。黑色也有神秘、科技、稳重的色彩情感,很多科技产品都会使用黑色,或用黑色作为背景色。是一种永远流行的主要色彩。

超全面!设计师必须了解的美术基础

△ Stock Image Website by Anton Chandra

白色:白色是所有可见光进入视觉,包含了光谱中的所有色光的颜色,常被认为「无色」。白色的明度是最高的,并且它没有色相。在 RGB 颜色模式中,红绿蓝混合得到白色。白色传递一种简单、纯真、高雅、精致、信任、开放、干净、畅快、朴素的情感。单一使用白色不会引起任何情感,但是当与其他颜色配合使用时,白色能很好的衬托,大量的留白让其他元素脱颖而出。在界面设计中,作为无彩色的白色,常用于背景色,缓和各种颜色的冲突,以衬托其他色彩,提高画面明度,提高文字可读性。黑色和白色是极端对立的两色,但是黑白搭配总是非常完美,永远都不过时。

超全面!设计师必须了解的美术基础

△ Accessories cards by Nicola Baldo

超全面!设计师必须了解的美术基础

△ 灰色按钮在设计中通常代表不可点击

灰色:灰色是一种代表睿智、老实、执着、严肃、压抑的色彩。颜色介于黑色和白色之间,也属于无彩色,没有色相也没有纯度,只有明度的变换。使用灰色很少会犯严重的错误,它和任何颜色都能很好的搭配,也常常用于背景色或用于突出其他彩色。在画面中,很少出现纯黑,基本都是用深灰色来代替黑色,也可以用浅灰色来代替白色。灰色不像黑色那么坚硬刺眼,它更有弹性,它比黑色更有深层次的力量。在 RGB 模式下,红绿蓝三色数值相等为中性灰,R=G=B=128为绝对中性灰。中性灰图层常用于商业修图,人像精修中调整皮肤质感。

超全面!设计师必须了解的美术基础

△ Video Gallery by Mikha Makhoul

红色:传递喜庆、自信、斗志、权威、性感的情感。红色是最能刺激人视觉的一种颜色,甚至能引起一些生理反应,例如心跳呼吸加快等。容易鼓舞勇气,引起人们的感情波动,引发冲动消费,所以在快餐、电商行业的品牌多使用红色,为的就是触发冲动,引人消费。例如肯德基、京东、小红书。红色的色感温暖,性格刚强外向,同时也容易造成人的视觉疲劳。也是中国备受喜爱被广泛运用的一种传统色彩,代表吉祥、团圆喜庆。同时红色也代表了警示、告诫。所以在界面设计中常用红色的文字和按钮来警示用户慎重操作。

超全面!设计师必须了解的美术基础

△ llustration of web design by Zoeyshen for Radio Design

绿色:是自然界中最常见的颜色,代表生命力、青春、希望、宁静、和平、舒适、安全的情感。绿色是黄色+青色,是冷暖色之间的过渡,他可以是偏向黄色的温暖的黄绿色,也可以是偏向高冷的青色的蓝绿色。所以他很灵活,可以和各种颜色搭配产生不同的感觉,起到平衡和协调的作用。在生活中被广泛运用,例如交通灯和安全出口的颜色。不过绿色的饱和度要好好控制运用,因为高饱和的绿色让人兴奋,让人注意,所以交通灯中绿色代表可以通行。

超全面!设计师必须了解的美术基础

△ Inside Intercom World Tour case study by Frantisek Kusovsky

蓝色:是三原色中的一种,代表永恒、灵性、清新、自由、放松、舒适、宁静、商务。在国外的 APP 中,蓝色最常用。几乎没有人对蓝色反感,蓝色是天的颜色,是海的颜色。深蓝色常常给其他性格活跃极赋表现力的色彩提供一个深远、平静的平台,给人强大而可靠的感觉。被淡化后依然有很强的个性,给人清爽、自由的感觉,这种感觉还能转化为一种信任,吸引人们使用。即使在蓝色中加入少量的其他颜色,也不会对蓝色的性格有多大的影响。可以让人的内心感到平和,有助于人的头脑变得冷静。

超全面!设计师必须了解的美术基础

△ Urban Culture — Presentation Slides by Hrvoje Grubisic

紫色:紫色是一种代表优雅、浪漫、高贵、时尚、神秘、梦幻、灵性、创造性的颜色。是孩子和有创造力的人十分喜欢的颜色。红+蓝=紫,在色盘上位于红色和蓝色之间,是冷暖色的交汇。紫色的明度在所有彩色的颜色中是最低的。与不同的颜色结合会展现出不同的风格特色。紫+粉常用于女性化的产品调性,黄色是紫色的对比色。紫+黑略显沉闷,压抑。紫+白,可以使紫色沉闷的性格消失,变得充满女性的魅力。

超全面!设计师必须了解的美术基础

△ Webdesign by Firman Suci Ananda

黄色:黄色是一种代表阳光、青春、活力、时尚、尊贵、年轻轻快、辉煌、希望的颜色。红色+绿色产生黄色。黄和蓝是互补色。是四个心理学基色之一。黄色的明度极高,极为显眼,尽管在警示效果上没有红色那么明显和强烈,但是还是能给人很醒目和危险的感觉。同时因为过于明亮,也是一种非常难以运用的颜色,性格不稳定常有偏差,和别的颜色配合使用易失去本来的性格。黄+白看起来很刺眼,但是黄+黑很有亮点。例如 ofo 小黄车和站酷都是黄+黑的组合。黄+蓝也很流行,它可以唤醒蓝色的沉静,造成一个高对比度的视觉冲击。在中国古代黄色也有特殊含义,代表着尊贵和权威。明度较低的黄色会显得很脏。

四、极简设计史

做为 UI 设计师,我们必须要了解一些基本的设计历史和美术知识,才能对我们的工作有一个全面的认识。设计史是一个内容非常丰富、知识点复杂的庞大体系。没有投入足够的时间很难学习明白。所以一般人没有太大兴趣去阅读这么长的文章,可是在我们的设计之中往往需要我们明白一些设计风格和设计历史背景。为了解决这件事,我用最简短的方式简洁地介绍设计历史中几个必须了解的阶段,希望能够让大家对设计的历史有大概的了解。

超全面!设计师必须了解的美术基础

1. 设计的工匠时期(Craftsmanship Times)

设计分为很多门类,建筑设计、广告设计、字体设计等,究其历史相当久远。我国的设计可以追溯到公元前221年的秦朝。而在遥远的十九世纪的欧洲,设计并不是阳春白雪与赏心悦目,而是真实的生产力与皇家用来炫耀权势的摆设。就让我们把人类史上工业革命之前的设计统称为工匠时期好了。因为这个时期设计师更接近于能工巧匠。在欧洲,设计在慢慢地走向了更繁琐、更花哨的设计风格。这是由于法国王朝浮夸的要求而来的。法国王朝炫耀自己权势,贪图奢华,诞生了巴洛克风格(Baroque)和洛可可风格(Rococo)这样的复杂风格。没错,现在我们还能偶尔在土豪的家中找到一点巴洛克和洛可可设计风格的影子,我们也有时会设计一些婚纱摄影类网站和公司网站也比较接近这种富丽堂皇的风格。

超全面!设计师必须了解的美术基础

△ 巴洛克风格

巴洛克(Baroque),是一种代表欧洲文化的典型艺术风格。最早来源于葡萄牙语(BARROCO)「不圆的珍珠」,最初特指形状怪异的珍珠。在法语中,「Baroque」成为形容词,有「俗丽凌乱」的意思。作为一种艺术风格,巴洛克最早是在16世纪下半叶在意大利发起的,在17 世纪的欧洲普遍盛行,艺术批评家认为巴洛克是一种堕落瓦解的艺术。

超全面!设计师必须了解的美术基础

△ 洛可可风格

洛可可风格是指18世纪的欧洲,特别是在法国路易十五时期的一种设计风格。路易十五执政后期,宫廷生活糜烂,追求复杂和奢华的生活。更是对这种洛可可风格喜爱有加。洛可可风格的特点就是妩媚和矫揉造作。主要代表人物有华托(Jean Antoine Watteau,1684-1721)、布歇(Francois Boucher,1703-1770)和弗拉戈纳尔(Jean Honorè Fragonard,1732-1806)等。

2. 工艺美术运动(The Arts & Crafts Movement)

18世纪下半叶到19世纪上半叶,工业革命在英国开展,伦敦世界博览会上的新鲜技术让当时的人们大开眼界。于是开办了工厂,产生了资本家和工人阶级......但是我们今天讲的主要是设计,那么设计产生了什么改变呢?就是当年的机器生产做不出来巴洛克和洛可可风格。于是产品设计变得很粗糙,那么艺术家们和设计师们就只能把目光放回以前了。产生了一次「设计还是以前好」的运动,就被叫做工艺美术运动了。工业美术运动中重新重视起了很多例如哥特等风格,并且崇尚手工工艺反对机械生产的产品设计。

超全面!设计师必须了解的美术基础

△ 哥特式建筑风格的教堂

超全面!设计师必须了解的美术基础

△ 哥特风格的暴雪《暗黑破坏神》官网

哥特(Goth)最早是中世纪时期(公元5-15世纪)的艺术风格,以恐怖、超自然、死亡、颓废、巫术、古堡、深渊、黑夜、诅咒、吸血鬼等为元素。哥特式风格用黑暗、恐惧、孤独、绝望的艺术主题。哥特原指哥特人。还有一种说法是 Gothic 源于德语 Gotik ,词源是 Gott 音译「哥特」(意为「上帝」),因此哥特式也可以理解为「接近上帝的」的意思。哥特广泛地运用在当时的建筑、服装、产品设计上,是一种现在看来稍显非主流的形式。

3. 德意志工业同盟(Deutscher Werkbund)

给设计一点时间,设计就会还你一个惊喜。在工艺美术运动和新艺术运动之后,在当时工业革命最领先的德意志,设计师们成立了德意志工业同盟。这时因为工业发展产生出来了一种对繁复和装饰过度的厌恶情绪,当然也是因为当时的机器生产很可能无法把巴洛克和洛可可设计风格演绎的很好。于是以彼得贝伦斯(Peter Behrens)为代表的德国设计师们开始设计了一大批简洁风格的作品。这些作品的审美到今天都影响着我们,你现在肯定更加喜欢宜家、无印良品的简洁设计,而你在家里会发现自己爸爸妈妈总会给电视遥控器套一个洛可可巴洛克风格的套子。而你的审美已经是工业革命之后德意志工业同盟时期就改造好的了。

超全面!设计师必须了解的美术基础

△ 彼得贝伦斯(Peter Behrens)

超全面!设计师必须了解的美术基础

△ 彼得贝伦斯(Peter Behrens)作品

超全面!设计师必须了解的美术基础

△ 彼得贝伦斯(Peter Behrens)作品

超全面!设计师必须了解的美术基础

△ 彼得贝伦斯(Peter Behrens)作品

包豪斯(Bauhaus,1919/4/1—1933/7)1919年的四月一日,在德国魏玛成立了一所专科学院。这所学院也没有持续很久,就爆发了世界大战,于是这所学校就解散了。本来在历史上是一件非常小的事,可是这所学校的光辉一直照亮了人类设计史。它就是包豪斯。

包豪斯的三个精神对今天的界面设计都有影响:

  • 设计是艺术与技术的统一。
  • 设计的目的是人,而不是产品本身。
  • 设计必须遵守自然法则。

这不就是以用户为中心的设计思想吗?包豪斯在互联网还没有出现之前就有这样的原则。在解散后,包豪斯出来的一大批教师和学生逃到了美国、英国等地,为世界设计的发展做出了极大的贡献。比如蒙德里安就是包豪斯建筑学院的老师。

超全面!设计师必须了解的美术基础

△ 包豪斯学院

超全面!设计师必须了解的美术基础

△ 蒙德里安作品

4. 现代主义设计(Modernism Design)

受包豪斯的影响,在一战战后诞生了现代主义设计。二战后也出现了后现代主义设计。但是无论怎样,现代主义设计就是我们目前的设计风格的基石。我们喜欢的苹果电脑、苹果手机、SONY都是现代主义设计风格。这个时期诞生了很多大家,比如柯布西耶(Le Corbusier),密斯凡德罗(Ludwig Mies Van der Rohe),迪特兰姆斯(Dieter Rams),菲利普斯塔克(Philippe Starck)等。

超全面!设计师必须了解的美术基础

△ New York Chair(纽约椅)

超全面!设计师必须了解的美术基础

△ 日本品牌无印良品网站 现代主义设计风格

超全面!设计师必须了解的美术基础

△ 安藤忠雄的建筑作品

超全面!设计师必须了解的美术基础

△ 耐克官网多使用矩形、减少装饰 现代主义设计风格

5. 其他现代风格

虽然我们的时代没有大规模的设计风格变迁了,但是在现代主义之后还出现了后现代风格、解构主义等不同的风格,这些风格与之前历史上的风格交融汇聚,诞生了一个多元化的时代。加上互联网和移动互联网的诞生,设计艺术的风格空前多元化了。

超全面!设计师必须了解的美术基础

△ 拟物风格图标设计

超全面!设计师必须了解的美术基础

△ 乔布斯发布初代 iPhone 搭载了出色的拟物风格设计

拟物风格realism

拟物风格更多的方面是在智能手机流行后才逐渐兴起的。当时手机的图标和界面为了让大众更容易接受一块黑镜上的按钮可以点,往往设计成皮子的质感或者玻璃的质感。这样可以更好地让大家理解这里是可以点击的。拟物风格流行了很长时间,直到大家完全适应了屏幕化的人机交互形式,才觉得这种模拟真实世界的设计有些「多余」和「充满噪音」。但拟物仍然是目前 UI 设计中不可或缺的一个重要风格。

超全面!设计师必须了解的美术基础

△ 扁平化的网页设计

扁平设计风格realism

扁平风格相较拟物风格来说,强调简洁和克制。不允许设计师使用大量的材质和质感,而是用形状和色彩来表达。最初的扁平化要求更为苛刻,只允许纯色和形状。但是由于用户无法接受,后来扁平化的风格演化成了带有一定阴影和渐变的风格。有些人说是微拟物或者微扁平,都可以。其实就是在信息传递上的噪音和表达情感之中取一个中间值。

超全面!设计师必须了解的美术基础

△ 著名的波普艺术作品

波普艺术Pop Art

波普艺术来源于商业美术,特点是将大众文化的一些细节,比如一些名人或者麦当劳爷爷等进行放大和复制。波普艺术于20世纪50年代后期在纽约发展起来,60年代中期,波普艺术代替了抽象表现主义而成为主流的前卫艺术。在日常设计中的运营设计我们也常常见到波普艺术的身影。

超全面!设计师必须了解的美术基础

△ 《攻壳机动队》海报

超全面!设计师必须了解的美术基础

△ 大疆XAdidas 动态海报

超全面!设计师必须了解的美术基础

△ 淘宝新势力周运营图

蒸汽波艺术Vaporwave

蒸汽波普是蒸汽和波普的混合,起源于音乐,并在音频中发扬光大,那它究竟是一种怎样的音乐风格呢? 蒸汽波(Vaporwave),vapor是蒸汽的意思,加上浪的wave组成了一个充满复古强调、妖艳配色的风格。这种风格给人一种复古的潮流感。蒸汽波在中国互联网设计圈很火也很著名,也很受用户喜欢。

超全面!设计师必须了解的美术基础

△ 电影《银翼杀手》概念图

超全面!设计师必须了解的美术基础

△ 香港 - 赛博朋克感觉很强的地区

赛博朋克风 Cyberpunk

赛博朋克(cyberpunk,生化人 cybernetics、朋克 punk 的结合词),是科幻小说的一种风格。现在赛博朋克的情节通常围绕黑客、人工智能及大型企业之间的矛盾开始,背景设在不远的将来的反乌托邦地球。赛博朋克的主题往往是克隆人、生化人等有自我意识以后与人类相同的一些颓废和迷幻的感受。我国的香港和成都的一些建筑因为地貌的原因往往体现出一种后现代的科幻感。很多电影也会来这些城市采风,设计自己的赛博朋克风格。

超全面!设计师必须了解的美术基础

△ 蒸汽朋克风的标志 - 黑死病时期的鸟头面具

蒸汽朋克风 Steampunk

蒸汽朋克是一个合成词,由蒸汽 steam 和朋克 punk 两个词组成。蒸汽自然是代表了以蒸汽机作为动力的大型机械,朋克则是一种边缘文化,蒸汽朋克的作品往往依靠某种假设的新技术,如通过新能源、新机械、新材料、新交通工具等方式,展现一个平行于19世纪西方世界的架空世界观,努力营造它的虚构和怀旧等特点。蒸汽朋克风格略带颓废和黑暗的感受,有些接近刚才介绍过的哥特风格。

超全面!设计师必须了解的美术基础

△ 西班牙设计师 Álvaro Peñalta 的装置作品

超全面!设计师必须了解的美术基础

△ Camille Walala 为伦敦设计节做的空间

超全面!设计师必须了解的美术基础

△ Lee Broom 为英国瓷器品牌 Wedgewood 设计的孟菲斯系列

超全面!设计师必须了解的美术基础

△ 知乎在地铁投放的带有孟菲斯平面设计风格的广告

孟菲斯设计风格 Memphis Style

孟菲斯(Memphis style),是1981年由意大利设计师 Ettore Sottsass 为首集结组成的设计师团体,被称为「孟菲斯集团」。孟菲斯的设计风格颠覆了传统设计观念,将对立的不同元素进行拼接和碰撞,使用明快的色彩和怪诞的元素去表达其极具风格的文化内涵。孟菲斯风格在色彩上打破配色规律,用一些纯度高,颜色亮的色调,尤其是粉红、粉绿等鲜艳的色彩,再加上多样的图形与线条组成设计。孟菲斯设计可以尝试用在互联网运营图中。

6. 设计风格的现状

我们生活的时代是一个艺术繁荣、设计多样的时代。以现代设计为主的品牌例如:无印良品、宜家等已经成为我们生活的必需品了,加之很多不同风格诸如洛可可和巴洛克、哥特等风格的产品,组成了我们生活审美。我们在做设计时甲方或者产品经理总是在提「高端、大气、上档次」,实际上可能是在描绘现代主义设计;「奢华」可能是巴洛克和洛可可的复杂风格。所以下次在他们提设计需求时,不妨和他们讲解一下设计的不同风格和历史,会有需求方更好地表达出他们想说的语言。

美术知识和设计历史非常有意思,希望通过以上的介绍让大家对设计师必须掌握的知识体系产生研究的兴趣。但是知识终归代替不了练习,如果你希望学习手绘,还是得拿起纸和笔去练习。



标签:

运算符

运算符按其功能可分为以下几类:
1、算术运算符(+,-,×,/,%),加,减,乘,除,取余
2、逻辑运算符(&&,||,!),and,or,not,与,或,非
3、关系运算符(>,<,>=,<=),大于,小于,大于等于,小于等于
4、条件运算符(?微笑
表达式为:表达式1?表达式2:表达式3
先求解表达式1,
若其值为真(非0)则将表达式2的值作为整个表达式的取值,
否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。
例如:
(1)max=(a>b)?a:b
就是将a和b二者中较大的一个赋给max。
(2)min=(a<b)?a:b
就是将a和b二者中较小的一个赋给min。

优先级高于赋值、逗号运算符,低于其他运算符。例如:

⑴ m<n ? x : a+3
等价于:(m<n) ?(x) 伤心a+3)
⑵ a++>=10 && b-->20 ? a : b
等价于:(a++>=10 && b-->20) ? a : b
⑶ x=3+a>5 ? 100 : 200
等价于:x= (( 3+a>5 ) ? 100 : 200 )
5、位运算符(~,|,^,&,^~)
6、移位运算符(<<,>>)
7、拼接运算符({ })
8、赋值运算符(=,<=),
9、复合的赋值运算符,又称为带有运算的赋值运算符,也叫赋值缩写。
例如:i=i+j;可表示为 i+=j;这里+=是复合赋值运算符
同样的共有10种这样的运算符,它们是:
+= 加赋值
-= 减赋值
*= 乘赋值
/= 除赋值
%= 求余赋值
&= 按位与赋值
| = 按位或赋值
^= 按位异或赋值
<<= 左移位赋值
>>= 右移位赋值
<> 当右操作数又是一个赋值表达式时,形成多重赋值表达式。例如:
i=j=0; //结果i、j的值都为0
构成复合赋值表达式的一般形式
变量 双目运算符=表达式
它等效于
变量=变量 运算符 表达式
例如:
a+=5 等价于a=a+5
x*=y+7 等价于x=x*(y+7)
r%=p 等价于r=r%p

标签:

随机

随机不只是 Math.random —— 前端噪声应用

腾讯CDC 736阅读 2019-07-18

在了解噪声之前,我对随机的认识,仅仅停留在 Math.random。它很有用,比如 H5 里的简单抽奖程序,或者随机选取一张卡片… 而最近工作中需要实现一些的随机图像效果,让我发现这个函数能做的事十分有限。之后我偶然了解到噪声这一种随机形式,它很完美的解决了我的问题。于是我想写这一篇文章,希望可以让一些前端同学,特别是工作上涉及较多效果还原的前端同学了解噪声,或许在这之后,你会对设计师设计稿上这些随意元素,有更多的想法。

设计师经常会在他们的设计中添加一些随意元素,这是一种很棒的设计技巧。但是对于前端实现来说,这类设计元素的还原大多数情况会让我们感到无能为力,因为基础 Api 提供的都是规律的几何形状(圆,矩形等…),常常最后,这些效果都只好妥协使用切图还原,我们不能做更多优化,更不能通过增加动画表现更多的设计想法,这一直是大多数同学前端还原的空白领域。

 

设计稿中的随意元素

上面这些图片都是从一些真实设计稿中截取的,其中很容易找到我所说的随机元素,它们给设计增添神秘感和科技感,但是它们好像很难用传统的前端设计还原技巧制作。而这些,恰恰非常适合使用噪声来实现。

噪声算法经过多年发展已经非常成熟,而且有很多种分类 Perlin噪声, Simplex噪声,Wavelet噪声,本篇文章里边出现的噪声默认指的是 Perlin 噪声,不会深入介绍具体噪声算法,主要目的是向没有接触过这个领域的前端同学作一个启发式的介绍。

随机的线

先来解决一个简单的问题:画出一根随意的线。这似乎很简单,我们用 Math.random 生成一系列的点,然后把他们连接起来

随机线1

for (let i = 0; i < POINTCOUNT; i++) {   const y = HEIGHT / 2 + (Math.random() - 0.5) * 2 * MAXOFFSET;   const point = {     x: i * STEP,     y   };   POINTS.push(point); } ... ctx.moveTo(POINTS[0].x, POINTS[0].y);  for (let i = 1; i < POINTS.length; i++) {   const point = POINTS[i];   ctx.lineTo(point.x, point.y); } ctx.stroke(); 

 

但是这没有什么特别的,像是刻意画出来的折线图。直线让我们的图像很生硬,下面我们做点小改良,我们在两个随机点间找两个控制点,用贝塞尔曲线再次将随机点连起来:

随机线2

for (let i = 0; i < POINTS.length - 1; i++) {   const point = POINTS[i];   const nextPoint = POINTS[i + 1];    ctx.bezierCurveTo(     controlPoints[i][1].x,      controlPoints[i][1].y,      controlPoints[i + 1][0].x,      controlPoints[i + 1][0].y,     nextPoint.x,     nextPoint.y   ); } ctx.stroke(); 

 

 

这次自然多了,我们这一步做的事情很关键,虽然这不是噪声算法的本身,但是其中的思想是一样的。上面例子的随机点,我们可以理解为随机特征,单个随机特征是没有意义的。之后我们用直线连接起来,它们整体看起来依然没有联系,但是我们将他们平滑地串联起来之后,它们互相之前形成了一个完整的图案,得到了一种自然的随机效果。这也是我学习完噪声的主观理解——噪声主要解决的问题,就是让互不相关的随机特征,产生某种平滑地过渡或联系。

好,到这里我们停下来,想想大自然,放松一下。想想云、河流、山脉… 这些、都是大自然里各种随机事件,日积月累创造出来的。这里的关键,就是“日积月累”,也就是说不会平白无故地出现一片云、不会突然就出现一条河,他们都是一点一点演变而来的,所以在这些随机事件中是“平滑”变换的。

 

柏林噪声

在现代游戏和影视作品中,已经有能力逼真地还原这些自然元素了。它们并不是也不可能使用大量建模软件制作,而是用代码生成的,这里用到的关键技术,就是噪声算法。这种算法重要的部分,就是在随机特征中的插值算法,在随机特征中间的值能平滑过度,以模拟大自然中这种演变的结果。

Ken Perlin 早在1983年正在参与制作迪士尼的动画电影《TRON》,就是为了实现这种自然的纹理效果,提出了 Perlin 噪声,Perlin 噪声很成功,他也因此获得了奥斯卡科技成果奖。

我们上面例子为了在随机特征间平滑过度使用了贝塞尔曲线,而柏林噪声则使用了更加科学复杂的插值方法:

f(t)=t*t*t*(t*(t*6-15)+10) 

有兴趣可以自行查阅其中实现细节。柏林噪声经过发展演变出了很多变形实现,包括后来柏林噪声的优化版本 simplex 噪声,本文侧重于介绍噪声的使用,下文其中一些实现,默认使用就是柏林噪声。

 

噪声函数的使用

噪声函数的使用方法都是接受一个点,然后返回一个 -1 到 1 的结果,随机特征长度单位为 1,所以在使用噪声函数之前,需要注意单位的转换。
比如,你有一个 1000 x 1000 的画布,想要使用噪声对应每个像素的随机值,那就首先就要定义想应用多少个随机方格,如果应用 n x n 个方格,那在获取随机值之前,就需要对坐标进行转换

scale = 1000 / n;  nx = x / scale; ny = y / scale;  pointRandom = noise2D(nx, ny); 

 

js 实现的噪声工具:
https://github.com/josephg/noisejs
https://github.com/jwagner/simplex-noise.js

随机集

噪声接受相同的参数总是能返回相同的结果,所以通常要预设一个随机集,目的就是为了生成固定的随机特征点,然后平滑的随机结果将在这些随机特征点中插值产生。当中的实现不做讨论,有些噪声工具默认已经设置好了一个随机集,也可以自定义不同的种子来生成不同的随机效果,上一个噪声工具 noisejs 可以这样简单定义即可:

noise.seed(Math.random()); 

一维噪声

一维噪声可以这样简单理解,将随机集分配到 x 轴上整数位上,通过平滑插值函数计算连续变换的随机值。这个说法可能和具体 Perlin 噪声不完全一样,但是基本思路可以这样简单理解

一维噪声

简单从结果上来讲就是给定一个坐标,你将得到一个随机值,如果给定连续的坐标,你将可以得到连续的随机值,而不是像 Math.random() 那样得到互不相关的错落的值。

一维噪声示例

下面的例子是使用一维噪声制作的一个鸡蛋的效果,先在圆上取固定的等分的点,它们分别通过 noise 获取到一个随机偏移,然后再结合时间,让偏移随着时间平滑地改变:

https://codepen.io/chiunhauyou/pen/LkjvYw

egg

比如下面这个火的效果,火焰尾部摇曳的效果的偏移,就是一维噪声结合时间偏移实现的

https://codepen.io/gnauhca/pen/wxKMEg

fire

一维噪声这种随时间偏移的效果,还可以通过把时间作为二维噪声函数的 y 参数实现。

二维噪声

二维噪声通过定义一个二维的方格,上一步定义的固定的随机集会被分布在这些方格顶点上,而每一个顶点的随机特征是一个梯度向量,然后,计算方格内的点周围四个顶点到方格内一个点(也就是需要求噪声值的点,下图中黄色的点)的向量,用他们与梯度向量点乘,最后使用插值函数进行插值得到该点对应的随机噪声值。

二维噪声1

下面图像是使用 webGL 应用 2D 噪声函数生成的,白色代表 1,黑色代表 -1,这是 5 * 5 方格的效果。这里不用关心 webgl,我们只要关心如何定义适用自己问题的方格,还有获取对应的连续的随机值。

 

二维噪声2

这里侧重的是介绍噪声使用,具体实现方法可以自己点击下面参考链接了解。使用方法很简单:

// 这里除 100 是为了以一百个像素为单位应用一个噪声方格 let randomValue = noise.simplex2(x / 100, y / 100); 

二维噪声示例

噪声函数获取的随机值就很自由了,它可以用来定义各种你需要的变量,比如下面这个例子,平滑地随机值被用作定义粒子的速度向量从而实现既随机又连续的运动效果:

function calculateField() {   for(let x = 0; x < columns; x++) {     for(let y = 0; y < rows; y++) {       let angle = noise.simplex3(x/20, y/20, noiseZ) * Math.PI * 2;       let length = noise.simplex3(x/40 + 40000, y/40 + 40000, noiseZ) * 0.5;       field[x][y].setLength(length);       field[x][y].setAngle(angle);     }   } }

生成向量一个随机角度,和向量长度,这里使用 simplex3 三维噪声实际上第三个参数是被用作二维的偏移量

https://codepen.io/DonKarlssonSan/pen/aLRVbw

二维噪声示例1

如果保留运动痕迹,则可以得到更炫酷的效果

// 使用半透明清楚画布 function drawBackground(alpha) {   ctx.fillStyle = `rgba(0, 0, 0, ${alpha || 0.07})`;   ctx.fillRect(0, 0, w, h); } 

https://codepen.io/DonKarlssonSan/pen/QqzWYj

二维噪声示例2

二维噪声示例(svg)

通过把几个不同频率的 Perlin 噪声相叠加,这项技术叫做分形噪声,可以实现更多纹理,比如水流,山川。
SVG 中有一个这种噪声的滤镜应用,feTurbulence,对比普通我们熟知的 css 滤镜,它很容易被人忽略,但是它却能实现很多意想不到的效果:

<feTurbulence type="turbulence" baseFrequency="0.01 .1" numOctaves="1" result="turbulence" seed="53" /> 
  • numOctaves 噪声叠加数
  • seed 随机种子
  • type 噪声类型

feTurbulence 实际上是在每个像素上应用得到的噪声值,从而得到颜色值,然后可以结合其他滤镜,将这些随机颜色转换成其他随机表现,如像素偏移,可以使用 feTurbulence 滤镜实现一些自然纹理,还有倒影效果。

feTurbulence 滤镜输出

https://codepen.io/yoksel/pen/yqZYbK

二维噪声示例(svg)

https://wow.techbrood.com/fiddle/31650

二维噪声示例(svg)2

这里的噪声叠加在频率和振幅上有一定的约束,它们是自相似的,参考https://thebookofshaders.com/13

三维噪声

三维噪声实际上就只是在二维噪声基础上又增加一个纬度,定义一个三维的随机顶点集,在三维方格当中的三维坐标,将会对应得到一个噪声值,同样也是连续的。

三维噪声获取的随机值可以转换成一个三维点在其法向向量方向的偏移,从而实现一种随机的起伏变形。在 webGL 当中,这一步这通常在顶点着色器当中完成,顶点着色器会对所有定义的顶点执行:

float addLength = maxLength * cn(normalize(position) * 2.9 + time * 0.9); // 计算随机值 vec3 newPosition = position + normal * addLength; // 转换为法向向量方向上的偏移值 

https://codepen.io/gnauhca/pen/RyNZBx?

三维噪声1

在片元着色器中,则可以应用使用噪声制作纹理:

https://codepen.io/timseverien/pen/bWXvxE

三维噪声2

就像之前提到的噪声被设计出来的一开始的目的,就是应用在影视/游戏作品当中模拟自然效果的,所以,使用 webGL 制作海洋,山川这种效果,也自然不在话下:
https://codepen.io/matikbird/pen/xVvqWQ

三维噪声3

三维噪声4

当然这不仅需要熟练使用噪声,还需要掌握 webGL,虽然一开始我们介绍了噪声在 canvas/svg 中的使用方法,但是,现在 webGL 已经被电脑端手机端浏览器广泛支持,结合 webGL ,噪声能发挥它更大价值。

结语

噪声的应用十分广泛,是图形学领域的重要知识,在三维程序扮演重要的角色。但是噪声不是三维图形领域的专属,学习使用噪声,在 canvas svg css 这些基础的前端技术上应用,也能实现一些意想不到的效果,当某一天设计师又输出了一个类似这种随机特征的效果图,不妨直接找到设计师沟通。说不定这些效果,就是用某个图像处理软件使用噪声生成的。如果获取到生成的参数,在前端也是有可能实现的,通过结合时间偏移,说不定就能实现一个很棒的动画。

参考资料
https://blog.csdn.net/qq_34302921/article/details/80849139
https://codepen.io/DonKarlssonSan/post/particles-in-simplex-noise-flow-field
https://thebookofshaders.com/13/?lan=ch



颜色

以下教程来自于由 Daniel Shiffman 篇写的《 Learning Processing 》(原文英文),并由 Morgan Kaufmann 出版,© 2008 Elsevier Inc。版权所有。此教程由 Kelly Chang 移植成 P5 代码。如果您发现任何错误或有任何评论,请联络我们。

颜色

在数码世界中,当我们要介绍一个颜色时,我们需要有一定的精确度。单纯说 “嘿,你能把那圆形变成蓝绿色吗?” 并不足够。在这,颜色可以被定义为在一个范围内的数字。让我们从最简单的范例开始:黑白色或灰渐色。0 为纯黑色,255 为纯白色。在两者之间任何数字 – 50、87、162、209 等等 – 都是介于黑与白之间的灰色。

grayscale.svg

只要在任何东西被画在画布上之前使用 stroke() 及 fill() 函数,我们能设置任何图形的颜色。我们也能使用 background() 函数来设定窗口的背景颜色。如下范例。

background(255);    // 设置背景颜色为白色
stroke(0);          // 设置外线颜色为黑色
fill(150);          // 设置填充色为灰色
rect(50,50,75,100); // 绘制四方形

使用 noStroke() 及 noFill() 函数将会分别去除外线色灰填充色。我们直觉上可能会以为 “stroke(0) ” 表示没有外线,可是我们必须记得 0 在这并不代表“无”,然而是代表黑色。此外,我们必须记得不要同时去除 noStroke() 及 noFill() 不然不会有任何图形出现在画布上!

以此同时,如果我们绘制两个图形,p5.js 将会使用最近(代码内从上至下)所定义的外线色及填充色值。

RGB 颜色值

您还记得手指绘画吗?选择混合三原色,我们能混合出任何颜色。同时混合所有颜色的结果是个浑浊的褐色。添加越多颜料,给颜色将会变得更暗。数码颜色也是使用三原色的混合来构造新的颜色的,但是它和颜料的混合原理不一样。首先,其原色为:红、绿、蓝(也为 RGB 颜色,Red、Green、Blue)。而当您在混合荧幕上的颜色时,您将混合的是光而不是颜料,因此它的混合原理并不一样。

rgb.jpg

  • 红 + 绿 = 黄
  • 红 + 蓝 = 紫
  • 绿 + 蓝 = 青(蓝绿色)
  • 红 + 绿 + 蓝 = 白
  • 无色 = 黑

这假设所有色颜色都为最亮的亮度,但是您也能同时使用一系列的颜色值,因此一些红加上一些绿再加上一些蓝将等于灰,而一点红加上一点蓝将等于深紫色。虽然这可能需要一点时间来习惯,随着您编程及使用 RGB 颜色值来试验的经验越多,您会对它越熟悉,就如使用您的手指来混合颜色一样。当然您不能单纯说 “混合一些红与一点蓝”,您必须提供确切的数值。就如灰渐值,个别颜色的值也是由介于 0(不使用任何该颜色)与 255(完全使用该颜色)之间,而他们的顺序为红(R)、绿(G)及蓝(B)。通过更多的试验您将会对 RGB 颜色更加熟悉,不过接下来我们将介绍一些使用常用颜色的代码。

颜色透明度

除了个别颜色的红、绿、蓝值之外,我们也能提供多一个可选性的值,此值被称为该颜色的 “alpha” 值。Alpha 代表透明度,当您要绘制多个重叠部分透视的图形时,透明度在这就特别有用。一个图像的 alpha 值有时也会被称为该图像的 “alpha channel”。

我们必须记得像素并不是真的透明的,这单纯是个使用混合颜色所达成的便利错觉。p5.js 在幕后将会使用该颜色的数值再加上一定百分率的另外一个颜色,创作出混合颜色的视觉错觉。(如果您有兴趣编程一个 “粉色镜片”,您可以从这开始。)

Alpha 值也是介于 0 与 255 之间,0 代表完全透明而 255 代表完全不透明。

自定义颜色值范围

介于 0 与 255 之间的 RGB 颜色值并不是 p5.js 唯一定义颜色的方法,事实上,我们能使用多种方法来定义颜色。比如说,您可能比较偏向于使用 0 至 100(如百分比)来定义颜色。为此您可以使用 colorMode().


      colorMode(RGB,100);
      

以上函数表示:“OK,我们要使用红、绿、蓝值来定义颜色。而他们的值将介于 0 至 100 之间。

虽然一般上这么做不会提供任何便利,您可以为个别颜色值提供不同的数值范围:


      colorMode(RGB,100,500,10,255);
      

这时此函数表示:“红色值将会是介于 0 至 100 之间,绿色值将会是介于 0 至 500 之间,蓝色值将会是介于 0 至 10 之间,而 alpha 至将会是介于 0 至 255 之间。

最后,虽然您通常在编程时只需要用到 RGB 色值,您也能使用 HSB(色调、饱和度及亮度)模式来定义颜色。简单来说,HSB 色值使用方法如下:

hsb.png
  • 色调—色调值,默认上介于 0 至 360 之间。
  • 饱和度—该颜色的饱和度,默认上介于 0 至 100 之间。
  • 亮度—该颜色的亮度,默认上介于 0 至 100 之间。

使用函数 colorMode() 您就能设定您自选的数字范围。有些人会比较偏好使用介于 0 至 360 之间的数值来定义色调(就如色轮的 360 度一样)及 0 至 100 之间的数值来定义饱和度及亮度(介于 0% 至 100%)。



颜色模式RGB+HSL+HSB

▶️运行示例代码

RGB原理

RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

RGB是从颜色发光的原理来设定的,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。

红、绿、蓝三个颜色通道每种色各分为256阶亮度,当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0时,是最暗的黑色调;三色灰度都为255时,是最亮的白色调。


HSL原理

HSL色彩模式是工业界的另一种颜色标准,是通过对色相(H)、饱和度(S)、明度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色相,饱和度,明度三个通道的颜色。


HSL的H(hue)分量,代表的是人眼所能感知的颜色范围,这些颜色分布在一个平面的色相环上,取值范围是0°到360°的圆心角,每个角度可以代表一种颜色。色相值的意义在于,我们可以在不改变光感的情况下,通过旋转色相环来改变颜色。在实际应用中,我们需要记住色相环上的六大主色,用作基本参照:360°/0°红、60°黄、120°绿、180°青、240°蓝、300°洋红,它们在色相环上按照60°圆心角的间隔排列。




HSL的S(saturation)分量,指的是色彩的饱和度,它用0%至100%的值描述了相同色相、明度下色彩纯度的变化。数值越大,颜色中的灰色越少,颜色越鲜艳,呈现一种从灰度到纯色的变化。


HSL的L(lightness)分量,指的是色彩的明度,作用是控制色彩的明暗变化。它同样使用了0%至100%的取值范围。数值越小,色彩越暗,越接近于黑色;数值越大,色彩越亮,越接近于白色。



HSB(HSV)原理

HSB又称HSV,表示一种颜色模式:在HSB模式中,H(hues)表示色相,S(saturation)表示饱和度,B(brightness)表示亮度HSB模式对应的媒介是人眼。

色相(H,hue):在0~360°的标准色轮上,色相是按位置度量的。在通常的使用中,色相是由颜色名称标识的,比如红、绿或橙色。黑色和白色无色相。

饱和度(S,saturation):表示色彩的纯度,为0时为灰色。白、黑和其他灰色色彩都没有饱和度的。在最大饱和度时,每一色相具有最纯的色光。取值范围0~100%。

亮度(B,brightness或V,value):是色彩的明亮度。为0时即为黑色。最大亮度是色彩最鲜明的状态。取值范围0~100%。



HSB(HSV)和HSL区别

HSB 和 HSL 在字面意思上是一样的:

H指的是色相(Hue),就是颜色的名称,例如‘红色’、‘蓝色’等。

S指的是饱和度(Saturation),即颜色的纯度。

L(Lightness)和B(Brightness)是明度,颜色的明亮程度。

在原理和表现上,HSL和HSB中的H(色相)完全一致,但二者的S(饱和度)不一样,L和B(明度)也不一样。

HSB中的S控制纯色中混入白色的量,值越大,白色越少,颜色越纯;

HSB中的B控制纯色中混入黑色的量,值越大,黑色越少,明度越高。

HSL中的S和黑白没有关系,饱和度不控制颜色中混入黑白的多寡;

HSL中的L控制纯色中的混入的黑白两种颜色。

实际应用场景中,Photoshop和Affinity Designer的拾色器。两者分别使用了HSB和HSL颜色模型,两个拾色器都是X轴表示饱和度,越往右,饱和度越高;Y轴表示明度,越往上明度越高。



Photoshop的HSB颜色模型拾色器,如下图所示,HSB的B(明度)控制纯色中混入黑色的量,越往上,值越大,黑色越少,颜色明度越高。


如下图所示,HSB的S(饱和度)控制纯色中混入白色的量,越往右,值越大,白色越少,颜色纯度越高。


Affinity Designer的HSL颜色模型拾色器,如下图所示,Y轴明度轴,从下至上,混入的黑色逐渐减少,直到50%位置处完全没有黑色,也没有白色,纯度达到最高。继续往上走,纯色混入的白色逐渐增加,到达最高点为纯白色,明度最高。


HSL和HSB(HSV)最大的差别是对于白色的理解,HSL当L达到最大时是白色,与饱和度S无关,所以可以理解此处的亮度L其实指的是白的量,白的量越多就越白,越亮越白比较像大自然的光。HSB(HSV)饱和度最低的时候是白色。明度B(V)改变只会改变颜色与颜色对比时的明暗关系。所以这里的饱和度S,可以理解为是彩色的量,彩色的量为0了,就自然是白色的。饱和度越高颜色越鲜明。



RGB空间和HSL空间


左为 RGB 空间,右为 HSL 空间


RGB到HSL或HSV的转换



HSL到RGB的转换




HSB(HSV)到RGB转换



HSL/V/B在各种环境下的取值范围






页:  1  2  3  (下一个)
  全部