wwj-blog


  • 首页

  • 关于

  • 归档

实现一个jQuery的API

发表于 2018-07-04
字数统计 484 | 阅读时长 2

需求

在不使用jQuery函数库的情况下自制一个与jQuery类似的API
首先,确认以下两个需求:

1
2
3
var $div = $('div')
$div.addClass('red') // 可将所有 div 的 class 添加一个 red
$div.setText('hi') // 可将所有 div 的 textContent 变为 hi

创建

先创建一个新的window对象jQuery,它是一个函数,并返回带有参数新的对象

1
2
3
4
5
window.jQuery=function(node){
return{
addClass:function(node){},
setText:function(node){}
}

参数

1
var $div = $('div')

要实现这个功能,需要区分传入的参数是一个选择器还是节点,并以伪数组的形式返回。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
window.jQuery = function (nodeOrSelector) {
let nodes = {}
if (typeof nodeOrSelector === 'string') {
let temp = document.querySelectorAll(nodeOrSelector)
for (let i = 0; i < temp.length; i++) {
nodes[i] = temp[i]
}
nodes.length = temp.length

} else if (nodeOrSelector instanceof Node) {
nodes = {
0: nodeOrSelector,
length: 1
}
}
}

如果只是单单实现所需要的功能,可以简化成

1
2
3
window.jQuery = function (nodeOrSelector) {
let nodes = document.querySelectorAll(nodeOrSelector)
}

需求实现

1
$div.addClass('red')// 可将所有 div 的 class 添加一个 red

nodes是一个伪数组。如果每个div都要添加class的话,需要一个for循环,然后每一次用DOM的方法里的classList.add功能对div添加class。

1
2
3
4
5
addClass: function (className) {
for (let i = 0; i < nodes.length; i++) {
nodes[i].classList.add(className)
}
}

同理可实现

1
2
3
4
5
6
7
$div.setText('hi') // 可将所有 div 的 textContent 变为 hi

setText: function (text) {
for (let i = 0; i < nodes.length; i++) {
nodes[i].textContent=text
}
}

把addClass和setText的内容结合到函数内,得到:

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
window.jQuery = function (nodeOrSelector) {
let nodes = {}
if (typeof nodeOrSelector === 'string') {
let temp = document.querySelectorAll(nodeOrSelector)
for (let i = 0; i < temp.length; i++) {
nodes[i] = temp[i]
nodes.length = temp.length
}

} else if (nodeOrSelector instanceof Node) {
nodes = {
0: nodeOrSelector,
length: 1
}

}
return {
addClass: function (className) {
for (let i = 0; i < nodes.length; i++) {
nodes[i].classList.add(className)
}
},
setText: function (text) {
for (let i = 0; i < nodes.length; i++) {
nodes[i].textContent=text
}
}
}
}
window.$ = jQuery

原型与原型链

发表于 2018-06-08
字数统计 795 | 阅读时长 3

全局对象 window

ECMAScript 规定全局对象叫做 global,但是浏览器把 window 作为全局对象(浏览器先存在的)

window 就是一个哈希表,有很多属性。

window 的属性就是全局变量。

这些全局变量分为两种:

一种是 ECMAScript 规定的

1
2
3
4
5
6
global.parseInt
global.parseFloat
global.Number
global.String
global.Boolean
global.Object

一种是浏览器自己加的属性

1
2
3
4
5
6
7
8
window.alert
window.prompt
window.comfirm
window.
window.console.dir
window.document
window.document.createElement
window.docu

n=1与n = new Number(1)区别

1
n=1

是一个基本类型

1
n = new Number(1)

创建一个Number对象

所以为什么一个基本类型可以使用  .  属性呢?

1
2
var n = 1 
n.toString() //这时会创造一个临时的对象tamp里面有各种属性,这句执行完后,tamp消失

1
2
3
var n = 1
n.xxx = 2 //不会报错,这句执行完后,tamp消失
n.xxx //undefined 读取不到

tamp.png

1
2
3
o1 = {}
o2 = new object {}//没有区别,但不完全相等
o1 === o2 // false 地址不一样

__proto__ 与 prototype

  • 每个对象都具有一个名为__proto__的属性;

  • 每个构造函数(构造函数标准为大写开头,如Function(),Object()等等JS中自带的构造函数,以及自己创建的)都具有一个名为prototype的方法(注意:既然是方法,那么就是一个对象(JS中函数同样是对象),所以prototype同样带有__proto__属性);

  • 每个对象的__proto__属性指向自身构造函数的prototype;

  • Function的__proto__指向其构造函数Function的prototype;

  • Object作为一个构造函数(是一个函数对象!!函数对象!!),所以他的__proto__指向Function.prototype;

  • Function.prototype的__proto__指向其构造函数Object的prototype;

  • Object.prototype的__proto__指向null(尽头)

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
function Fun(){
}
//创造了一个函数Fn
//这个函数由Function生成(Function作为构造函数)
var fn=new Fun()
//创建了一个函数fn
//这个函数由Fn生成(Fn作为构造函数)


fn.__proto__===Fun.prototype //true
//fn的__proto__指向其构造函数Fun的prototype
Fun.__proto__===Function.prototype //true
//Fun的__proto__指向其构造函数Function的prototype
Function.__proto__===Function.prototype //true
//Function的__proto__指向其构造函数Function的prototype
//构造函数自身是一个函数,他是被自身构造的
Function.prototype.__proto__===Object.prototype //true
//Function.prototype的__proto__指向其构造函数Object的prototype
//Function.prototype是一个对象,同样是一个方法,方法是函数,所以它必须有自己的构造函数也就是Object
Fun.prototype.__proto__===Object.prototype //true
//与上条相同
//此处可以知道一点,所有构造函数的的prototype方法的__proto__都指向Object.prototype(除了Object.prototype自身)


Object.__proto__===Function.prototype //true
//Object作为一个构造函数(是一个函数对象!!函数对象!!),所以他的__proto__指向Function.prototype
Object.prototype.__proto__===null //true
//Object.prototype作为一切的源头,他的__proto__是null


//下面是一个新的,额外的例子
var obj={}
//创建了一个obj
obj.__proto__===Object.prototype //true
//obj作为一个直接以字面量创建的对象,所以obj__proto__直接指向了Object.prototype,而不需要经过Function了!

__proto__ 与 prototype.png

JS里的数据类型转换

发表于 2018-06-06
字数统计 428 | 阅读时长 2

类型转换

任意类型转字符串

  • String()

    1
    2
    3
    4
    5
    String(1) // "1"
    String(true)//"ture"
    String(null)//"null"
    String(undefined)//"undefined"
    String({})//"[object Object]"
  • .toString()

    1
    2
    3
    4
    5
    (1).toString() // "1"
    (true).toString()//"ture"
    (null).toString()//"报错"
    (undefined).toString()//"报错"
    ({}).toString()//"[object Object]"
  • +’’

    1
    2
    3
    4
    5
    6
    1+''//"1"
    true+''//"true"
    null+''//"null"
    undefined+''//"undefined"
    var n={}
    n+''//"[object Object]"

任意类型变布尔(boolean)
        如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。

  1. undefined      2. null      3. false      4. 0      5. NaN     6. “”或’’(空字符串)
  • Boolean()

    1
    2
    Boolean(1)//true
    Boolean(0)//false
  • !!()

    1
    2
    !!(1)//true
    !!(null)//false

任意类型变数字(number)

  • Number()

    1
    Number('1')//1
  • parseInt(string, radix)

    1
    2
    parseInt(10, 10)//10
    parseInt(110, 2)//6
  • parseFloat()

    1
    2
    3
    4
    5
    parseFloat("3.14");
    parseFloat("314e-2");
    parseFloat("0.0314E+2");
    parseFloat("3.14more non-digit characters");
    //均返回 3.14
  • -0

    1
    '1.23'-0//1.23
  • +(取正)

    1
    2
    +'3.14'//3.14
    +'-3.14'//-3.14

内存图

内存.png

深拷贝浅拷贝

1
2
3
4
var a = 1
var b = a
b = 2 //这个时候改变 b
a = 1//a 完全不受 b 的影响

那么我们就说这是一个深拷贝
对于简单类型的数据来说,赋值就是深拷贝。
对于复杂类型的数据(对象)来说,才要区分浅拷贝和深拷贝。

  • 这是一个浅拷贝的例子

    1
    2
    3
    4
    5
    var a = {name: 'w'}
    var b = a
    b.name = 'b'
    a.name === 'b' // true
    //因为我们对 b 操作后,a 也变了
  • 深拷贝
    什么是深拷贝了,就是对 Heap 内存进行完全的拷贝。

    1
    2
    3
    4
    var a = {name: 'frank'}
    var b = deepClone(a) // deepClone 还不知道怎么实现
    b.name = 'b'
    a.name === 'a' // true

JS里的数据类型

发表于 2018-06-04
字数统计 1,005 | 阅读时长 4

JS总共有7种数据类型(number,string,boolean,null,undefined,object,symbol)

数据类型.png

typeof 确定类型

1
2
3
4
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
typeof undefined //undefiend

然而函数返回的是function,null返回的是object

1
2
3
function f() {}
typeof f// "function"
typeof null //object

number(数值)

进制

  • 十进制:没有前导0的数值。
  • 八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
  • 十六进制:有前缀0x或0X的数值。
  • 二进制:有前缀0b或0B的数值。

    特殊值

    NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number)
    Infinity表示“无穷”,Infinity有正负之分,Infinity表示正的无穷,-Infinity表示负的无穷。

    转整数、小数

    parseInt() 转整数
  • parseInt的返回值只有两种可能,要么是一个十进制整数,要么是NaN。
  • parseInt方法还可以接受第二个参数(2到36之间),表示被解析的值的进制
  • Parseint(1000,2) 以2进制表示1000
  • parseInt会将科学计数法的表示方法视为字符串
    parseFloat() 转小数
    parseFloat方法用于将一个字符串转为浮点数。
    如果字符串包含不能转为浮点数的字符,则不再进行往后转换,返回已经转好的部分。
    1
    2
    parseFloat('314e-2') // 3.14
    parseFloat('0.0314E+2') // 3.14

