ES6常用内容

JavaScript 与 ECMAScript 的关系
JavaScript 是 ECMAScript 语法的一种最为流行的具体实现(除此之外比如 Flash 里的 ActionScript 也是一种实现);
JavaScript 有浏览器、Node.js 等多种宿主环境,是一种日常的通称,各种宿主所扩充的 API 有差异,比如浏览器有 document,而 Node.js 有 process,这些在统一语法规范 ECMAScript 中没有规定;
ECMAScript 是ECMA国际组织负责的各种标准之一。

变量声明

  • const:声明一个只读的常量,如果声明的是个对象,是可以改对象的属性,声明后不可以重新赋值
  • let:不允许重复声明,块级作用域,不存在变量提升

数组扩展

遍历

更多遍历方法:对象和数组遍历方法总结

  • includes() 是否包含指定的值

    1
    2
    3
    [1, 2, 3].includes(2)     // true
    [1, 2, 3].includes(4) // false
    [1, 2, NaN].includes(NaN) // true
  • find() 找出第一个符合条件的数组成员

    1
    2
    3
    4
    [1, 5, 10, 15].find(function(value, index, arr) {
    return value > 9;
    })
    //10
  • findIndex() 找出第一个符合条件的数组成员的位置

    1
    2
    3
    4
    [1, 5, 10, 15].findIndex(function(value, index, arr) {
    return value > 9;
    })
    //2
  • for … of 遍历值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
let set = new Set(['red', 'green', 'blue']);
for (let item of set.keys()) {
console.log(item);
}
```

### 复制&合并
- concat()
``` js
//复制用法,不会影响原数组
const a1 = [1, 2];
const a2 = a1.concat();
a2[0] = 2;
console.log( a1 ) // [1, 2]

//合并
const arr1 = ['a', 'b'];
const arr2 = ['c'];
const arr3 = ['d', 'e'];
arr1.concat(arr2, arr3);// ES5
  • …扩展运算符
    1
    2
    3
    4
    5
    6
    7
    8
    //复制,不会影响原数组
    const a1 = [1, 2];
    const a2 = [...a1];//或:const [...a2] = a1;
    a2[0] = 100;
    console.log( "a1=",a1," a2=",a2 )

    // ES6 的合并数组
    [...arr1, ...arr2, ...arr3]

对象扩展

遍历

更多遍历方法:对象和数组遍历方法总结

  • Object.keys(obj)
    Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。

    1
    2
    Object.keys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 })
    //["2", "10", "b", "a"]
  • Reflect.ownKeys(obj)
    Reflect.ownKeys返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。

    1
    Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 })

    首先遍历所有数值键,按照数值升序排列。
    其次遍历所有字符串键,按照加入时间升序排列。
    最后遍历所有 Symbol 键,按照加入时间升序排列。

?.链判断运算符

在读接口时,后端可能会埋个坑,某个对象树给个null,前端没写判断页面就会报错,往往要写长长的判断,爷爷有否?爸爸有否?儿子有否?
如循环时取下面JSON里的 order.hotel.date:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
list: [
{
name: "ken", age: 18, gender: 1,
order: {
shop: [{date: '2020-01-10'}],
hotel: [{date: '2020-01-10'}]
}
},
{name: "blue", age: null, gender: null, order: {shop: [{date: '2020-05-10'}]}},
{name: "jake", age: null, gender: null, order: null}
]
}
{6}
1
2
3
4
5
6
7
8
data.list.forEach((v, i, arr) => {
// console.log(i, v, arr)
//常规写法:
// let orderHotelData = v.order && v.order.hotel && v.order.hotel[0] && v.order.hotel.date || "默认值";
// 链判断写法
let orderHotelData = v.order ?. hotel ?. [0] ?. date || "默认值";
console.log("orderData=", orderHotelData);
});

箭头函数

箭头函数最直观的三个特点:不需要 function 关键字来创建函数,省略 return 关键字,继承当前上下文的 this 关键字。

当函数有且仅有一个参数的时候,是可以省略掉圆括号、{}、return;
不需要参数或需要多个参数,就使用一个圆括号代表参数部分;
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。
箭头函数没有this,不是所有地方都适用箭头函数的,比如定义对象

1
2
3
4
5
6
7
8
9
10
11
var f = v => v;
console.log(f('ken'))

var showName = name => 'hello ' + name
console.log( showName('ken') );

var showName = (name,age) => 'hello ' + name+ ",you age "+ age
console.log( showName('ken', 18) );

var sum = (num1, num2) => { return num1 + num2; }
console.log( sum(10,18) )

Module语法:export和import

  • 当用export default people导出时,就用 import people 导入(不带大括号)
  • 一个文件里,有且只能有一个export default。但可以有多个export。
  • 当用export name 时,就用import { name }导入(记得带上大括号)
  • 当一个文件里,既有一个export default people, 又有多个export name 或者 export age时,导入就用 import people, { name, age }
  • 当一个文件里出现n多个 export 导出很多模块,导入时除了一个一个导入,也可以用import * as example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//全部导入
import people from './example'

//有一种特殊情况,即允许你将整个模块当作单一对象进行导入
//该模块的所有导出都会作为对象的属性存在
import * as example from "./example.js"
console.log(example.name)
console.log(example.age)
console.log(example.getName())

//导入部分
import {name, age} from './example'

// 导出默认, 有且只有一个默认
export default App

// 部分导出
export class App extend Component {};

本节来源:ES6这些就够了 更多Module语法请参考:Module 的语法

Promise

用同步的语法来写异步的代码,读多个接口的优雅写法 :smile:
每一个 Promise 都有一个 .then 方法,这个方法接受两个参数,第一个是处理 resolved 状态的回调,一个是处理 rejected 状态的回调;
在执行完then或catch指定的回调函数以后,都会执行finally方法指定的回调函数,finally方法的回调函数不接受任何参数。

  • 基本用法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    new Promise(function (resolve, reject) {
    setTimeout(function () {
    let n = Math.ceil(Math.random() * 10);
    if (n >= 5) {
    // console.log("resolve...")
    resolve(n);
    } else {
    // console.log("reject...")
    reject(n);
    }
    }, 0);
    }).then(function (v) {
    console.log('then: ',v);
    }).catch(function (error) {
    console.log('catch: ', error);
    }).finally(() => {
    console.log('finally...' );
    });
  • Promise.all()用法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // 所有图片都加载完再添加到页面
    function loadImg(src){
    return new Promise((resolve,reject)=>{
    let img = document.createElement('img');
    img.src = src;
    img.onload = function(){
    resolve(img);
    };
    img.onerror = function(err){
    reject(err);
    };
    });
    }

    function showImgs(imgs){
    imgs.forEach(function(item){
    document.body.appendChild(item);
    });
    }
    Promise.all([
    loadImg('https://upload.jianshu.io/admin_banners/web_images/3995/97984254f407672e5ca56e4aa66ad9e4330e3e0b.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/1250/h/540'),
    loadImg('https://upload.jianshu.io/admin_banners/web_images/3989/986f00c9a5ab4406b143b8985f925258bba06b9d.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/1250/h/540'),
    loadImg('https://upload.jianshu.io/admin_banners/web_images/3990/4a0679fb9dde465cd13797299699be750382b04c.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/1250/h/540')
    ]).then(showImgs);

async和await

1

ES6内容很多,这里只列一些我高频使用的内容
更多内容看阮一峰老师的电子书:
阮老师的开源ES6第三版电子书

HTML表单元素大全

平时用的比较多,以作备用
HTML表单指南

Demo


注册
(只读)
(禁用)

