<a href="xxxx" target='_blank'></a> //新窗口打开 默认不打开新窗口
seo
搜索引擎优化html5shiv.js
用法:
<!-- [if lt IE 9]>
<h1> 您的版本过低</h1>
<![endif]-->
权重计算规则简记:范围越小越精准权重值就会越大(#box.con.div{…})
<style>
.p1{color:red} /*文本颜色*/
.p2{font-family: '华文中宋'} /*字体类型*/
.p1{font-size: 26px} /*字体大小*/
.p1{font-weight: bold} /*文字加粗*/
.p1{font-style: italic} /*文字倾斜*/
.p1{color:red}/*文本颜色*/
.p1{color:red}/*文本颜色*/
.p1{color:red}/*文本颜色*/
</style>
<style>
background-color: gary; /*背景色*/
background-image: url(xxx/xx.png) /*背景图片*/
background-repeat: no-repeat; /*背景图片平铺方式*/
/*合并运用(可省略其中属性) 背景色 背景图片 平铺方式*/
background: gray url(xxx/xx.png) no-repeat;
background: url(xxx/xx.png) repeat-y;
background: #aaccbb;
</style>
2d转换和3d转换的区别: 参数 多了一个 3d 手机一般有3d 渲染引擎(GPU)更快
一种脚本语言 一种解释性语言 一种基于面向对象的语言 一种弱类型语言 一种动态类型语言 js 最初的目的 :解决用户和服务器交互问题。 现在,,游戏 特效,移动端,数据库 ,图形处理等等。
;
,
后面都空一格空格 运算符 = + - … 前后都空格概念: 运算符 与 操作数
ECMAScript中的字符串不可变,即创建后不能改变,只能销毁重新赋值(str[2] = ‘a’; 无效)
var str = new String("sdsd");
var str = String('sdg');
var str = 'sdsds';
+
参数: str1 ,str2 //数组创建
var arr = new Array(10); //方式1
var arr = Array(1,true 'hello'); //方式2
var arr = [1,true,'hello']; //方式3(常用)
console.log(arr[0]);
console.log(arr.length); //数组长度:0~(length-1)
/*
for( ... in ...) 快速遍历(从头到尾遍历 无需判断)
*/
for( var i in arr){}
//二维数组创建
var arr=[];
for(let i=0;i<10;i++){
var arr2=[];
for(let j=0;j<10;j++){
arr2.push(j);
}
arr.push(arr2);
}
,
隔开
返回值: 返回当前的length
,
隔开
返回值: 当前length
''
、' '
、+
返回值: 拼接好的字符串
true
或false
,源数组不变。
true
或false
,源数组不变。
对象也是数据类型(引用类型)在ECMAScript 中 引用类型是一种【数据结构】,用于将【数据和功能】组织到一起
// 创建对象
var obj = new Object();
var obj = Object();
var obj = {};
// 新增对象属性/方法
obj.name = 'xxxx';
obj.showName = function(){
console.log(this.name);
}
console.log(obj['name']);
console.log(obj.name);
obj.showName();
// 创建日期
var d = new Date();
console.log(d); //Sat Oct 19 2019 23:50:02 GMT+0800 (新加坡标准时间)
var d = new Date("2019/10/18"); //Fri Oct 18 2019 08:00:00 GMT+0800 (新加坡标准时间)
var d = new Date("2019-10-18");
var d = new Date("2019-10-18 10:30:18"); //Fri Oct 18 2019 10:30:18 GMT+0800 (新加坡标准时间)
var d = new Date(2019,10,18,10,30,18);//Mon Nov 18 2019 10:30:18 GMT+0800 (新加坡标准时间)
/*
Date(number)
1秒=1000毫秒
number 参数单位 毫秒
以 1970 年 1 月 1 日 0 时 0 分 0 秒 为参照物 1970年 Unix 诞生日
*/
var d = new Date(1000);//Thu Jan 01 1970 07:30:01 GMT+0730 (新加坡标准时间)
/* 日期方法
set 设置
get 获取
周 0~6
月 0~11
*/
d.setDate(5);
d.getFate();// 5
d.getDay(); // 6
d.setMonth(4);
d.getMonth();
d.getHours();
d.getMinutes();
d.getSeconds();
d.getTime();
d.parse('2019-10-18');//1571356800000
概念: BOM(Browser Object Model) 浏览器对象模型
概念: 相当于浏览器上的地址栏
URL 统一资源定位符
[protocol]【协议】:[host]【主机名:端口号】/[pathname]【路径】?[search]【查询字符串】#[hash]【锚点】
例如:https://www.fivecc.cn:8080/lyb/xxx.html?username=Five&age=22#3
#flag3
www.xxxx.com:xxxx
浏览器端口号 默认8080
location.href='https://www.fivecc.cn'
8080
http:
网协议 file:
本地文件协议?xxx&use=five
true
时,强制加载,从服务器源头重新加载,忽略缓存保存用户上网记录
概念: DOM(Document Object Model) W3C 文档对象模型 ,中立与平台和语言的接口,它允许程序和脚本动态访问和更新文档的内容、结构和样式。 【注】 Dom 是打通 html css js壁垒的一个工具
<div> </div>
<span></sapn>
title = '属性节点'
value = '按钮'
哈哈哈 我是Five
【注】 JS 中 所有 DOM 节点都是对象
这些节点有三个常用属性, nodeName
nodeType
nodeValue
节点类型 | nodeName | nodeType | nodeValue |
---|---|---|---|
元素 | 元素名称 | 1 | null |
属性 | 属性名称 | 2 | 属性值 |
文本 | #text | 3 | 文本内容 (不包括html) |
// 封装 去掉空白节点 (实际 空白子节点 并未删除)
function removeSpaceNode(nodes){
var result = [];
for(var i = 0; i < nodes.length; i++){
// 保证是文本节点 且值为 空格
if(nodes[i].nodeType == 3 && /^\s+$/.test(nodes[i].nodeValue)){continue;}
result.push(node[i]);
}
return result;
}
// 封装 去掉空白节点 (实际空白子节点删除, 从父元素上删掉)
function removeSpaceNode2(parent){
var nodes = parent.childNodes;
for(var i = nodes.length-1; i >= 0; i--){ //倒删 防顺序改变 跳删
if(nodes[i].nodeType == 3 && /^\s+$/.test(nodes[i].nodeValue)){
prarent.removeChild(nodes[i])
}
}
}
span
返回 : <span></span>
true
默认 false
,传true
,就会复制元素节点的innerHTML (包括文本内容)
返回 : 克隆的元素节点 // IE 兼容函数封装 自定义 获取 className
function elementsByClass(parsent,classStr){
var nodes = parsent.getElementsByClassName('*')//找到当前所有节点
var result = []; // 记录符合条件的元素节点
for(var i = 0;i < nodes.length; i++){
if(nodes[i].className == classStr){
result.push(nodes[i]);
}
}
return result;
}
var oUl = document.ElementById('ul1');
var node = elementsClassName(oUl,'box');
// 获取当前样式的兼容函数 封装 getStyle()
function getStyle(elem,attr){
return elem.currentStyle ? elem.currentStyle[attr] : getComputedStyle(elem)[attr];
}
var dd = document.getElementsByClassName('div1');
getStyle(dd[0],backgroundColor);//注意 要确定唯一性 不能传数组对象 `dd[0]`
操作当前元素节点中某个属性的
与 .
操作相比(obj.xxx = 'xxx')
className
本操作 直接 class
removeAttribute()
点操作 无法 移除 只能置空层级结构
// 单击与双击
var tt;
btn.addEventListener('click',function(){
tt = setTimeout(function(){},300)
},false) // false ===> 冒泡阶段
btn.adEventListener('dblclick',function(){
clearInterval(tt)
},true) //true ===> 捕获阶段
函数是对象 ,对象不一定是函数
apply 和call 可以改变 指向
bind : 复制的意思 在复制的时候 改变指向 bind(null , 10,20);
function f1(x,y){
console.log(x+','+y+'======>'+this);
}
f1(10,20);
var obj ={
age : 10,
sex : '男'
}
f1.apply(obj,[10,20]);
f1.call(obj,10,20);
var timer= setInterval(function(){
clearInterval(timer); //停止
},1000);
JS 事件 是由 访问 web 页面的用户 引起的一系列操作 当用户执行某些操作的时候,再去执行一系列代码,或者用来获取事件的详细信息,如鼠标位置,键盘key值等
事件处理函数类型 分为:
on
+ 事件名称通过事件绑定的的执行函数可以得到一个隐藏的参数, 由浏览器自动分配的一个参数,这个参数就是Event 对象
oDiv.onclick = function(e){
var env = e || event;
console.log(en);
}
JS 默行为 例如:
event.preventDafault(); event.returnValue = false; return false; 阻止冒泡事件 env.cancelBubble = true env.stopPropagation()
HTTP :超文本传输协议,用于从web服务器传输超文本到本地浏览器的传输协议,它是一个 无状态的协议。 Cookie : 是指 缓存在本地客户端的数据 Cookie的基本操作
document.cookie = "user = five";// 设置cookie
console.log(document.cookie); // 查询cookie
var oDate = new Date();
oDate.setDate(oDat.getDate()+3); //缓存3天
document.cookie = "user = five; expiress="+oDate
document.cookie = "user = five2";
document.cookie = "user = LHL";
*
使用方式: 1.字面量的方式 2. 构造函数的方式 使用方法:
true
没有则 false
格式 :reg.test(str); 字符 | 功能 | 样例 | 样例结果 |
---|---|---|---|
. | 除了换行符以外的所有单个字符 | ||
* | 重复多次匹配 |
var reg = /abc/; // 1.字面量的方式
var reg = new RegExp('abc'); // 2. 构造函数的方式
console.log(reg.test('sab'));
{}
概念: 按照一定模式,从数组和对象中提取值,对变量进行赋值。
// 数组 :
let [a,b,c] = [1,2,3];
// 默认赋值
[a=2,b] = [3]; // 3 undefined
[a=2,b] = [,3]; // 2 3
let c;
[a=3]=[c];
// 对象 :
let {a,b} = {a:"aaa",b:"bbb"};
let {a:b} = {}
//ES5
var obj = { 'name': 'five','age': 22};
console.log(obj.name+"的年龄"+obj.age);
// ES6
let obj = { 'name': 'five','age': 22};
console.log(`${obj.name}的年龄${obj.age}`);
this
的指向 :指向定义时所在作用域,而不是执行时的作用域 //ES5
var f = funtion (a,b){ return a+b;}
//ES6
let f = (a,b) => 1;
let f = (a,b) => { return a+b;}
// ============this 指向=================//
//ES5
var obj = {
name : 'Five',
sayHello : function () {
console.log(this)://{name: "Five", sayHello: ƒ}
}
}
//ES6
var obj = {
name : 'Five',
sayHello : () => {
console.log(this):// window{...}
}
}
var obj = {
name : 'Five',
sayHello : () => {
console.log(this):// window{...}
}
}
概念 :它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。
扩展运算符...
: Set转数组
var set = new Set([1,2,2,3,4,2]);
var arr = [ ... set];
var set = new Set([1,2,3,4,2]);//结构
var speedX = 3;
var div = document.querySetector('div');
function move() {
var currLeft = parseInt(window.getComputedStyle(div).left)
}
*
__proto__
指向 父类原型 prototype
this
指向这个对象*
var xhr = new XMLHttpRequest ();
xhr.onreadystatechange = function (){
// 0 ===> xhr 对象已经创建
// 1 ===> xhr 对象已经调用open
// 2 ===> xhr 对象以发 Ajax 请求
// 3 ===> 已返回部分数据
// 4 ===> 数据已经全部返回完毕
if(xhr.readyState !== 4) {return;}
if(xhr.status >= 200 && xhr.status <= 300){
console.log('success!');
console.log(xhr.responseText);
}else {
console.log('请求失败');
}
}
xhr .opn('get','./test.txt', true)
xhr .send()
var xhr = new XMLHttpRequest ();
xhr.onreadystatechange = function (){
// 0 ===> xhr 对象已经创建
// 1 ===> xhr 对象已经调用open
// 2 ===> xhr 对象以发 Ajax 请求
// 3 ===> 已返回部分数据
// 4 ===> 数据已经全部返回完毕
if(xhr.readyState !== 4) {return;}
if(xhr.status >= 200 && xhr.status <= 300){
console.log('success!');
console.log(xhr.responseText);
}else {
console.log('请求失败');
}
}
xhr .opn('get','./test.txt', true)
xhr .setRequestHeader('Content-Type','application/-x-www-form-urlencoded');
xhr .send('username=Five&&password=123456');
*
$ <===> jQuery
gulp.task('copy',['copy-html','copy-js','copy-css'],function(){ // 管道处理机制
gulp.src('./src/**/*.*') //获取文件
.pipe(xxx1()) // 执行任务1
.pipe(xxx2()) // 执行任务2
.pipe(gulp.dest('./dist/xxx')) //存储路径
})
插件引入
var XXX = require('gulp-xxx');
严格模式下 浏览器对 JS 要求将会更加苛刻 ‘‘use strict’’; 写到哪 那个区域下所有代码遵从 严格模式。(不要轻易全局模式下使用) 例如:
// 非严格模式下 可行 , 未申明(var)变量 m在赋值时, 会默认当全局变量处理
function f(){
m=100
}
f();
// 严格模式下 可行 , 未申明(var)变量 m在赋值时, 会报错
function f(){
"use strict";
m=100
}
f();
&it => ‘<’ > => ‘>’