string(字符串)

字符串默认只能写在一行内,分成多行将会报错。

  • 单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。” ‘ ‘ “
  • 在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。\
    .length属性
    length属性返回字符串的长度,该属性也是无法改变的。
    1
    2
    var s = 'hello';
    s.length // 5

表示多行字符串
1.模板字符串(`)表示多行字符串,所有的空格和缩进都会被保留在输出之中。
2.用+号链接。

boolean(布尔值)

下列运算符会返回布尔值:

两元逻辑运算符: && (And),|| (Or)
前置逻辑运算符: ! (Not)
相等运算符:===,!==,==,!=
比较运算符:>,>=,<,<=

如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。

1
2
3
4
5
6
undefined
null
false
0
NaN
""或''(空字符串)

空数组([])和空对象({})对应的布尔值,都是true。

null 与 undefined

都表示没有值

  • (规范)如果一个变量没有被赋值,那么这个变量的值就是 undefiend
  • (习俗)如果你想表示一个还没赋值的对象,就用 null。如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,不用写 var xxx = undefined)

object(对象)

简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
对象的所有键名都是字符串,无论加不加引号。

属性

  • 对象的每一个键名又称为“属性”(property)属性的值为函数,通常把这个属性称为“方法”,它可以像函数那样调用。

  • 读取对象的属性

    1
    2
    3
    4
    5
    6
    var obj = {
    p: 'Hello World'
    };

    obj.p // "Hello World"
    obj['p'] // "Hello World"

• Obj.p 或 Obj['p'] 记得引号,否则会当成变量处理
• 数字属性 不能用点运算,会被当成小数点,要用方括号 可以不加引号,会自动转成字符串。Obj[3]

  • 查看所有属性:

    1
    Object.keys[obj]
  • 删除属性 :

    1
    delete obj.p //ture`
  • in运算符
    用于检查对象是否包含某个属性(注意:检查的是键名,不是键值)

    1
    2
    var obj={name: wang,age:24}
    'name' in obj // true
  • for…in循环用来遍历一个对象的全部属性。

    1
    2
    3
    4
    5
    var obj = {a: 1, b: 2, c: 3};

    for (var i in obj) {
    console.log(obj[i]);
    }

常见算法流程图

发表于 2018-05-24
字数统计 12 | 阅读时长 1

冒泡排序

冒泡排序流程图.jpg

选择排序

选择排序.jpg

计数排序

计数排序-2.png

堆排序的思路

发表于 2018-05-24
字数统计 240 | 阅读时长 1

堆排序思路


  每次都取最大堆堆顶的元素,将其放在序列最后面,然后将剩余的元素重新调整为最大堆,依次类推,最终得到排序的序列。

1.把数组依次放入一个完全二叉树中。
堆排序-1.png
2.从最后一个非叶子节点(第4层最后一个点)开始,调整成最大堆。下方是8个最大堆。
堆排序-2.png
3.继续往上以3层为父节点,调整成最大堆。这时的调整会打乱原有的8个最大堆结构,需要对打乱的部分进行重新调整。
堆排序-3.png
4.以此类推,向上调整。直到整个树变为最大堆。根节点为最大的数,将其与最大堆的最后一个数交换后去除放入数组的最后一位。
堆排序-4.png
5.继续进行调整,交换,如此反复进行,最终使得整个序列有序。

  • 可视化堆排序

CSS布局笔记

发表于 2018-05-19
字数统计 653 | 阅读时长 3

左右布局

使用float,在子元素上使用float:left;在父元素上加class = clearfix用于清除浮动

1
2
3
4
5
.clearfix::after{
content: '';
display: block;
clear: both;
}

左中右布局

使用float或者使用绝对定位的方法。

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
#container{  
position:relative;
margin:20px;
height:400px;
#left_side{
position:absolute;
top:0px;
left:0px;
border:solid 1px #red;
width:170px;
height:100%;
}
#content{
position:absolute;
margin:0px 190px 0px 190px;
border:solid 1px #red;
height:100%;
}
#right_side{
position:absolute;
top:0px;
right:0px;
border:solid 1px #red;
width:170px;
height:10
}

