前端基础重点回顾1: CSS盒模型、DOM、数据类型

CSS盒模型

标准模型与IE模型的区别

计算高度宽度不同

标准盒模型的width 是以盒模型的content 来计算的
box-sizing: content-box

IE盒模型的width 是以盒模型的border + padding + content 来计算的
box-sizing: border-box

CSS如何设置这两种模型

通过设置元素的box-sizing 属性

标准盒模型设置为box-sizing: content-box
IE盒模型设置为box-sizing: border-box

JS如何设置获取盒模型对应的宽和高

// 获取内联样式
dom.style.width / height 
// 获取渲染后的属性 IE 支持
dom.currentStyle.width / height
// 获取元素渲染后计算完毕的样式,所有浏览器支持
window.getComputedStyle(dom).width / height
// 计算元素的绝对位置
dom.getBoundingClientRect().width / height

dom.getBoundingClientRect() 函数不仅可以得到元素的宽高还能获得此元素在页面中的位置。[图片上传失败...(image-a1291e-1516628501105)]

BFC

什么是BFC

BFC(block formatting context) 是一个块级格式化上下文,它形成了一个独立的布局环境。

怎么创建一个BFC

1 设置float,值不为”none”
2 设置overflow,值不为”visible”(hidden,auto,scroll)
3 设置display的值为 “table-cell”, “table-caption”,或 “inline-block”
4 设置position,值不为 “static” 或 “relative”(absolute,fixed)

BFC 有什么特点

1 BFC 元素内的各元素会在垂直方向上从顶部一个接一个的放置。
2 BFC中的元素的布局是不受外界的影响,内外元素不会互相影响。
3 BFC元素不会与浮动元素的区域重叠
4 计算BFC元素高度的时候浮动元素也会参与计算 代码
5 属于同一个BFC的两个相邻Box的margin会发生叠加 代码

BFC 的使用场景

DOM

DOM事件的级别

// DOM0级
el.onclick=function(){}
// DOM2级
el.addEventListenter('click', function(){}, '是否捕获阶段触发': boolean)
// DOM3级 区别DOM2级增加了更多的事件类型
el.addEventListenter('keyup', function(){}, '是否捕获阶段触发': boolean)

DOM事件模型

  • 事件捕获
  • 事件冒泡

DOM事件流

DOM事件流(event flow)三阶段

事件触发(触发元素) => 事件捕获阶段(事件下传) => 处于目标阶段(达到目标元素) => 事件冒泡阶段(事件上传)

描述DOM事件捕获的具体流程

// IE 只有冒泡流程
window => document => html(document.documentElement) => body => ... => 目标元素

如何自定义事件

Event 对象

// 创建
var event = new Event('custome')
// 注册
el.addEventListener('custome', function(){
    console.log('custome')
})
el.dispatchEvent(event) // 触发

CustomEvent 对象

var event = new CustomEvent('build', { 'detail': elem.dataset.time });
function eventHandler(e) {
  console.log('The time is: ' + e.detail);
}
el.addEventListener('custome', eventHandler)
el.dispatchEvent(event) // 触发

Event对象的常见应用

event.preventDefault() // 阻止默认
event.stopPropagation() // 阻止冒泡
event.stopImmediatePropagation() // 按钮绑定两个click,A点击时候不出发B,A会成功阻止B, 事件响应优先级
event.target // 可以用于事件委托,由父级注册事件
event.currentTarget

currentTarget vs target

target在事件流的目标阶段;currentTarget在事件流的捕获,目标及冒泡阶段。只有当事件流处在目标阶段的时候,两个的指向才是一样的, 而当处于捕获和冒泡阶段的时候,target指向被单击的对象而currentTarget指向当前事件活动的对象(一般为父级)。

类型转换

  • 数据类型

    • 原始类型

    Boolean, String, Number, Null, Undefined, Symbol

    • 复杂类型(对象)

    Object

  • 显式类型转换
    Number函数

    简单类型: 直接转换end
    复杂类型: valueOf() => 简单类型 => 直接转换end || 复杂类型 => toString() => 简单类型 =>
    直接转换end

    String函数

    简单类型: 直接转换end
    复杂类型: toString() => 简单类型 => 直接转换end || 复杂类型 => valueOf() => 简单类型 =>
    直接转换end || 复杂类型error

    Boolean函数

    空字符串、Null、undefined、false、0 转化为false

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,744评论 1 92
  • 1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素? 行内元素:和有他元素都在一行上,高度、行高及外...
    极乐君阅读 2,412评论 0 20
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,145评论 0 1
  • “妈妈,我们错了,妈妈你就饶了我们吧,”隔壁又传来了女孩的哭喊声。“唉!”我叹气,这已经不知是第几次了! 刚搬来的...
    清泽阅读 411评论 2 2
  • 心门已经关闭就难以敞开。是因为锁太紧,那锁肯定没有找到合适的钥匙。是因为门太死,那也许就不必再费劲敞开,...
    云上行者168阅读 180评论 0 0