css盒模型
box-sizing:content-box; //标准模型
box-sizing:border-box; //盒模型
获取dom模型宽高
dom.style.width/height //只能取到内链样式表
window.getComputedStyle(dom).width/height
dom.getBoundingClientRect().width/heigh
BFC 块级格式化上下文--边距重叠解决方案
垂直方向边距重叠,区域不会与服务区域重叠,独立区域,计算高度时浮动元素
创建BFC:
- float不为none
- position:不是static或者relative
- display:fixed inline-box
- overflow 创建BFC还有,清除浮动
DOM事件
- DOM事件级别
- DOM事件模型 捕获和冒泡
- DOM事件流
- DOM事件捕获的具体流程
- Event对象的常见应用
- 自定义事件
dom2 element.addEventListener('click',function(){},false) //默认:false冒泡阶段,ture捕获阶段
dom3 element.addEventListener('keyup',functino(){})
事件流:
捕获->目标元素->window对象
window->document->html->body
html----------document.documentElement
event常见应用
event.preventDefault()
event.stopPropagation()
event.stopImmediatePropagation();
event.currentTarget() //事件代理
event.target() //具体元素
自定义事件
var eve = new Event('custom') //new Custome可以加入数据
ev.addEventListener('custome',function(){
console.log('custome');
});
ev.dispatchEvent(eve)原型链
创建原型对象有几种方法
var o1 = {name:'o1'} //默认原型链指向Object
var o11= new Object({name:'o11'})
var M= function(name){
this.name = name
}
var o2 = new M('o2') //原型对象指向构造函数 M
var P={name:'o3'}
var o3 = Object.create(P) //通过原型链
M.protptype.constructor === M //true
o3.__proto__ === M.prototype //true
M.__proto__ ===Fucntion.prototype //true函数也是个对象instanceof 实例对象__proto__ 是不是在原型对象(构造函数prototype)链上
constructor 比用instanceof更严谨
new运算符
- 一个新对象被创建。 它继承自foo.prototype
- 构造函数foo被执行。执行的时候,相应的传参会被传入,同时上下文this会被指定为这个新实例new foo等同于new foo(),只能用在不传递任何参数的情况。
- 如果构造函数返回了一个“对象”, 这个对象会取代整个new 出来的结果。如果构造函数没有返回对象,那么new出来的结果为步骤一创建的对象
var new2 = function(func){
var o = Object.create(function.prototype)
var k = func.call(o)
if(typeof k === 'object'){
return k
}else{
return o
}
类与实例
类与继承