html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<form id="form1" name="form1" method="post" class="formBox">
<fieldset>
<legend>注册</legend>
<div class="formRow">
<label class="formRow_label">用户帐号</label>
<div class="formRow_content">
<input autocomplete="off" type="text">
</div>
</div>
<div class="formRow">
<label class="formRow_label">输入密码</label>
<div class="formRow_content">
<input name="pass" placeholder="请输入密码" type="password">
</div>
</div>
<div class="formRow">
<label class="formRow_label">选择性别</label>
<div class="formRow_content">
<label role="radio"><input id="RadioGroup1_0" name="RadioGroup1" type="radio" value="radio"></label>
<label role="radio"><input id="RadioGroup1_1" name="RadioGroup1" type="radio" value="radio"></label>
</div>
</div>
<div class="formRow">
<label class="formRow_label">兴趣爱好</label>
<div class="formRow_content">
<div role="group">
<label role="checkbox">
<input name="type" type="checkbox" value="听音乐/看电影">听音乐/看电影</label>
<label role="checkbox">
<input name="type" type="checkbox" value="拼图">拼图</label>
<label role="checkbox">
<input name="type" type="checkbox" value="篮球">篮球</label>
<label role="checkbox">
<input name="type" type="checkbox" value="品茶">品茶</label>
</div>
</div>
</div>
<input name="city" type="hidden" value="city">
<div class="formRow">
<label class="formRow_label">上传头像</label>
<div class="formRow_content">
<div class="fileInput"><input multiple type="file"><!--点击这里上传文件--></div>
</div>
</div>
<div class="formRow">
<label class="formRow_label">输入数量</label>
<div class="formRow_content">
<input max="10" min="0" step="1" type="number" value="1">
</div>
</div>

<div class="formRow">
<label class="formRow_label" for="email">输入邮箱</label>
<div class="formRow_content">
<input id="email" name="email" placeholder="请输入邮箱" type="email">
</div>
</div>
<div class="formRow">
<label class="formRow_label">输入链接</label>
<div class="formRow_content">
<input placeholder="请输入链接" type="url">
</div>
</div>
<div class="formRow">
<label class="formRow_label">选择颜色</label>
<div class="formRow_content">
<input placeholder="请选择颜色" type="color">
</div>
</div>
<div class="formRow">
<label class="formRow_label">可选范围</label>
<div class="formRow_content">
<input placeholder="请选择范围" type="range">
</div>
</div>
<div class="formRow">
<label class="formRow_label">出生日期</label>
<div class="formRow_content">
<input placeholder="请选择时间" type="date">
</div>
</div>
<div class="formRow">
<label class="formRow_label" for="id">用户ID</label>
<div class="formRow_content">
<input id="id" name="id" readonly="readonly" value="04D6H89Z">(只读)
</div>
</div>
<div class="formRow">
<label class="formRow_label" for="disabled">禁止输入</label>
<div class="formRow_content">
<input disabled="" id="disabled" name="disabled" placeholder="禁止输入">(禁用)
</div>
</div>
<div class="formRow">
<label class="formRow_label" for="about">自我介绍</label>
<div class="formRow_content">
<textarea autocomplete="off" id="about" name="about" placeholder="多行文本框"></textarea>
<div>
<label><input name="" type="checkbox">接受用户服务协议</label>
</div>
</div>
</div>
<div class="formRow">
<label class="formRow_label"></label>
<div class="formRow_content">
<input type="submit" value="提交">
<input type="reset" value="重置">
<button>返回</button>
</div>
</div>
</fieldset>
<input name="from" type="hidden" id="from" value="baidu">
</form>

