1.target属性
//由a标签利用target属性链接的页面
2.标签基本定义
标签定义超链接,用于从一张页面链接到另一张页面。
元素最重要的属性是 href 属性,它指示链接的目标。
标签的四种状态:
link
: 未被访问的链接 (带有蓝色下划线)
visited
: 已被访问的链接 (带有紫色下划线)
active
: 活动链接 (带有红色下划线)
hover
: 鼠标悬停的链接
3.标签链接到同以文档的不同位置
查看第五节 //点击链接就会转到第五节
第三节
第四节
第五节
第六节
4.标签链接到图片
//点击图片,转到链接页面
5.text-decoration 下划线设置
text-decoration:none
无装饰,通常对html下划线标签去掉下划线样式
text-decoration:underline
下划线样式
text-decoration:line-through
删除线样式-贯穿线样式
text-decoration:overline
上划线样式
6.text-transform 大小写设置
none
默认。定义带有小写字母和大写字母的标准的文本。
capitalize
文本中的每个单词以大写字母开头。
uppercase
定义仅有大写字母。
lowercase
定义无大写字母,仅有小写字母。
inherit
规定应该从父元素继承 text-transform 属性的值。
7.css的四种单位
%
百分比
cm
厘米
px
像素 (计算机屏幕上的一个点)
em
字体尺寸
1em 等于当前的字体尺寸。 2em 等于当前字体尺寸的两倍。
eg:如果某元素以 12pt 显示,那么 2em 是24pt。
在 CSS 中,em 是非常有用的单位,因为它可以自动适应用户所使用的字体。
8.js函数
函数定义方法:
(1).
function abs(x) {
..............
}
abs()函数的定义如下:
function
指出这是一个函数定义;
abs
是函数的名称;
(x)
括号内列出函数的参数,多个参数以,
分隔;
{ ... }
之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。
(2).
var abs = function (x){
````````
}; //分号表示结束
在这种方式下,function (x) { ... }是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。
上述两种定义完全等价,注意第二种方式按照完整语法需要在函数体末尾加一个;
,表示赋值语句结束。
关键字arguments:
它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array.
arguments最常用于判断传入参数的个数(arguments.length)。
rest参数:获得多余的参数
9.函数变量及作用域
(1) 若在不同函数体内定义相同的变量不会出错,因为变量的作用于在函数内部。反之,若是在函数外定义变量,则会出错。
(2) 函数可以嵌套,则内部函数可以访问外部函数定义的变量,反过来则不行
(3) 自身函数定义开始,从“内”向“外”查找变量。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。
(4)全局变量:不在任何函数内定义的变量就具有全局作用域。
js默认有一个全局对象window,全局作用域的变量实际上被绑定到window的一个属性:
var x = 0 ;
alert(x); // 0
alert(window.x); // 0
所以直接访问全局变量x和访问window.x是完全一样的。
(5)块级作用域变量
let
可以申请块级的变量,例如for循环中的变量。
(6)常量
const
与let
一样是块级作用域,但是const申请是常量,值不可变。
10.解构赋值
(1).对数组元素同时赋不同的值:
var arr = ['yu','dang','ling'];//创建数组
var[x,y,z] = ['yu','dang','ling']; //同时赋值
var[x,[y,z] ] = ['yu',['dang','ling'] ];//注意嵌套层次和位置要保持一致
var[ , ,z] = [ , ,'ling'] ];//也可省略前两个,直接对第三个进行赋值
(2).对对象属性进行赋值
var person = {
name: '小明',
age: 20,
address: {
city: 'Beijing',
zipcode: '100001'
}
>};
var {name, address: {city, zip}} = person;//对象的属性值赋给变量
name; // '小明'
city; // 'Beijing'
zip; // undefined, 因为属性名是zipcode而不是zip
// 注意: address不是变量,而是为了让city和zip获得嵌套的address对象的属性:
address; // Uncaught ReferenceError: address is not defined
(3).利用解构赋值交换两个数的值
var x = 0;
var y = 1;
[x,y] = [y,x];
(4).如果一个函数接收一个对象作为参数,那么,可以使用解构直接把对象的属性绑定到变量中。例如,下面的函数可以快速创建一个Date对象:
function Date({year, month, day, hour=0, minute=0, second=0}) {
}
传入的对象只需要year、month和day这三个属性:
buildDate({ year: 2017, month: 1, day: 1 });
// Sun Jan 01 2017 00:00:00 GMT+0800 (CST)
11.方法
给对象绑定函数,称作方法。
var person = {
name: '小明',
birth: 1990,
age: function () {
var y = new Date().getFullYear();
return y - this.birth;
} //给age属性绑定函数
};
person.age; // function person.age()
person.age(); // 今年调用是25,明年调用就变成26了
this
关键字:
this是一个特殊变量,它始终指向当前对象 ,this.birth指的是person.birth。
如果单独调用一个函数,并不在对象内部,则this指向的对象是window。
12.apply()方法
apply()方法有两个参数,第一个为this绑定的变量,第二个是Array,表示函数本身的参数。
function getAge() {
var y = new Date().getFullYear();
return y - this.birth;
}
var xiaoming = {
name: '小明',
birth: 1990,
age: getAge
};
xiaoming.age(); // 28
getAge(); // NaN
因为此时函数在对象外部,this指向的window,而不是xiaoming,所以得不到,返回NaN。
。。。。。。。
getAge.apply(xiaoming, [ ]); // 28, this指向xiaoming, 参数为空
apply()方法则将this绑定到参数xiaoming上,就可以找到小明的年龄了。
13.call()方法
call()方法与apply()方法很像,但也有区别。
apply()方法是将参数打包成数组在传入。
call()方法则是按照参数顺序传入。
eg:找出最大数
Math.max.apply(null, [3, 5, 4]); // 5
Math.max.call(null, 3, 5, 4); // 5
对普通函数调用,我们通常把this绑定为null。
14.高阶函数
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
function add(x, y, f) {
return f(x) + f(y);
}
x = -5;
y = 6;
f = Math.abs;
f(x) + f(y) ==> Math.abs(-5) + Math.abs(6) ==> 11;
return 11;
15.map/reduce
1.map()
map可以将数组内 的各元素,同时赋值或进行别的操作,不用一一进行。
eg:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.map(String); // ==> ['1', '2', '3', '4', '5', '6', '7', '8', '9']
2.reduce()
reduce()把一个函数作用在这个数组元素上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算(对数组求和,求积)
eg:
求和:
var arr[] = [1,3,4,6,7];
arr.reduce(function(x,y) ={
return(x+y);
}); //21
把[1, 3, 5, 7, 9]变换成整数13579:
var arr[] = [1,3,4,6,7];
arr.reduce(function(x,y) = {
return (x*10 +y);
}); //13467
16.filter()
用于把Array的某些元素过滤掉,然后返回剩下的元素。
filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
eg:
删除数组中的偶数
var arr = [1,2,3,4,5,6];
arr.filter(function(x) = {
return x%2 !=0;
});
arr; //1,3,5
17.sort()
排序函数
两个元素x和y,
if(x < y) return -1;
if(x == y) return 0
if(x > y) return 1
这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。
eg:
从小到大排序:
var arr= [34,23,12,56];
arr.sort(function (x, y) {
if (x < y) {
return -1;
}
if (x > y) {
return 1;
}
return 0;
});
console.log(arr); // [12,23,34,56]
从大到小排序
var arr = [23,47,34,21];
arr.sort(function(x,y){
if(x>y) return -1;
if(x