水平居中

1.给元素定一个显示式的宽度,然后加上margin的左右值为auto。

1
2
3
4
5
.center{
width: 800px;
margin-left: auto;
margin-right: auto;
}

2.使用display:inline-block;仅仅inline-block属性是无法让元素水平居中,他的关键之处要在元素的父容器中设置text-align的属性为“center”,这样才能达到效果:

垂直居中

1.不知道自己高度和父容器高度的情况下,使用绝对定位

1
2
3
4
5
6
7
8
9
.parentElement{
position:relative;
}

.childElement{
position: absolute;
top: 50%;
transform: translateY(-50%);
}

2.若父容器下只有一个元素,且父元素设置了高度,则只需要使用相对定位即可

1
2
3
4
5
6
7
8
9
.parentElement{
height:xxx;
}

.childElement {
position: relative;
top: 50%;
transform: translateY(-50%);
}

3.flexbox emmmmmm 还不太会,以后填坑

背景图

背景图水平垂直居中

1
2
3
4
5
Background-position: center center;
```
背景图自适应
```css
background-size: cover;

给背景图加上面具

1
background-color: rgba(0,0, 0, 0.65);

rgba(red, green, blue, Alpha透明度。取值0~1之间。)

选择器

  • tr:nth-child(2n+1)
    表示HTML表格中的奇数行。

  • tr:nth-child(odd)
    表示HTML表格中的奇数行。

  • tr:nth-child(2n)
    表示HTML表格中的偶数行。

  • tr:nth-child(even)
    表示HTML表格中的偶数行。

  • pan:nth-child(0n+1)
    表示子元素中第一个且为span的元素,与 :first-child 选择器作用相同。

  • span:nth-child(1)
    表示父元素中子元素为第一的并且名字为span的标签被选中

  • span:nth-child(-n+3)
    匹配前三个子元素中的span元素。