scss

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
input, textarea, button {
display: inline-block;
padding: 0 5px;
min-height: 40px;
line-height: 40px;
font-size: 14px;
color: rgba(0, 0, 0, .65);
border-radius: 4px;
transition: all .3s;
vertical-align: middle;
border: 1px solid #d9d9d9;
outline:medium;
}
input[type="file"] {border: none;line-height: 40px;padding: 0;
&:focus{border: 0;}
}
input:focus, textarea:focus {border: 1px solid #40b3ff;box-shadow: 0 0 8px rgba(skyblue, 10)}
fieldset {border: 1px solid $c_eee;border-radius: 5px;margin-bottom: 1em;}
textarea {min-width: 30em;}
label[role="radio"] {margin: 0 10px 0 0;vertical-align: middle;
input {vertical-align: middle;min-height: auto;}
}
input[type="checkbox"] {padding: 0;min-height: auto;margin: 0 5px 0 0;}
label[role="checkbox"] {margin: 0 10px 0 0;}
input[type="submit"], input[type="reset"], button { padding: 0 1em;cursor: pointer;}

.formBox {
* {
box-sizing: border-box;
}
.formRow {
padding: 5px 0;
display: flex;
justify-content: space-between;
.formRow_label {
width: 120px;
line-height: 40px;
}
.formRow_content {
width: calc(100% - 120px)
}
}
}

Grid栅格布局

入门

CSS网格布局是CSS中功能最强大的布局系统。它是一个二维系统,这意味着它既可以处理列又可以处理行,而flexbox很大程度上是一维系统。通过将CSS规则应用于父元素(成为Grid容器)和该元素的子元素(成为Grid Items),可以使用Grid Layout。
Grid做响应式布局时很方便,auto-fit和auto-fill这两个属性不用媒体查询也能达到响应式的效果;
Grid可以理解为Flexbox的升级版,感觉上有点像早期的表格,一个版面划分若干个块;
目前兼容性不是很好,如果要兼容老设备(早期的安卓就不行)要注意了,最好还是用flex,和浏览器一样,老设备都淘汰了,Grid就是主流的用法了。

Grid布局通俗用法:

  • 定义容器display为Grid,定义横线,定义竖线,格子就出来了;
  • 内容要占几个格子,定义内容的起始横竖线就行。

属性

容器这些属性就是定义线条,画线条用的,excel大家都用过的,想像一下都差不多;
画完线条,里面的内容占几个格子,相当于你合并单元格差不多;网格项属性就是干这个的

网格容器(Grid Container) 属性

属性

属性说明

display

grid | inline-grid

首先把容器定义成grid才能生效

grid-template-columns

grid-template-rows

grid-template-areas

grid-template

<track-size> ... | <line-name> <track-size> ...

划分列,可以是长度值,百分比,或者等份网格容器中可用空间(使用 fr 单位)

划分行,同上

<grid-area-name> | . | none | ...


通过引用 grid-area 属性指定的 网格区域(Grid Area) 名称来定义网格模板

grid-template-rows, grid-template-columns, grid-template-areas三个的简写形式

grid-column-gap

grid-row-gap

grid-gap

line-size

网络线的宽度(块与块之间的间隙):列

line-size

网络线的宽度(块与块之间的间隙):行

grid-row-gap,  grid-column-gap

间隙宽度简写

justify-items

align-items

place-items

start | end | center | stretch | space-around | space-between | space-evenly

内轴对齐:横向

内轴对齐:纵向

align-items, justify-items

上面两个的简写形式

justify-content

align-content

place-content

start | end | center | stretch | space-around | space-between | space-evenly

内容的对齐方式:横向

内容的对齐方式:纵向

justify-content, align-content

上面两个的简写形式

grid-auto-columns

<track-size> ...

网格自动列

grid-auto-rows

<track-size> ...

网格自动行

grid-auto-flow

row | column | row dense | column dense

网格自动流

grid

grid-template-rows, grid-template-columns, grid-template-areas, grid-auto-rows, grid-auto-columns, grid-auto-flow

属性的简写

网格项(Grid Items) 属性

属性

属性说明

grid-column-start

grid-column-end

grid-row-start

grid-row-end

<number> | <name> | span <number> | span <name> | auto

列起始轴线值

列结束轴线值

行起始轴线值

行结束轴线值

grid-column

grid-row


grid-column-start + grid-column-end 的简写形式


grid-row-start + grid-row-end 的简写形式

grid-area

grid-area: <name> | <row-start> / <column-start> / <row-end> / <column-end>;

grid-row-start + grid-column-start + grid-row-end + grid-column-end 的简写形式

justify-self


沿着 inline(行)轴线对齐网格项( 相反的属性是 align-self ,沿着 block(列)轴线对齐)。此值适用于单个网格项内的内容。

计算值

除了以前的常规单位:px % em rem vw vh…,Grid提供了一些新的方法和单位来满足需求;

  • repeat( integer,track list)
    重复行和列函数,语法:repeat(&#32;[&#32;<integer&#32;>&#32;|&#32;auto-fill&#32;|&#32;auto-fit&#32;]&#32;,&#32;<track-list>&#32;),repeat(重复次数,重复项)
    示例:

    • grid-template-columns: repeat(3, 33.33%)
    • grid-template-columns: repeat(2, 100px 20px 80px);
    • grid-template-columns: repeat(auto-fill, 100px);
    • grid-template-columns: repeat(4, 10px [col-start] 250px [col-end]) 10px;
  • minmax(min-content,1fr)
    minmax(最小,最大),定义一个大小范围,该范围大于或等于min且小于或等于max。如果max小于min,则max将以min为底(基本上产生minmax(min,min))
    示例:

    • grid-template-columns: 1fr 1fr minmax(200px, 1fr);
  • fr
    比例/倍数,如果两列的宽度分别为1fr和2fr,就表示后者是前者的两倍。
    示例:

    • grid-template-columns: 1fr 1fr;
  • auto-fill自动填充 auto-fit自动调整
    这两个用在repeat()里的,当所有内容总宽比容器宽度大的时候这两家伙没区别,填满空间;
    当所有内容总宽比容器宽度小的时候区别就有了,auto-fill是以minmax的最小宽度来尽量显示更多格子,会留一截空白,auto-fit则是把没分配完的空白再分配给格子,即没有空白了
    示例:

    • grid-template-columns: repeat(auto-fill, minmax(50px, 1fr));
    • grid-template-columns: repeat(auto-fit, minmax(50px, 1fr));

示例

日常用的多的就是,对对齐,划划框,示例的样式用的是SCSS,示例供参考,算是抛砖引玉吧;

对齐

对齐属性和FLEX的差不多

align-items 与 align-content区别
水平对齐 justify-content start 左 center 居中 end 右
垂直对齐 align-content start 顶部 center 居中 end 底部

html
1
2
3
<div class="box">
<div class="item"></div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
.box {
display: grid;
.item {
justify-content: start;//横向左对齐
justify-content: center;//横向居中
justify-content: end;//横向右对齐

align-content: start;//纵向顶部对齐
align-content: center;//纵向居中
align-content: end;//纵向底对齐
}
}

组合排列

兼容性

参考来源:
W3C CSS网格布局
Grid完整指南
网格布局 - mozilla
CSS Grid 布局完全指南(图解 Grid 详细教程)
CSS Grid 网格布局教程-阮一峰

常用插件

以下按用途分类,JQ之类就不列了,开源的代码推动着行业的发展,很多好用的方法后面都会集成一个官方标准

数据交互类

## 效率搬砖 > 框架 & 库 & 插件 & 组件 & 控件 & 扩展 & 脚手架 - [axios入门](axios.md)
  • Moment.js
    Moment.js 是一个解析,验证,操作和显示日期和时间的 JavaScript 类库
    官网
    github

  • Lodash
    是一个一致性、模块化、高性能的 JavaScript 实用工具库,好多方法ES6里有了,过去式的老插件了
    官网
    github

  • validator.js
    github里人气最高的验证插件
    官网
    github

  • validate.js
    这个是原生的javascript表单验证,功能挺强大的,接口也比较全面,压缩后就2KB,超轻量级。
    WEB PC 用:nice validator,WEB APP 用:validate.js
    官网
    github

UI交互类

  • swiper
    Swiper是纯javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。
    Swiper能实现触屏焦点图、触屏Tab切换、触屏多图切换等常用效果。
    Swiper开源、免费、稳定、使用简单、功能强大,是架构移动终端网站的重要选择!
    官网
    swiper in Vue

  • iscrolljs (停更)
    iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件
    github
    iScroll5 API中文版文档

  • colorbox
    一个很好用的jQuery的可自定义弹出插件,从09年更新到16年,做些小网站用JQ时还是挺好的
    官网
    github

### 常用特效 - 写原生插件 - [菜单按钮](./effects/buttom.md)

颜色中英文对照表

红色系
橙色系
黄色系
绿色系
青色系
蓝色系
高端蓝色系
紫色系
粉色系
浅色系
颜色的英文代码对照表全集

红色系颜色的英文和代码
  • darkred

    • darkred
    • #8B0000
    • rgb(139,0,0)
  • firebrick

    • firebrick
    • #B22222
    • rgb(178,34,34)
  • red

    • red
    • #FF0000
    • rgb(255,0,0)
  • indianred

    • indianred
    • #CD5C5C
    • rgb(205,92,92)
  • lightcoral

    • lightcoral
    • #F08080
    • rgb(240,128,128)
  • salmon

    • salmon
    • #FA8072
    • rgb(250,128,114)
  • darksalmon

    • darksalmon
    • #E9967A
    • rgb(233,150,122)
  • lightsalmon

    • lightsalmon
    • #FFA07A
    • rgb(255,160,122)
  • crimson

    • crimson
    • #DC143C
    • rgb(220,20,60)
橙色系颜色的英文和代码
  • tomato

    • tomato
    • #FF6347
    • rgb(255,99,71)
  • orangered

    • orangered
    • #FF4500
    • rgb(255,69,0)
  • coral

    • coral
    • #FF7F50
    • rgb(255,127,80)
  • lightsalmon

    • lightsalmon
    • #FFA07A
    • rgb(255,160,122)
  • darkorange

    • darkorange
    • #FF8C00
    • rgb(255,140,0)
  • orange

    • orange
    • #FFA500
    • rgb(255,165,0)
黄色系颜色的英文和代码
  • peachpuff

    • peachpuff
    • #FFDAB9
    • rgb(255,218,185)
  • papayawhip

    • papayawhip
    • #FFEFD5
    • rgb(255,239,213)
  • moccasin

    • moccasin
    • #FFE4B5
    • rgb(255,228,181)
  • goldenrod

    • goldenrod
    • #DAA520
    • rgb(218,165,32)
  • gold

    • gold
    • #FFD700
    • rgb(255,215,0)
  • khaki

    • khaki
    • #F0E68C
    • rgb(240,230,140)
  • lemonchiffon

    • lemonchiffon
    • #FFFACD
    • rgb(255,250,205)
  • palegoldenrod

    • palegoldenrod
    • #EEE8AA
    • rgb(238,232,170)
  • darkkhaki

    • darkkhaki
    • #BDB76B
    • rgb(189,183,107)
  • yellow

    • yellow
    • #FFFF00
    • rgb(255,255,0)
  • lightgoldenrodyellow

    • lightgoldenrodyellow
    • #FAFAD2
    • rgb(250,250,210)
  • lightyellow

    • lightyellow
    • #FFFFE0
    • rgb(255,255,224)
绿色系颜色的英文和代码
  • darkcyan

    • darkcyan
    • #008B8B
    • rgb(0,139,139)
  • olive

    • olive
    • #808000
    • rgb(128,128,0)
  • olivedrab

    • olivedrab
    • #6B8E23
    • rgb(107,142,35)
  • yellowgreen

    • yellowgreen
    • #9ACD32
    • rgb(154,205,50)
  • darkolivegreen

    • darkolivegreen
    • #556B2F
    • rgb(85,107,47)
  • greenyellow

    • greenyellow
    • #ADFF2F
    • rgb(173,255,47)
  • chartreuse

    • chartreuse
    • #7FFF00
    • rgb(127,255,0)
  • lawngreen

    • lawngreen
    • #7CFC00
    • rgb(124,252,0)
  • darkgreen

    • darkgreen
    • #006400
    • rgb(0,100,0)
  • green

    • green
    • #008000
    • rgb(0,128,0)
  • forestgreen

    • forestgreen
    • #228B22
    • rgb(34,139,34)
  • lime

    • lime
    • #00FF00
    • rgb(0,255,0)
  • limegreen

    • limegreen
    • #32CD32
    • rgb(50,205,50)
  • lightgreen

    • lightgreen
    • #90EE90
    • rgb(144,238,144)
  • palegreen

    • palegreen
    • #98FB98
    • rgb(152,251,152)
  • darkseagreen

    • darkseagreen
    • #8FBC8F
    • rgb(143,188,143)
  • seagreen

    • seagreen
    • #2E8B57
    • rgb(46,139,87)
  • mediumseagreen

    • mediumseagreen
    • #3CB371
    • rgb(60,179,113)
  • springgreen

    • springgreen
    • #00FF7F
    • rgb(0,255,127)
  • mediumspringgreen

    • mediumspringgreen
    • #00FA9A
    • rgb(0,250,154)
  • mediumaquamarine

    • mediumaquamarine
    • #66CDAA
    • rgb(102,205,170)
  • lightseagreen

    • lightseagreen
    • #20B2AA
    • rgb(32,178,170)
  • teal

    • teal
    • #008080
    • rgb(0,128,128)
青色系颜色的英文和代码
  • darkcyan

    • darkcyan
    • #008B8B
    • rgb(0,139,139)
  • cyan

    • cyan
    • #00FFFF
    • rgb(0,255,255)
  • teal

    • teal
    • #008080
    • rgb(0,128,128)
  • lightcyan

    • lightcyan
    • #E0FFFF
    • rgb(224,255,255)
蓝色系颜色的英文和代码
  • deepskyblue

    • deepskyblue
    • #00BFFF
    • rgb(0,191,255)
  • blue

    • blue
    • #0000FF
    • rgb(0,0,255)
  • cyan

    • cyan
    • #00FFFF
    • rgb(0,255,255)
  • aquamarine

    • aquamarine
    • #7FFFD4
    • rgb(127,255,212)
  • turquoise

    • turquoise
    • #40E0D0
    • rgb(64,224,208)
  • mediumturquoise

    • mediumturquoise
    • #48D1CC
    • rgb(72,209,204)
  • aqua

    • aqua
    • #00FFFF
    • rgb(0,255,255)
  • paleturquoise

    • paleturquoise
    • #AFEEEE
    • rgb(175,238,238)
  • lightcyan

    • lightcyan
    • #E0FFFF
    • rgb(224,255,255)
  • darkturquoise

    • darkturquoise
    • #00CED1
    • rgb(0,206,209)
  • cadetblue

    • cadetblue
    • #5F9EA0
    • rgb(95,158,160)
  • powderblue

    • powderblue
    • #B0E0E6
    • rgb(176,224,230)
  • lightblue

    • lightblue
    • #ADD8E6
    • rgb(173,216,230)
  • skyblue

    • skyblue
    • #87CEEB
    • rgb(135,206,235)
  • lightskyblue

    • lightskyblue
    • #87CEFA
    • rgb(135,206,250)
  • steelblue

    • steelblue
    • #4682B4
    • rgb(70,130,180)
  • dodgerblue

    • dodgerblue
    • #1E90FF
    • rgb(30,144,255)
  • lightsteelblue

    • lightsteelblue
    • #B0C4DE
    • rgb(176,196,222)
  • cornflowerblue

    • cornflowerblue
    • #6495ED
    • rgb(100,149,237)
  • royalblue

    • royalblue
    • #4169E1
    • rgb(65,105,225)
  • midnightblue

    • midnightblue
    • #191970
    • rgb(25,25,112)
  • navy

    • navy
    • #000080
    • rgb(0,0,128)
  • darkblue

    • darkblue
    • #00008B
    • rgb(0,0,139)
  • mediumblue

    • mediumblue
    • #0000CD
    • rgb(0,0,205)
  • mediumslateblue

    • mediumslateblue
    • #7B68EE
    • rgb(123,104,238)
高端蓝色系颜色的英文和代码
  • lightgray

    • lightgray
    • #D3D3D3
    • rgb(211,211,211)
  • slategrey

    • slategrey
    • #708090
    • rgb(112,128,144)
  • lightslategrey

    • lightslategrey
    • #778899
    • 211,211,211
  • grey

    • grey
    • #808080
    • rgb(128,128,128)
  • dimgrey

    • dimgrey
    • #696969
    • rgb(105,105,105)
  • darkslategrey

    • darkslategrey
    • #2F4F4F
    • rgb(47,79,79)
  • darkgrey

    • darkgrey
    • #A9A9A9
    • rgb(169,169,169)
  • black

    • black
    • #000000
    • rgb(0,0,0)
  • dimgray

    • dimgray
    • #696969
    • rgb(105,105,105)
  • gray

    • gray
    • #808080
    • rgb(128,128,128)
  • darkgray

    • darkgray
    • #A9A9A9
    • rgb(169,169,169)
  • silver

    • silver
    • #C0C0C0
    • rgb(192,192,192)
  • lightgrey

    • lightgrey
    • #D3D3D3
    • rgb(211,211,211)
  • gainsboro

    • gainsboro
    • #DCDCDC
    • rgb(220,220,220)
  • darkslategray

    • darkslategray
    • #2F4F4F
    • rgb(47,79,79)
  • slategray

    • slategray
    • #708090
    • rgb(112,128,144)
  • lightslategray

    • lightslategray
    • #778899
    • rgb(119,136,153)
紫色系颜色的英文和代码
  • rebeccapurple

    • rebeccapurple
    • #663399
    • rgb(102,51,153)
  • magenta

    • magenta
    • #FF00FF
    • rgb(255,0,255)
  • lavender

    • lavender
    • #E6E6FA
    • rgb(230,230,250)
  • darkslateblue

    • darkslateblue
    • #483D8B
    • rgb(72,61,139)
  • slateblue

    • slateblue
    • #6A5ACD
    • rgb(106,90,205)
  • mediumslateblue

    • mediumslateblue
    • #7B68EE
    • rgb(123,104,238)
  • mediumpurple

    • mediumpurple
    • #9370DB
    • rgb(147,112,219)
  • blueviolet

    • blueviolet
    • #8A2BE2
    • rgb(138,43,226)
  • indigo

    • indigo
    • #4B0082
    • rgb(75,0,130)
  • darkorchid

    • darkorchid
    • #9932CC
    • rgb(153,50,204)
  • darkviolet

    • darkviolet
    • #9400D3
    • rgb(148,0,211)
  • mediumorchid

    • mediumorchid
    • #BA55D3
    • rgb(186,85,211)
  • purple

    • purple
    • #800080
    • rgb(128,0,128)
  • darkmagenta

    • darkmagenta
    • #8B008B
    • rgb(139,0,139)
  • fuchsia

    • fuchsia
    • #FF00FF
    • rgb(255,0,255)
  • violet

    • violet
    • #EE82EE
    • rgb(238,130,238)
  • plum

    • plum
    • #DDA0DD
    • rgb(221,160,221)
  • thistle

    • thistle
    • #D8BFD8
    • rgb(216,191,216 )
  • orchid

    • orchid
    • #DA70D6
    • rgb(218,112,214)
粉色系颜色的英文和代码
  • mediumvioletred

    • mediumvioletred
    • #C71585
    • rgb(199,21,133)
  • deeppink

    • deeppink
    • #FF1493
    • rgb(255,20,147)
  • hotpink

    • hotpink
    • #FF69B4
    • rgb(255,105,180)
  • palevioletred

    • palevioletred
    • #DB7093
    • rgb(219,112,147)
  • pink

    • pink
    • #FFC0CB
    • rgb(255,192,203)
  • lightpink

    • lightpink
    • #FFB6C1
    • rgb(255,182,193)
浅色系颜色的英文和代码
  • whitesmoke

    • whitesmoke
    • #F5F5F5
    • rgb(245,245,245)
  • white

    • white
    • #FFFFFF
    • rgb(255,255,255)
  • snow

    • snow
    • #FFFAFA
    • rgb(255,250,250)
  • mistyrose

    • mistyrose
    • #FFE4E1
    • rgb(255,228,225)
  • seashell

    • seashell
    • #FFF5EE
    • rgb(255,245,238)
  • linen

    • linen
    • #FAF0E6
    • rgb(250,240,230)
  • antiquewhite

    • antiquewhite
    • #FAEBD7
    • rgb(250,235,215)
  • oldlace

    • oldlace
    • #FDF5E6
    • rgb(253,245,230)
  • floralwhite

    • floralwhite
    • #FFFAF0
    • rgb(255,250,240)
  • beige

    • beige
    • #F5F5DC
    • rgb(245,245,220)
  • ivory

    • ivory
    • #FFFFF0
    • rgb(255,255,240)
  • honeydew

    • honeydew
    • #F0FFF0
    • rgb(240,255,240)
  • mintcream

    • mintcream
    • #F5FFFA
    • rgb(245,255,250)
  • azure

    • azure
    • #F0FFFF
    • rgb(240,255,255)
  • aliceblue

    • aliceblue
    • #F0F8FF
    • rgb(240,248,255)
  • ghostwhite

    • ghostwhite
    • #F8F8FF
    • rgb(248,248,255)
  • lavenderblush

    • lavenderblush
    • #FFF0F5
    • rgb(255,240,245)
颜色的英文代码对照表全集
red crimson firebrick darkred
brown maroon sienna saddlebrown
indianred rosybrown lightcoral salmon
darksalmon coral tomato sandybrown
lightsalmon peru chocolate orangered
orange darkorange tan peachpuff
bisque moccasin navajowhite wheat
burlywood darkgoldenrod goldenrod gold
yellow lightgoldenrodyellow palegoldenrod khaki
darkkhaki lawngreen greenyellow chartreuse
lime limegreen yellowgreen olive
olivedrab darkolivegreen forestgreen darkgreen
green seagreen mediumseagreen darkseagreen
lightgreen palegreen springgreen mediumspringgreen
teal darkcyan lightseagreen mediumaquamarine
cadetblue steelblue aquamarine powderblue
paleturquoise lightblue lightsteelblue skyblue
lightskyblue mediumturquoise turquoise darkturquoise
aqua cyan deepskyblue dodgerblue
cornflowerblue royalblue blue mediumblue
navy darkblue midnightblue darkslateblue
slateblue mediumslateblue mediumpurple darkorchid
darkviolet blueviolet mediumorchid plum
lavender thistle orchid violet
indigo darkmagenta purple mediumvioletred
deeppink fuchsia magenta hotpink
palevioletred lightpink pink mistyrose
blanchedalmond lightyellow cornsilk antiquewhite
papayawhip lemonchiffon beige linen
oldlace lightcyan aliceblue whitesmoke
lavenderblush floralwhite mintcream ghostwhite
honeydew seashell ivory azure
snow white gainsboro lightgrey
silver darkgray lightslategray slategray
gray dimgray gray dimgray

内容参考来源:
CSS3颜色表官方链接
现代浏览器支持140种命名颜色
Color Names
颜色的英文和颜色代码表

JavaScript数据类型

Mozilla家的介绍
详细介绍

8种类型

最新的 ECMAScript 标准定义了 8 种数据类型: Boolean、Null、Undefined、Number、BigInt、String、Symbol、Object;

7种原始类型

  • null 空
    Null类型只有一个值: null,反正就是什么都没有
  • undefined 空值
    一个没有被赋值的变量会有个默认值 undefined
  • String 字符串基本类型
    字符串类型用于表示文本数据
  • boolean 布尔值
    布尔表示一个逻辑实体,有两个值:true 和 false。
  • Number 数值基本类型
    在JavaScript中被表示为双精度浮点数。这意味着它们的精度有限。基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(253 -1) 到 253 -1)。除了能够表示浮点数外,还有一些带符号的值:+Infinity,-Infinity 和 NaN (非数值,Not-a-Number)
  • Symbol 独一无二的值 :tada:新加
    ECMAScript 2016新增
  • BigInt 大整数基本类型 :tada:新加
    是JavaScript中的一个新的数字基本(primitive)类型,原始数字类型,可以表示任意精度格式的整数
    介绍1 介绍2

null和undefined的区别
简单点解释就是,JS执行时找不到对象时会返回null,声明对象了没有值时返回undefined 介绍

1
2
console.log( null == undefined )//true
console.log( null === undefined )//false

从上面打印结果可以看出从严格模式上它两不一样

1种引用数据类型

  • Object 对象

    Object、Array、Date、Function、RegExp都是object类型

声明数据类型

  • BigInt,将 n 作为后缀添加到任何整数文字字面量。例如,123 变成 123n。全局 BigInt(number) 函数可以用来将 Number 转换成BigInt;
  • Symbol值通过Symbol函数生成
1
2
3
4
5
6
7
8
9
10
var city = null;
var name = new String;
var age = new Number;
var boy = new Boolean;
var agen = BigInt(18);
var ken = Symbol()
var record = new Object;
var hobby = new Array;
var date = new Date();
var fn = new Function();

判断类型

typeof操作符

typeof操作符返回一个表达式的数据类型的字符串,返回结果为js基本的数据类型,即:number、string、undefined、boolean、object、function,语法为typeof(data) 或 typeof data

1
2
3
4
5
6
7
8
9
10
typeof 1; // number  
typeof " ";//string
typeof true//boolean
typeof undefined//undefined
typeof new Function(); // function
typeof null//object
typeof [] ; //object
typeof {}; //object
typeof new Date(); //object
typeof new RegExp(); //object

Object.prototype.toString.call()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
//判断基本类型
Object.prototype.toString.call(null); //"[object Null]"
Object.prototype.toString.call(undefined); //"[object Undefined]"
Object.prototype.toString.call("abc"); //"[object String]"
Object.prototype.toString.call(123); //"[object Number]"
Object.prototype.toString.call(true); //"[object Boolean]"
//判断原生引用类型
Object.prototype.toString.call( function fn(){} ); //"[object Function]"
Object.prototype.toString.call( new Date() );//"[object Date]"
Object.prototype.toString.call([]); //"[object Array]"
Object.prototype.toString.call(/[hbc]at/gi); //"[object RegExp]"
Object.prototype.toString.call({}); //"[object Object]"
Object.prototype.toString.call(JSON) //"[object JSON]"
1
2
3
4
5
6
7
8
// HTML
<p class='demo'></p>
<p class='demo'></p>
<p class='demo'></p>
<p class='demo'></p>

// js
Object.prototype.toString.call( document.querySelectorAll('p') ) //"[object NodeList]"

instanceof

instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上,返回boolean类型,语法为 o instanceof A

1
2
3
4
5
6
7
8
9
10
11
12
({}) instanceof Object // true
([]) instanceof Array // true
(/aa/g) instanceof RegExp // true
(function(){}) instanceof Function // true

//用于检测构造函数:
function C(){}
function D(){}
var o = new C();
o instanceof C; // true
o instanceof D; // false
o instanceof Object; // true

constructor

constructor 介绍是一种用于创建和初始化class创建的对象的特殊方法,创建的每个函数都有一个prototype(原型)对象,所有原型对象都会自动获得一个constructor(构造函数)属性

这个方法我是没用到过,了解下吧

1
2
3
4
5
6
7
8
9
10
function Person (name, age) {
this.name = name
this.age = age
}
var person = new Person('Jim', 21)
console.log(person)
console.log(Object.keys(person))
console.log(person.__proto__)

console.log( person.constructor === Person ); //true

转换类型

转换为字符串

String(obj) 或者 obj.toString(),或者对象加上空字符串也转成了字符串

1
2
3
4
5
6
7
8
9
typeof String(18) //"string"
typeof Number(18).toString(); //"string"
typeof (18 + "") //"string"
typeof String(false) //"string"
String(new Date()) //"Thu May 21 2020 18:45:08 GMT+0800 (中国标准时间)"

({name:"ken"}).toString(); //"[object Object]"
([1,2]).toString(); //"1,2"
new Date().toString() //返回时间的文本,"Thu May 21 2020 18:56:04 GMT+0800 (中国标准时间)"

转换为数字

1
2
3
4
typeof Number("6") //"number"
Number(false) //返回 0
Number(true) //返回 1
Number(new Date()) //返回一个时间戳 1590058303680

转化为布尔值

1
2
3
4
Boolean(1) //true
Boolean(0) //false
Boolean( null) //false
Boolean( undefined ) //false

总结:
instanceof 和 constructor 平时很少用到,typeof是高频使用,Object.prototype.toString.call()次之

参考来源:
参考1
参考2

Flex布局

Flex 布局


Flex布局是什么?
Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。
注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。

CSS3 Flexbox 布局完全指南

flex布局语法

设置容器:子元素排列

flex-direction:
主轴的方向
row 【默认值】主轴为水平方向,起点在左端
row-reverse 主轴为水平方向,起点在右端
column 主轴为垂直方向,起点在上沿
column-reverse 主轴为垂直方向,起点在下沿
flex-wrap:
换行方式
nowrap 【默认值】不换行
wrap 换行,第一行在上方
wrap-reverse 换行,第一行在下方
flex-flow:
方向和换行的简写
row nowrap flex-flow: flex-direction flex-wrap,默认值为row nowrap
justify-content:
元素的对齐
flex-start 【默认值】左对齐
flex-end 右对齐
center 居中
space-between 两端对齐,项目之间的间隔都相等
space-around 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍
align-items:
交叉轴上如何对齐
stretch 【默认值】如果项目未设置高度或设为auto,将占满整个容器的高度
flex-start 交叉轴的起点对齐
flex-end 交叉轴的终点对齐
center 交叉轴的中点对齐
baseline 项目的第一行文字的基线对齐
align-content:
多根轴线的对齐方式
stretch 【默认值】轴线占满整个交叉轴
flex-start 与交叉轴的起点对齐
flex-end 与交叉轴的终点对齐
center 与交叉轴的中点对齐
space-between 与交叉轴两端对齐,轴线之间的间隔平均分布
space-around 每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍

设置元素自身

order
定义项目的排列顺序。数值越小,排列越靠前,默认为0
flex-grow
定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大
flex-shrink
定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小
flex-basis
定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小
flex
flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
align-self align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

常见布局

水平垂直居中

1
2
3
display: flex;
justify-content: center;
align-items: center;

enter description here

左对齐

1
2
display: flex;
justify-content: flex-start;

右对齐

1
2
display: flex;
justify-content: flex-end;

两端对齐

1
2
display: flex;
justify-content: space-between;

enter description here

普通排列(从左到右折行)

1
2
3
display: flex;
flex-wrap: wrap;
flex-direction: row;

enter description here

两栏布局:左固定,右自适应宽度

右固定也一样,把左设置:flex-grow: 1

1
2
3
4
5
6
7
8
9
10
11
12
.demo-wrap3 {
display: flex;
.left {
width: 100px;
background: #A0DCF7;
}
.right {
flex-grow: 1;
margin-left: 10px;
background: #A0DCF7;
}
}

enter description here

三栏布局:左右固定,中间自适应

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.demo-wrap4 {
display: flex;
.left {
width: 120px;
background: #A0DCF7;
}
.center {
margin: 0 10px;
background: #A0DCF7;
flex-grow: 1;
}
.right {
width: 180px;
background: #A0DCF7;
}
}

enter description here

圣杯布局

1
2
3
4
5
6
7
8
9
<section class="demo-wrap6">
<header>顶部</header>
<main>
<article class="left">左侧</article>
<article class="center">中间</article>
<article class="right">右侧</article>
</main>
<footer>底部</footer>
</section>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.demo-wrap6 {
min-height: 100vh;
display: flex;
flex-direction: column;
text-align: center;
line-height: 50px;

header, footer {flex: 0 0 100px;background-color: #A0DCF7;color: #ffffff;}
main {
background-color: #ffffff;
display: flex;
flex-direction: row;
flex: 1 0 auto;
margin: 10px 0;
.left, .right {flex: 0 0 200px;background-color: #C2E9FA;}
.center {flex: 1 0 auto;background-color: #E2F5FD;}
}
}
@media screen and (max-width: 600px) {
main {
flex-direction: column;
}
.left, .right {
flex: 1 0 auto;
}
.center {
flex: 2 0 auto;
}
.left, .right {
order: 1
}
}

enter description here

瀑布流

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div class="demo-wrap5">
<div class="item"><img src="../public/images/test/pic_1.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_2.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_3.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_7.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_5.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_6.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_7.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_8.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_9.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_10.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_1.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_6.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_5.jpg" alt=""></div>
<div class="item"><img src="../public/images/test/pic_4.jpg" alt=""></div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
.demo-wrap5{
width: 800px;
margin: 0 auto;
column-count: 4;
column-gap: 0;
border: 2px solid #ddd;

.item{
box-sizing: border-box;
break-inside: avoid;
padding: 10px;
}
}

enter description here

HTML5标签大全

HTML5标签大全

  1. 块级元素
  2. 行内元素

块级(block)元素:

  • 总是在新行上开始;
  • 高度,行高以及外边距和内边距都可控制;
  • 宽度缺省是它的容器的100%,除非设定一个宽度;
  • 它可以容纳内联元素和其他块元素。

内联(inline)元素:

  • 和其他元素都在一行上;
  • 高,行高及外边距和内边距不可改变;
  • 宽度就是它的文字或图片的宽度,不可改变;
  • 内联元素只能容纳文本或者其他内联元素。
    参考1
    参考2
    参考3

块级元素

标签 说明
div 文档节
section 文档节
nav 导航
header 页眉
article 文章
aside 文章侧栏
footer 页脚
details 元素的细节
summary details元素可见的标题
dialog 对话框窗口
h1,h2,h3,h4,h5,h6 标题
p 段落
ul 无序列表
ol 有序列表
dir 目录列表
li 项目
dl 列表
dt 列表项目
dd 项目描述
menu 命令的菜单,列表
menuitem 菜单项目
command 命令按钮
form 表单
fieldset 围绕元素的边框(可用于表单内元素分组)
legend 在边框上的标题
select 选择列表(内联元素)
optgroup 组合选择列表选项
option 选择列表选项(也可做datalist选项)
datalist 下拉列表(id要与input中list属性值绑定)
table 表格
caption 表格标题
thead 组合表头内容(th)
tbody 组合主体内容(td)
tfoot 组合表注内容(td)
tr 表格行
th 表头单元格
td 表格单元
col 表格列属性;(空标签)
colgroup 表格格式化列组;
iframe 内联框架
figure 媒介内容分组
figcaption figure标题
map 图像映射
area 图像区域
canvas 图形容器(脚本来绘制图形)
video 视频
source 媒介源
track 文本轨道
audio 声音内容
br 换行(空标签)
hr 水平分割线(空标签)
pre 格式文本
blockquote 块引用
address 文档联系信息
center 居中文本(不赞成使用)
spacer 在水平和垂直方向插入空间(空元素)

行内元素

标签 说明
span 内联容器
abbr 缩写
em 强调
strong 粗体强调
mark 突出显示的文本
b 粗体
i 斜体
bdi 文本方向
bdo 文字方向
big 大字体
small 小字体
sup 上标
sub 下标
del 被删除的文本
strike 删除线
s 删除线
ins 被插入的文本
u 下划线
nobr 禁止换行
wbr 单词换行时机(空标签)
tt 打字机文本
kbd 键盘文本
time 日期/时间
cite 引用
q 短引用(“”)
font 字体设定(不常用)
acronym 缩写(html5不支持)
dfn 字段(不常用)
a 锚点
img 图片
embed 内嵌(空标签)
label input标记(点击文本触发控件)
input 输入框
button 按钮
keygen 生成秘钥(空标签)
textarea 多行文本输入框
output 输出结果
ruby 中文注音
rt 注音
rp 浏览器不支持ruby元素显示的内容
progress 进度条
meter 度量
var 定义变量
code 计算机代码文本
samp 计算机代码样本
select 下拉列表

数组操作总结

总结了日常用到的数组操作方法,包括ES5及ES6的法子
Array对象详细介绍
ES6对数组的扩展

数组添加

unshift(val,val,….)开头添加

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度

1
2
3
4
5
var arr = [1,2,3,4,5]
console.log( arr.unshift('w') )
//6
console.log( arr )
//["w", 1, 2, 3, 4, 5]

push(Object,…) 末尾追加

push()方法可向数组的末尾添加一个或多个元素,并返回新的长度
…是ES6的语法

1
2
3
4
5
6
7
8
9
10
11
var a = [1, 2, 3],
b = [4, 5, 6];

a.push(...b)
//a的值:[1, 2, 3, 4, 5, 6]

Array.prototype.push.apply(a, b)
//a的值:[1, 2, 3, 4, 5, 6]

a.push("a", "b", 6)
//a的值:[1, 2, 3, "a", "b", 6]

数组合并

concat(a,b,…)

concat() 方法用于合并两个或多个数组,返回一个新的数组,被合并的数组数据不变

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
['hello'].concat(['world'])
// ["hello", "world"]

['hello'].concat(['world'], ['!'])
// ["hello", "world", "!"]

[].concat.call({a: 1}, {b: 2})
// [{ a: 1 }, { b: 2 }]

[].concat.call({a: 1}, [2])
// [{a: 1}, 2]

[2].concat({a: 1})
// [2, {a: 1}]

[].concat(['a'],['b','c'])
// ["a", "b", "c"]

数组符号合并

用数组符号包起来也可以合并

1
2
newArr = ["全部", ...a];
//newArr的值: ["全部", 1, 2, 3]

数组删除

pop() 删除并返回最后一个

pop() 方法用于删除并返回数组的最后一个元素

1
2
3
var arr = [1,2,3,4,5]
arr.pop()
//[1, 2, 3, 4]

shift() 删除并返回第一个

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值

1
2
3
var arr = [1,2,3,4,5]
arr.shift()
// ...

清空数组

方式1,splice

1
2
3
var ary = [1,2,3,4];
ary.splice(0);
console.log(ary); // 输出 [],空数组,即被清空了

方式2,length赋值为0

1
2
3
var ary = [1,2,3,4];
ary.length = 0;
console.log(ary); // 输出 [],空数组,即被清空了

方式3,赋值为[]

1
2
var ary = [1,2,3,4];
ary = []; // 赋值为一个空数组以达到清空原数组

tip

  • 设置数组长度
    改变数组长度会改变数据,length设置的小,后面的数据丢掉,如果设置的大,追加空数据,为0就是空数组
    var arr=[1,2,3,4,5];
    arr.length = 2;
    //[1,2]

splice()对数组添加/修改(替换)/删除

warning 常用
splice() 这个语法常用

删除指定位置的值
可以删除任意数量的项,只需要指定2个参数:要删除的第一项的位置和要删除项的项数
语法: arr.splice(起点,长度),如 arr.splice(0,2) 会删除数组中的前两项

1
2
3
var arr = [1,2,3,4,5]
arr.splice(1,3)
//[1, 5]

数组添加、替换
语法:arr.splice(起点,长度为0,需要添加的元素)
提供3个参数:插入起始位置、0(要删除的项数)、要插入的项。 如果要插入多个项,可以再传入第四、第五,一直任意多个项。

1
2
3
var arr = [1,2,3,4,5]
arr.splice(1,0,'abc')
//[1, "abc", 2, 3, 4, 5]
1
2
3
var arr = [1,2,3,4,5]
arr.splice(1,2,'2abc','3abc')
//[1, "2abc", "3abc", 4, 5]

遍历数组

tip
遍历的方法比较多,见:对象和数组遍历方法总结

find()

find()方法用于找出第一个符合条件的数组成员,他的参数是一个回调函数,所有数组成员一次执行这个回调函数,直到找出第一个返回值为true的成员,然后返回该成员,找不到符合条件的就返回undefined

1
2
3
4
[1,5,15,20,25].find((value,index,arr) => {
return value > 20;
})
// 25

findIndex()

与find()类似,不过返回的是成员索引值

1
2
3
4
[5,10,15,20].findIndex((value,index,arr) => {
return value > 10
})
// 2

includes()

includes()用来判断一个字符串或数组是否包含一个指定的值,与indexOf不同的是可以判断元素里NaN
语法: Arr.includes(searchString , position)
searchString:关键字,position:可选,开始搜索的位置(默认为0),position也可以是负数,如:-2则是倒数第二个开始,找到返回true ,如果没有找到返回false;includes()方法区分大小写

1
2
3
4
5
6
7
8
[1, 2, 3].includes(2)
//true

"hello world".includes("o",8)
false

['a', 'b', 'c', 'd', NaN].includes(NaN)
//true

filter()

过滤不需要的数组元素
语法:array.filter(function(currentValue,index,arr), thisValue)

1
2
3
4
5
var testArray=[100,20,50,46,80,95];
testArray.filter((v,i)=>{
return v>=80
});
// [100, 80, 95]

indexOf()

indexOf() 方法可返回数组中某个指定的元素第一次出现的位置,如果在数组中没找到指定元素则返回 -1。

1
2
3
var arr = ["Banana", "Orange", "Apple", "Mango"];
arr.indexOf("Apple");
//3

lastIndexOf()

lastIndexOf()同indexOf方法,只不过返回的是最后出现的位置

1
2
3
var arr = ["Banana", "Orange", "Apple", "Mango", "Apple"];
arr.lastIndexOf("Apple");
//4

$.inArray()

Jquery的$.inArray()函数用于在数组中搜索指定的值,并返回其索引值。如果数组中不存在该值,则返回-1; 和indexOf区别是兼容低版本IE
语法: $.inArray(value,array),value是要查找的值,array是被查找的数组。
简单的数组数据可以,复杂的像数组对象就不好使了(数组对象只能转成字符串再遍历),还是ES6的好使

1
2
3
var array = ["asp.net", "asp.net mvc", "html5", "css3", "jquery", "JavaScript"];
$.inArray("asp.net mvc", array);
//1

数组去重

去重的法子很多,有空了再一一补上,把一些代码多、效率差的去掉

  1. 遍历数组法
    它是最简单的数组去重方法(indexOf方法)
    实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var arr=[2,8,5,0,5,2,6,7,2];
    let unique1 =>(arr){
    var hash=[];
    for (var i = 0; i < arr.length; i++) {
    if(hash.indexOf(arr[i])==-1){
    hash.push(arr[i]);
    }
    }
    return hash;
    }
    unique1(arr)

    // ...
  2. 数组下标判断法
    调用indexOf方法,性能和方法1差不多
    实现思路:如果当前数组的第 i 项在当前数组中第一次出现的位置不是 i,那么表示第 i 项是重复的,忽略掉。否则存入结果数组。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function unique2(arr){
    var hash=[];
    for (var i = 0; i < arr.length; i++) {
    if(arr.indexOf(arr[i])==i){
    hash.push(arr[i]);
    }
    }
    return hash;
    }
    // ...
  3. 排序后相邻去除法
    实现思路:给传入的数组排序,排序后相同的值会相邻,然后遍历排序后数组时,新数组只加入不与前一值重复的值。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function unique3(arr){
    arr.sort();
    var hash=[arr[0]];
    for (var i = 1; i < arr.length; i++) {
    if(arr[i]!=hash[hash.length-1]){
    hash.push(arr[i]);
    }
    }
    return hash;
    }
    // ...
  4. 优化遍历数组法(推荐)
    实现思路:双层循环,外循环表示从0到arr.length,内循环表示从i+1到arr.length
    将没重复的右边值放入新数组。(检测到有重复值时终止当前循环同时进入外层循环的下一轮判断)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function unique4(arr){
    var hash=[];
    for (var i = 0; i < arr.length; i++) {
    for (var j = i+1; j < arr.length; j++) {
    if(arr[i]===arr[j]){
    ++i;
    }
    }
    hash.push(arr[i]);
    }
    return hash;
    }
    // ...
  5. ES6实现
    基本思路:ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
    Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function unique5(arr){
    var x = new Set(arr);
    return [...x];
    }

    // 扩展:如果重复,则去掉该元素
    //数组下标去重

    function unique22(arr){
    var hash=[];
    for (var i = 0; i < arr.length; i++) {
    if(arr.indexOf(arr[i])==arr.lastIndexOf(arr[i])){
    hash.push(arr[i]);
    }
    }
    return hash;
    }

数组排序

  • sort(sortby) 方法用于对数组的元素进行排序,并返回数组。sortby为空则默认排序顺序是根据字符串UniCode码。
    [4,3,6,5,72,2,121].sort(); //输出结果: [121, 2, 3, 4, 5, 6, 72]
    [“weq”,”d”,”qwe”,”a”,”n”,”p”,”y”].sort(); //输出结果: [“a”, “d”, “n”, “p”, “qwe”, “weq”, “y”]

降序:从大到小排序

sort()方法:

1
2
3
4
5
6
function sortNum(a,b){
return b - a
}
var arr = [ 4,31,62,5,72,2,100 ];
arr.sort(sortNum);
// [100, 72, 62, 31, 5, 4, 2]

笨一点的法子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//创建数组元素arr
var arr=[7,13,34,3,200,100,4],
max;
for(var i=0; i<arr.length; i++){
for(var j=i; j<arr.length; j++){
if(arr[i]<arr[j]){
max=arr[j];
arr[j]=arr[i];
arr[i]=max;
}
}
}
console.log( arr )
// [200, 100, 34, 13, 7, 4, 3]

升序:从小到大排序

1
2
3
4
5
6
7
function sortNum(a,b){
return a - b
}
var arr = [ 4,31,62,5,712,2,1200 ];
arr.sort(sortNum);
console.log(arr);
//[2, 4, 5, 31, 62, 712, 1200]

接着笨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//创建数组元素arr
var arr=[13,7,10,76,97,100,35],
min;
for(var i=0; i<arr.length; i++){
for(var j=i; j<arr.length;j++){
if(arr[i]>arr[j]){
min=arr[j];
arr[j]=arr[i];
arr[i]=min;
}
}
}
console.log( arr )
// [7, 10, 13, 35, 76, 97, 100]

对象数组排序

下面是从小到大,要从大到小也一样,b.sortNo - a.sortNo 就反过来了

1
2
3
4
5
6
var arr= [ { 'sortNo': 2},{ 'sortNo': 1},{ 'sortNo': 5},{ 'sortNo': 6},{ 'sortNo': 79},{ 'sortNo': 3},{ 'sortNo': 999},{ 'sortNo': 4},{ 'sortNo': 0}];
arr.sort(function(a, b){
return a.sortNo - b.sortNo;
});
console.log(arr);
//[{sortNo: 0},{sortNo: 1},{sortNo: 2},{sortNo: 3},{sortNo: 4},{sortNo: 5},{sortNo: 6},{sortNo: 79},{sortNo: 999}]

对象数组多条件排序

如果sortNo相同,则按sortNo2从大到小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var arr= [ 
{ 'sortNo': 2, 'sortNo2': 3},
{ 'sortNo': 1, 'sortNo2': 3},
{ 'sortNo': 5, 'sortNo2': 3},
{ 'sortNo': 6, 'sortNo2': 3},
{ 'sortNo': 7, 'sortNo2': 3},
{ 'sortNo': 3, 'sortNo2': 4},
{ 'sortNo': 3, 'sortNo2': 2},
{ 'sortNo': 3, 'sortNo2': 1},
{ 'sortNo': 3, 'sortNo2': 3},
{ 'sortNo': 8, 'sortNo2': 3},
{ 'sortNo': 4, 'sortNo2': 1},
{ 'sortNo': 4, 'sortNo2': 2}
];
arr.sort(function(a, b){
if (a.sortNo === b.sortNo) {
return b.sortNo2 - a.sortNo2;
} else {
return a.sortNo - b.sortNo;
}
});
console.log(arr);

颠倒数组顺序

1
2
3
var arr = [1,2,3,4,5,6]
arr.reverse()
// [6, 5, 4, 3, 2, 1]

数组转字符串

  1. 转字符串
    1
    2
    3
    4
    5
    var arr = [1,2,3,4,5,6]
    console.log(arr.toString() )
    console.log( arr.toLocaleString() )
    //都是返回:1,2,3,4,5,6
    //在数组里,toString()和toLocaleString()并没有发现区别
  2. 数组分隔成字符串
    join(separator)
    方法用于把数组中的所有元素放入一个字符串。分割符号可选,默认是逗号
    1
    2
    3
    4
    5
    6
    7
    var a = [1,2,3,4,5,6]

    a.join('-')
    //"1-2-3-4-5-6"

    a.join()
    //"1,2,3,4,5,6"

复制数组

slice(start,end)

  • 从start开始截取到end但是不包括end
  • 返回值为截取出来的元素的集合
  • 原始的数组不会发生变化
  • end为空就是从指定位置到到最后一个
  • start、end如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    1
    2
    3
    4
    5
    6
    7
    var arr = [1,2,3,4,5,6],
    shallowCopy = arr.slice();
    shallowCopy.push("news");
    console.log(arr, shallowCopy );
    console.log(arr.slice(2,5) );

    //

数组属性&方法表

ES6的不在内,ES6的见文章顶部的链接

Array 对象属性

属性 描述
constructor 返回对创建此对象的数组函数的引用
length 设置或返回数组中元素的数目
prototype 使您有能力向对象添加属性和方法

Array 对象方法

方法 描述
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
shift() 删除并返回数组的第一个元素
pop() 删除并返回数组的最后一个元素
slice() 从某个已有的数组返回选定的元素
concat() 连接两个或更多的数组,并返回结果。
sort() 对数组的元素进行排序
reverse() 颠倒数组中元素的顺序。
splice() 删除元素,并向数组添加新元素。
toSource() 返回该对象的源代码,只有Gecko核心的浏览器(Firefox)支持
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
toString() 把数组转换为字符串,并返回结果。
toLocaleString() 把数组转换为本地数组,并返回结果。
valueOf() 返回数组对象的原始值