当前位置: 首页 > Web前端 > CSS

前端必备基础

时间:2023-03-30 17:17:49 CSS

1.DOM结构——两个节点之间可能存在什么关系以及如何在节点之间任意移动。1.包含与被包含A.contains(B)检测节点B是否为节点A的子节点,返回一个布尔值2.父子获取父节点:node.parentNode,node.parentElement,两者的区别二是后者只有获取Element才能获取子节点:childNodes(存在于NodeList对象中的子节点集合)、firstChild、lastChild3、peers(兄弟节点)nextSibling、previousSibling4、ElementTravelAPI添加到DOM的属性childElementCount,firstElementChild,lastElementChild,nextElementSilbling,previousElementSibling,它们与之前方法的区别在于Element多了,并且保证只返回元素节点,而之前方法中的普通文本节点和注释节点也会返回,而前面的方法在非IE浏览器中也会返回元素间的空白字符当文本节点返回5时,children属性和child的区别nodes就是children只包含元素子节点2、DOM操作——如何添加、删除、移动、复制、创建和查找节点等1.新建节点createDocumentFragment()创建DOM片段creatElement()创建具体elementcreatTextNode()创建一个文本节点2.添加、删除、替换、插入appendChild()removeChild()replaceChild()insertBefore()在现有子节点之前插入一个新的子节点3.查找getElementsByTagName()GetElementsByName()BytagnamegetElementsByName()通过元素的name属性的值getElementById()通过元素id,唯一性3.Events——如何使用事件,IE和标准DOM事件模型有区别。1、关于事件流(1)即事件流:事件冒泡被事件的目标(event.srcElement)接受,然后一步步向上(例如:下一个包含event.srcElement的节点传递事件直到文档节点document)(2)其他浏览器支持的另一种事件流:事件捕获,正好与事件冒泡相反。document节点document首先监听事件,然后逐级向下传递事件,直到节点target节点event.target(3)dom事件流dom2级事件规范的事件流结合了以上两者,分为事件流分为以下三个阶段:1.事件捕获阶段:不涉及事件目标,或者说这个阶段在目标之前结束。,在target阶段:被认为是冒泡阶段的一部分,所以可以在冒泡阶段对target事件进行事件操作3.事件冒泡阶段(4)规范和浏览器实现的区别捕获dom2级别事件规范的阶段,事件从文档节点文档传播。大多数现代浏览器从window对象传播事件。DOM2级事件规范捕获阶段不涉及事件目标。大多数现代浏览器在此阶段都包含事件目标。2.如何使用事件?以下事件处理程序用于响应事件htmleventhandler|dom0级事件处理程序|dom2级事件处理程序|ie事件处理器html事件处理器:指定事件:ClickMe!优缺点:简单,但与HTML代码紧耦合,不方便更改;delete事件:同DOM0的delete事件处理方法;dom0级事件处理器指定事件:document.onclick=function(){alert("documenthasbeenclicked")};优缺点:简单且跨浏览器的删除事件:document.onclick=null;本质:为元素指定方法(在Chestnut中为document指定onclick方法),移除方法,使其handler在元素范围内运行;dom2级事件处理程序:指定事件:addEventListener("事件名用引号括起来",事件触发后调用的事件处理器,是否在捕获节点调用时间处理器的布尔值)栗子:varfunA=function(){alert("DOM2级别事件处理程序")};document.addEventListener("点击",funA,false);移除事件:document.removeEventListener("click",funA,false);如果指定的处理程序是匿名函数,则无法删除,因为没有函数名;缺点:可以添加多个监听事件,但是必须指定函数名才能删除ie事件处理器(IE11以下,IE11和Edge使用的DOM2级事件处理器)指定事件:attachEvent("onclick",function(){alert("ie11不再支持")});删除一个事件:detachEvent("onclick",funA);如果指定的处理程序是匿名函数,则无法删除,因为没有函数名;优缺点:可以添加多个监听事件,缺点必须指定函数名才能删除3、ie和标准dom事件模型的区别。这里的IE低于IE11;参数上的区别:attachEvent()的第一个参数比addEventListener()的事件名“on”多一个,没有第三个参数,因为IE事件模型只支持冒泡事件流;事件处理函数作用域的区别:IE中的事件处理函数是全局作用域的,其中的this会指向窗口;而使用DOM(0or2)级事件的事件处理函数作用域是元素作用域,它里面的this指向它所属的元素例子:document.addEventListener("click",function(){if(this==document){alert("thispointstodocumentatthistime");}},false);事件对象eventIEDOM的属性方法的区别cancelBubble=truestopPropagation()//停止冒泡returnValue=falsepreventDefault()//阻止元素默认事件srcEelementtarget//事件目标4、XMLHttpRequest——这是什么,如何完成一个GET请求,如何检测错误1、关于XMLHttpRequest功能:提供网页加载完成后在后台与服务器通信的方法;实现AJAX通信;creation:varxhr=newXMLHttpRequest();//不适用于IE7之前的版本,其他低版本的IE可以通过ActiveXObject构造;readyState,可能的取值如图Object事件:readyState值的改变会触发readyStatechange事件;错误会触发错误事件;优缺点:更新网页无需重新加载页面;XMLHttpRequestlevel2:FromData对象:用于序列化表单或创建与表单相同格式的数据;它的实例可以直接传递给send()方法;例如:varform1=document.forms[0];xhr.send(新的FormData(form1));2。分析一个GET请求,异步检测执行过程GETvarxhr=newXMLHttpRequest();xhr.onerror=function(){alert("我犯了一个错误")};xhr.onreadystatechange=function(){switch(xhr.readyState){case0:alert("未初始化,未调用open方法");休息;case1:alert("已启动,尚未调用发送方法");休息;case2:alert("已发送,未收到响应");休息;case3:alert("接受,获取一些数据");休息;案例4:if((xhr.status>=200&&xhr.status<300)||xhr.status==304){alert(xhr.responseText);};休息;默认值:警报(“你在开玩笑吗?”);}};xhr。打开(“获取”,“网址”,真)//开始请求不发送xhr.send(null);//发送请求。如果请求处于异步模式(默认),该方法将立即返回。反之,如果请求是同步模式,直到请求的响应完成接受后,该方法会返回XMLHttpRequest.readyState可能的值:5.严格模式和混合模式——如何触发这两种模式,分别是什么区分它们的意义Doctype:(DocumentType)文档类型,它位于文档末尾最前面的位置,标签之前。如果要生成符合标准的页面,一个必不可少的关键组件是DOCTYPE声明。确认正确的Doctype后,xhtml中的logo和css就可以正常生效了(也就是说,它会告诉浏览器如何解释你的tag和你写的css)。既然是声明,它的职责就是告诉浏览器文档使用的是html还是xhtml规范。要获得正确的Doctype声明,关键是要使dtd与文档所遵循的标准相对应。例如:假设文档严格遵循xhtml1.0,那么文档的Doctype声明应该是对应的dtd。如果Doctype声明指定了xhtmldtd,但文档中仍然包含html标签,这是不合适的。同样,如果文档包含xhtml1.0strict标签,但在Doctype声明中指定htmldtd也是不合适的。1.我应该选择什么样的DOCTYPE?在xhtml1.0中,有3种类型的dtd声明可供选择,Transitional、Strict和Frameset。下面分别介绍一下:1.Transitional:一种要求不是很严格的,允许在html中使用html4.01标识(符合xhtml语法标准),transitionaldtd写法如下:2。Strict:Astrictdtdthatisnotallowedtobeused表示层的任何标识和属性,strictdtd写法如下:3。Frame:专门用于框架页面的dtd。当页面包含框架元素时,应使用此dtd。写法如下:PS:使用strictdtd制作页面当然是最理想不过,对于对web标准了解不深的网页设计师来说,使用transitionaldtd更合适,因为这种dtd也允许使用表示层的标识、元素和属性,这更适合大多数网页制作者(当然是力所能及的!)二、什么是标准模式和混合模式?不同的文档模式主要影响CSS内容的渲染,尤其是浏览器对盒模型的解析,但在某些情况下也会影响JavaScript的解释和执行。1.目前有四种文档模式:quirksmode//让IE的行为和IE5一样(包括非标准的特性)Standardsmode(标准模式)//让IE的行为更接近标准的行为quasi-standardmode(几乎是标准模式))//该模式下浏览器的很多特性都是符合标准的,不规范的地方主要体现在图片空隙的处理上(在表格中使用图片时问题最为明显)。超级标准模式//IE8引入的一种新的文档模式,超级文档模式允许IE在其所有版本中以最标准的方式解释网页内容。ps:一般来说,混合模式让IE和IE5一样,标准模式使用IE7的渲染引擎,超标准模式是IE8默认的文档模式。2.两种模式之间的差异两种模式之间差异的最显着示例与IE在Windows上的专有框模型有关。IE6出来的时候,在标准模式下使用正确的盒子模型,在混杂模式下使用老式的专有盒子模型。为了保持与IE5及更早版本的向后兼容性,Opera7及更高版本还在混杂模式下使用有缺陷的IE框模型。渲染中的其他差异较小且特定于浏览器,包括十六进制颜色值不需要#符号,假设像素是CSS中未指定单位的长度单位,以及使用关键字将字体大小增加一级。3.如何触发两种模式DOCTYPE的缺失或形式不正确会导致HTML和XHTML文档以混杂模式呈现。触发严格模式:触发混杂模式IE8disablesuperstandardmode必须写成
XHTML标签名必须使用小写字母XHTML文档必须有根元素XHTML文档要求给所有属性赋值XHTML要求所有属性必须用引号括起来""XHTML文档需要对所有特殊符号进行编码,如<,>,&等XHTML文档不要在注释中使用“--”XHTML图像必须有解释性文本XHTML文档中使用id属性代替name属性10.JSON-功能、用途、设计结构。用途:可以转换成任何语言的对象,json主要用于开发中的数据交互。json的对象格式与js相同,只是json字符串中的属性名必须用双引号引起来,其他必须与js语法一致;它是一种基于文本的、与语言无关的轻文本交换格式,易于人们阅读和编写,同时也是机器友好的解析和生成用法:json写法(结构):varjson1={"username":"smallly","age":20}varjson2=[{"username":"smallly","age":20},{"username":"liuteng","age":20},{"username":"lizhongshuo","age":20}]json中允许的值,1.String2.Value3.BooleanValue4.null5.Object6.arrayjson使用parse方法varo=JSON转为js对象.parse(json);console.log(o.name);js对象转换为jsonJSON.stringify()