CSS优先级

  • 行内样式 > id样式 > class样式 > 标签名样式

CSS三角形

  • 先编写一个空元素

    1
    <div class="triangle"></div>
  • 然后,将它四个边框中的三个边框设为透明,剩下一个设为可见,就可以生成三角形效果:

    1
    2
    3
    4
    5
    6
    7
    .triangle { 
    border-color: transparent transparent green transparent;
    border-style: solid;
    border-width: 0px 300px 300px 300px;
    height: 0px;
    width: 0px;
    }

参考

  • CSS使用技巧-阮一峰

css学习笔记

发表于 2018-05-17
字数统计 687 | 阅读时长 3

引入css四种方式:

  • 内联
  • style标签
  • css link <link rel="stylesheet" href="./a.css">
  • @import url()

    几种元素

  • float: 指定一个元素应沿其容器的左侧或右侧放置, clearfix 添加在所有浮动元素爸爸身上

  • Hover: 当鼠标悬浮时

  • display: block 元素生成一个块元素盒。 inline-block该元素生成一个块状盒,该块状盒随着周围内容流动,如同它是一个单独的行内盒子(表现更像是一个被替换的元素)

  • margin:给定元素设置所有四个(上下左右)方向的外边距属性。这是四个外边距属性设置的简写。可以为负,

  • padding:属性设置一个元素的内边距,padding 区域指一个元素的内容和其边界之间的空间,该属性不能为负值。

  • border:一个用于设置各种单独的边界属性的简写属性。border调试大法 border: 1px solid red;

  • inherit:继承关键字,使得元素获取其父元素的计算值(computed value )。

    文档流(normal flow)

  • 文档流:文档内元素流动的方向,在文档流中, 元素按照其在 HTML 中的先后位置至上而下布局, 在这个过程中, 行内元素水平排列, 直到当行被占满然后换行; 块级元素则会被渲染为完整的一个新行.
  • 脱离文档流:1.浮动机制2.绝对定位

  • div 高度由其内部文档流元素的高度总和决定

    内联元素和块级元素的主要区别

    内联元素

    1.独占一行,默认情况下,其宽度自动填满其父元素宽度
    2.可以设置width,height属性
    3.可以设置margin和padding属性
    4.对应于 display:block

    块级元素

    1.相邻的行内元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容而变化
    2.行内元素设置width,height属性无效
    3.行内元素起边距作用的只有margin-left、margin-right、padding-left、padding-right,其它属性不会起边距效果。

  1. 对应于 display:inline;

    背景图

  • Background-position: center center; 背景图 :水平 垂直 居中;

  • background-size: cover; 背景图自适应

  • 给背景图加上面具 :background-color: rgba(0,0, 0, 0.65);

  • rgba(red, green, blue, Alpha透明度。取值0~1之间。)

    居中

    对于一个div,如果他有一个宽度 Margin-left:auto; Margin-right:auto;

    画一个三角形

    1.span里不放DIV
    2.示例代码
    {

    border: 10px solid transparent;
    width:0px;
    border-left-color: #e6686a;
    border-top-width: 0px;
    

    }

    绝对定位

  • 子元素上 position: absolute;
  • 父元素上 position: relative;
  • 子元素相对于父元素定位

  • position: fixed;脱离文档流,相对于屏幕固定

