1.什么是盒子模型?
盒子模型有两种,标准盒子模型和IE盒子模型。
标准盒子模型:width = content + padding + border + margin
IE盒子模型:content 包括了 padding 和 border
2.简述一下src与href的区别?
简要:
1.src 是指向物件的来源地址,是引入。在 img、script、iframe 等元素上使用。
2.href 是超文本引用,指向需要连结的地方,是与该页面有关联的,是引用。在 link和a 等元素上使用。
3.src通常用作“拿取”(引入),href 用作 "连结前往"(引用)。
详细:
href标识超文本引用,用在link和a等元素上,href是引用和页面关联,是在当前元素和引用资源之间建立联系。
src表示引用资源,表示替换当前元素,用在img,script,iframe上,src是页面内容不可缺少的一部分。src是source的缩写,是指向外部资源的位置,指向的内部会迁入到文档中当前标签所在的位置;在请求src资源时会将其指向的资源下载并应用到当前文档中,例如js脚本,img图片和frame等元素。
如当浏览器解析到这一句的时候会暂停其他资源的下载和处理,直至将该资源加载,编译,执行完毕,图片和框架等元素也是如此,类似于该元素所指向的资源嵌套如当前标签内,这也是为什么要把js放在底部而不是头部。
如当浏览器解析到这一句的时候会识别该文档为css文件,会下载并且不会停止对当前文档的处理,这也是为什么建议使用link方式来加载css而不是使用@import。
补充:link和@import的区别
区别1:link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS。
区别2:link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。
区别3:link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持。
区别4:ink支持使用Javascript控制DOM去改变样式;而@import不支持。
3.简述同步和异步的区别?
简单来说,可以改变程序正常执行顺序的操作就是异步操作。
SetTimeout 和 SetInterval 就是一种简单的异步函数。
所有任务可以分成两种,一种是同步任务,另一种是异步任务。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入“任务队列”的任务,只有等主线程任务执行完毕,“任务队列”开始通知主线程,请求执行任务,该任务才会进入主线程执行。
异步运行机制如下:
所有同步任务都在主线程上执行,形成一个执行栈。
主线程之外,还存在一个任务队列。只要异步任务有了运行结果,就在“任务队列”中放置一个事件。
一旦“执行栈”中的所有同步任务执行完毕,系统就会读取“任务队列”,看看里面有哪些事件。那些对应的异步任务,于是结束等待装袋,进入执行栈,开始执行。
主线程不断重复以上三步。
参考链接:www.ruanyifeng.com/blog/2014/10/event-loop.html
JS异步编程的四种方法:http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html
4.怎样添加、移除、移动、复制、创建和查找节点?
(1)创建新节点
createDocumentFragment()//创建一个DOM片段
createElement()//创建一个具体的元素
createTextNode()//创建一个文本节点
(2)添加、移除、替换、插入
appendChild()
removeChild()
replaceChild()
insertBefore()
(3)查找
getElementsByTagName()//通过标签名称
getElementsByName()//通过元素的Name属性的值
getElementById()//通过元素Id,唯一性