HTML常用标签

发表于 2018-05-14
字数统计 1,354 | 阅读时长 5

iframe

  • <iframe> 表示嵌套的浏览上下文,有效地将另一个HTML页面嵌入到当前页面中
  • 常见的属性有name嵌入的浏览上下文(框架)的名称。该名称可以用作<a>标签,<form>标签的target属性值,或<input> 标签和 <button>标签的formtaget属性值。
  • src=""可以写相对路径src=”./index2.html”
  • <iframesrc="https://www.baidu.com" name=xxx frameborder="0"></iframe>,frameborder="0"表示没有边框。
  • 与<a>一起用
    <iframe src="#" name=xxx></iframe><a herf="https://www.baidu.com" tarage=xxx>baidu<a>

    a

    <a>元素 (或锚元素) 可以创建一个到其他网页、文件、同一页面内的位置、电子邮件地址或任何其他URL的超链接。
  • 跳转页面,发起的是GET请求
    target属性
  • <a href="http://qq.com" target="_blank">QQ</a>在新页面打开链接
  • <a href="http://qq.com" target="_self">QQ</a>在当前页面打开
  • <a href="http://qq.com" target="_parent">QQ</a>在父级页面打开
  • <a href="http://qq.com" target="_top">QQ</a>在顶层页面打开
    download 属性
  • 此属性指示浏览器下载URL而不是导航到URL,因此将提示用户将其保存为本地文件。
    href属性
  • 这是一个必需属性为锚定义一个超文本链接来源。这表示链接目标的URL或URL片段。URL片段是由一个hash符号(#),它指定一个内部目标在当前文档中的位置(ID)开头的名字。URL不限于网页(HTTP)的文件。URL可能使用浏览器所支持的任何协议。例如,文件,FTP,大多数用户代理mailto工作。可以使用 href=”#top” 或者 href=”#” 链接返回到页面顶部。这种行为在HTML5上被指定。
  • javascript伪协议<a href="javascript:;" target="_blank">QQ</a>点击QQ<a>标签无反应

form

<form> 元素 表示了文档中的一个区域,这个区域包含有交互控制元件,用来向web服务器提交信息。

  • 跳转页面,发起的是POST请求
  • method="POST"`method=”GET”`浏览器使用这种 HTTP 方式来提交 form
  • 需要有<input>按钮用于提交表单
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit" value="提交">
    

    method="GET"会将username&password放入查询参数。
  • 也有target属性

    input

    <input> 元素用于为基于Web的表单创建交互式控件,以便接受来自用户的数据。
  • button:无缺省行为按钮。
  • checkbox: 复选框。必须使用 value 属性定义此控件被提交时的值。使用 checked 属性指示控件是否被选择。也可以使用 indeterminate 指示复选框在一种不确定状态(大多数平台上,显示为一条穿过复选框的水平线)。

    1
    2
    3
    4
    <label><input type="checkbox" name="lovefruits" value="orange">橘子</label>
    <label><input type="checkbox" name="lovefruits" value="Banana">香蕉</label>
    <label><input type="checkbox" name="lovefruits" value="apple">苹果</label>
    <label><input type="checkbox" name="lovefruits" value="watermelon">西瓜</label>
  • radio:单选按钮。必须使用 value 属性定义此控件被提交时的值。使用checked 必须指示控件是否缺省被选择。在同一个”单选按钮组“中,所有单选按钮的 name 属性使用同一个值; 一个单选按钮组中是,同一时间只有一个单选按钮可以被选择。

    1
    2
    3
    4
    <label><input type="radio" name="lovefruits" value="orange">橘子</label>
    <label><input type="radio" name="lovefruits" value="Banana">香蕉</label>
    <label><input type="radio" name="lovefruits" value="apple">苹果</label>`
    <label><input type="radio" name="lovefruits" value="watermelon">西瓜</label>
  • password:一个值被遮盖的单行文本字段。使用 maxlength 指定可以输入的值的最大长度 。

  • submit:用于提交表单的按钮。
  • text:单行字段;换行会将自动从输入的值中移除。

    button

    <button> 元素表示一个可点击的按钮,可以用在表单或文档其它需要使用简单标准按钮的地方。
    type的类型有:
  • submit: 此按钮提交表单数据给服务器。未指定时,此值为默认值,或者如果此属性动态变为空值或无效值。
  • reset: 此按钮重置所有组件为初始值。
  • button: 此按钮没有默认行为。它可以有与元素事件相关的客户端脚本,当事件出现时可触发。
  • menu: 此按钮打开一个由指定<menu>元素进行定义的弹出菜单。
    value
  • button的初始值。它定义的值与表单数据的提交按钮相关联。当表单中的数据被提交时,这个值便以参数的形式被递送至服务器。

    select

    <select>元素是一种表单控件,可创建选项菜单。菜单内的选项为<option> , 可以由 <optgroup> 元素分组。选项可以被用户预先选择。

    1
    2
    3
    4
    5
    <select name="分组" id="">
    <option value="1">第一组</option>
    <option value="2" disabled>第二组</option>
    <option value="3" selected>第三组</option>
    </select>
  • multiple这个布尔值的属性标记select是否可以多选. 默认是单选.

  • disabled这个布尔值的属性表明一个用户是否可以操控该表单对象. 如果这个属性没有被明确定义, 则从它的父元素继承, 例如 fieldset; 如果没有父元素设置 disabled 属性, 那么默认该表单对象 enabled.

table

<table> 元素表示表格数据 — 即通过二维数据表表示的信息。

1
2
3
4
5
6
7
8
9
10
<table>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
<tr>
<td>Jane</td>
<td>Doe</td>
</tr>
</table>

HTML

发表于 2018-05-13
字数统计 2,003 | 阅读时长 7

W3C

万维网联盟(World Wide Web Consortium,W3C),又称W3C理事会,是万维网的主要国际标准组织,为解决网络应用中不同平台、技术和开发者带来的不兼容问题,保障网络信息的顺利和完整流通,万维网联盟制定了一系列标准并督促网络应用开发者和内容提供者遵循这些标准。标准的内容包括使用语言的规范,开发中使用的导则和解释引擎的行为等等。W3C也制定了包括XML和CSS等的众多影响深远的标准规范。

MDN

MDN Web Docs(旧称Mozilla Developer Network、Mozilla Developer Center,简称MDN)是一个汇集众多Mozilla基金会产品和网络技术开发文档的免费网站。

HTML标签

根元素

  • <html> 代表 HTML 或 XHTML 文档的根。其他所有元素必须是这个元素的子节点。

    文档元数据

  • <head> 代表关于文档元数据的一个集合,包括脚本或样式表的链接或内容。
  • <title> 定义文档的标题,将显示在浏览器的标题栏或标签页上。该元素只能包含文本,包含的标签不会被解释。
  • <base> 定义页面上相对 URL 的基准 URL。
  • <link> 用于链接外部的 CSS 到该文档。
  • <meta> 定义其他 HTML 元素无法描述的元数据。
  • <style> 用于内联 CSS。

    脚本

  • <script> 定义一个内联脚本或链接到外部脚本。脚本语言是 JavaScript。
    -<noscript> 定义当浏览器不支持脚本时显示的替代文
  • <template> 通过 JavaScript 在运行时实例化内容的容器。

    章节

  • <body> 代表 HTML 文档的内容。在文档中只能有一个 <body> 元素。
  • <section> 定义文档中的一个章节。
  • <nav> 定义只包含导航链接的章节。
  • <article> 定义可以独立于内容其余部分的完整独立内容块。
  • <aside> 定义和页面内容关联度较低的内容——如果被删除,剩下的内容仍然很合理。
  • <h1>,<h2>,<h3>,<h4>,<h5>,<h6> 标题元素实现了六层文档标题,<h1> 是最大的标题,<h6> 是最小的标题。标题元素简要地描述章节的主题。
  • <header> 定义页面或章节的头部。它经常包含 logo、页面标题和导航性的目录。
  • <footer> 定义页面或章节的尾部。它经常包含版权信息、法律信息链接和反馈建议用的地址。
  • <address> 定义包含联系信息的一个章节。
  • <main> 定义文档中主要或重要的内容。

    组织内容

  • <p> 定义一个段落。
  • <hr> 代表章节、文章或其他长内容中段落之间的分隔符。
  • <pre> 代表其内容已经预先排版过,格式应当保留 。
  • <blockquote> 代表引用自其他来源的内容。
  • <ol> 定义一个有序列表。
  • <ul> 定义一个无序列表。
  • <li> 定义列表中的一个列表项。
  • <dl> 定义一个定义列表(一系列术语和其定义)。
  • <dt> 代表一个由下一个 <dd> 定义的术语。
  • <dd> 代表出现在它之前术语的定义。
  • <figure> 代表一个和文档有关的图例。
  • <figcaption> 代表一个图例的说明。
  • <div> 代表一个通用的容器,没有特殊含义。

    文字形式

  • <a> 代表一个链接到其他资源的超链接 。
  • <em> 代表强调 文字。
  • <strong> 代表特别重要 文字。
  • <small> 代表注释 ,如免责声明、版权声明等,对理解文档不重要。
  • <s> 代表不准确或不相关 的内容。
  • <cite> 代表作品标题 。
  • <q> 代表内联的引用 。
  • <dfn> 代表一个术语包含在其最近祖先内容中的定义 。
  • <abbr> 代表省略 或缩写 ,其完整内容在 title 属性中。
  • <data> 关联一个内容的机器可读的等价形式 (该元素只在 WHATWG 版本的 HTML 标准中,不在 W3C 版本的 HTML5 标准中)。
  • <time> 代表日期 和时间 值;机器可读的等价形式通过 datetime 属性指定。
  • <code> 代表计算机代码 。
  • <var> 代表代码中的变量 。
  • <samp> 代表程序或电脑的输出 。
  • <kbd> 代表用户输入 ,一般从键盘输出,但也可以代表其他输入,如语音输入。
  • <sub>,<sup> 分别代表下标 和上标 。
  • <i> 代表一段不同性质 的文字,如技术术语、外文短语等。
  • <b> 代表一段需要被关注 的文字。
  • <u> 代表一段需要下划线呈现的文本注释,如标记出拼写错误的文字等。
  • <mark> 代表一段需要被高亮的引用 文字。
  • <ruby> 代表被ruby 注释 标记的文本,如中文汉字和它的拼音。
  • <rt> 代表ruby 注释 ,如中文拼音。
  • <rp> 代表 ruby 注释两边的额外插入文本 ,用于在不支持 ruby 注释显示的浏览器中提供友好的注释显示。
  • <bdi> 代表需要脱离 父元素文本方向的一段文本。它允许嵌入一段不同或未知文本方向格式的文本。
  • <bdo> 指定子元素的文本方向 ,显式地覆盖默认的文本方向。
  • <span> 代表一段没有特殊含义的文本,当其他语义元素都不适合文本时候可以使用该元素。
  • <br> 代表换行 。
  • <wbr> 代表建议换行 (Word Break Opportunity) ,当文本太长需要换行时将会在此处添加换行符。

    编辑

  • <ins> 定义增加 到文档的内容。
  • <del> 定义从文档移除 的内容。

    嵌入内容

  • <img> 代表一张图片 。
  • <iframe> 代表一个内联的框架 。
  • <embed> 代表一个嵌入 的外部资源,如应用程序或交互内容。
  • <object> 代表一个外部资源 ,如图片、HTML 子文档、插件等。
  • <param> 代表 <object> 元素所指定的插件的参数 。
  • <video> 代表一段视频 及其视频文件和字幕,并提供了播放视频的用户界面。
  • <audio> 代表一段声音 ,或音频流 。
  • <source> 为 <video> 或 <audio> 这类媒体元素指定媒体源 。
  • <track> 为 <video> 或 <audio> 这类媒体元素指定文本轨道(字幕) 。
  • <canvas> 代表位图区域 ,可以通过脚本在它上面实时呈现图形,如图表、游戏绘图等。
  • <map> 与 <area> 元素共同定义图像映射 区域。
  • <area> 与 <map> 元素共同定义图像映射 区域。
  • <svg> 定义一个嵌入式矢量图 。
  • <math> 定义一段数学公式 。

    表格

  • <table> 定义多维数据 。
  • <caption> 代表表格的标题 。
  • <colgroup> 代表表格中一组单列或多列 。
  • <col> 代表表格中的列 。
  • <tbody> 代表表格中一块具体数据 (表格主体)。
  • <thead> 代表表格中一块列标签 (表头)。
  • <tfoot> 代表表格中一块列摘要 (表尾)。
  • <tr> 代表表格中的行 。
  • <td> 代表表格中的单元格 。
  • <th> 代表表格中的头部单元格 。

    表单

  • <form> 代表一个表单 ,由控件组成。
  • <fieldset> 代表控件组 。
  • <legend> 代表 <fieldset> 控件组的标题 。
  • <label> 代表表单控件的标题 。
  • <input> 代表允许用户编辑数据的数据区 (文本框、单选框、复选框等)。
  • <button> 代表按钮 。
  • <select> 代表下拉框 。
  • <datalist> 代表提供给其他控件的一组预定义选项 。
  • <optgroup> 代表一个选项分组 。
  • <option> 代表一个 <select> 元素或 <datalist> 元素中的一个选项
  • <textarea> 代表多行文本框 。
  • <keygen> 代表一个密钥对生成器 控件。
  • <output> 代表计算值 。
  • <progress> 代表进度条 。
  • <meter> 代表滑动条 。

    交互元素

  • <details> 代表一个用户可以(点击)获取额外信息或控件的小部件 。
  • <summary> 代表 <details> 元素的综述 或标题 。
  • <menuitem> 代表一个用户可以点击的菜单项。
  • <menu> 代表菜单。
    另请参考
  • HTML 元素参考
  • 一系列 HTML5 文档。
  • 所有 HTML 标签的参考,包括 HTML5 中不再有效的元素。
123
wwj

wwj

23 日志
12 标签
GitHub
推荐阅读
  • JavaScript教程
  • 张鑫旭
  • Web前端导航
  • 中文参考手册
  • 百度前端技术学院
  • google前端开发基础
© 2019 wwj
由 Hexo 强力驱动
主题 - NexT.Muse
博客全站共20.6k字