面试中的一些小问题之html5和html4的区别

面试中的一些小问题之html5和html4的区别,第1张

Html5和Html的区别

1、文档类型声明

HTML4.01和XHTML1.0

strict模式:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

过渡模式:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

框架集:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"

"http://www.w3.org/TR/html4/frameset.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

HTML5.0:

<!DOCTYPE html>

文档声明HTML5方便书写,精简,有利于程序员快速的阅读和开发。

2、结构语义

html4.0:没有体现结构语义化的标签,如:

<div id="nav"></div>

html5:添加了许多具有语义化的标签,如:

<article>、<aside>、<audio>、<bdi>...

3、HTML5的绘图功能

Canvas:HTML5的canvas元素使用脚本(通常使用JavaScript)在网页上绘制图像,可以控制画布每一个像素。

SVG:指可伸缩矢量图形,用于定义网络的基于矢量的图形。

今天小编要跟大家分享的文章是关于参加Web前端面试的常见面试题汇总。准备参加Web前端面试的小伙伴们来和小编一起看一看吧,希望本篇文章能够对大家有所帮助。

1.渐进增强与优雅降级

渐进增强

并不是一种技术,而是一种设计思想。各个浏览器的渲染能力各不相同,要做一个每个人都能看到的网页、感受到的体验都一致的网站几乎不可能。但还是得网站的可访问性,保证用户在任何环境下都能正常访问网页得核心内容或能使用基本功能(避免网页打不开、排版错误等),并为他们提供当前条件下最好的体验,这就是渐进增强得核心思想。

优雅降级也是一种设计思想,为了保证在高版本浏览器中提供最好的体验,碰到低版本浏览器再降级进行兼容处理,使其能正常浏览。

这两种思想的区别在于:

1.渐进增强是向上兼容,优雅降级是向下兼容

2.渐进增强是从简单到复杂,优雅降级是从复杂到简单

3.渐进增强关注的是内容(保证核心内容),优雅降级关注的是浏览体验(为了兼容低版本浏览器)

2.DOCTYPE

作用

DTD(DocumentTypeDefinition,文档类型定义)是一系列的语法规则,用来定义XML或(X)HTML

的文档类型。浏览器会使用它来判断文档类型,决定何种协议来解析,以及切换浏览模式。

DOCTYPE是用来声明文档类型和DTD

规范的,一个主要的用途便是文件的合法性验证。如果文档代码不合法,那么浏览器解析时便会出现一些差错。

HTML5的文档类型声明:

HTML4.01Strict(HTML4.01严格模式)的DTD包含所有HTML

元素和属性,但不包括展示性的和弃用的元素(如font),它的文档类型声明:

-//W3C//DTDXHTML1.0Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

标准模式与怪异模式

怪异模式(Quirks

Mode)用于模拟旧浏览器的行为。早期的网站并不会遵循完整的规范,随着浏览器支持越来越多的规范,在那些旧的浏览器中开发的页面在显示时会被破坏。为了向后兼容,浏览器发明了怪异模式,一行错误或无效的

DOCTYPE都会触发怪异模式。

浏览器使用文件开头的DOCTYPE来决定用怪异模式处理或标准模式处理。DOCTYPE

可以确保不同浏览器以相同的方式解析文档,以及执行相同的渲染模式。

怪异模式与标准模式的主要区别:

1.怪异模式的宽度和高度会包含padding和border。标准模式不包含,标准模式下可以通过设置box-sizing:

border-box将标准盒模型转化成怪异模式下的盒模型。

2.怪异模式下,当内容超出容器高度时,会将容器拉伸,而不是溢出。

3.怪异模式下,在表格中的字体样式(如font-size)不会继承。

4.怪异模式下颜色值必须使用十六进制标记法。

3.语义化

HTML5

中的语义化就是让元素、属性或属性值有含义,更准确地标记特定类型的内容。对元素语义化的目的是为了让元素的语义和呈现分离,元素只负责文档内容的结构与含义,而CSS

样式控制内容的呈现,像元素,没有语义但却能将字体变粗,这类元素违背了语义化的目的,将会被废弃。

优点

·使得HTML文档结构清晰、布局合理、主体突出、可读性更强。

·有利于SEO,搜索引擎根据标签来确定上下文和各个关键字的权重。

·方便其他设备解析,如盲人阅读器根据语义渲染网页。

·有利于开发和维护,语义化更具可读性,代码更好维护,与CSS3关系更和谐。

语义化标签

·定义文档的页眉区域,应作为介绍内容或者导航链接栏的容器

·footer内容的页脚,通常包含该章节作者、版权数据或者与文档相关的链接等信息

·article

文档、页面、应用或网站中的独立结构,是可独立分配的、可复用的结构,如在发布中,它可能是论坛帖子、杂志或新闻文章、博客、用户提交的评论、交互式组件,或者其他独立的内容项目

·nav描述一个含有多个超链接的区域,该区域包含跳转到其他页面或页面内部其他部分的链接列表

·section表示文档中的一个区域(或节),比如,内容中的一个专题组

·main定义文档的主要内容,该内容在文档中应当是独一无二的,不包含任何在文档中重复的内容,比如侧边栏,导航栏链接,版权信息,网站

logo,搜索框(搜索框作为文档的主要内容)

·aside

表示一个和其余页面内容几乎无关的部分,被认为是独立于该内容的一部分且可以被单独的拆分出来而不会影响整体。通常表现为侧边栏或嵌入内容。

4.超链接伪类

:link、:visited、:active和:hover的声明顺序是怎样的?

:link表示未访问的链接状态

:visited表示已访问状态:active表示激活状态(鼠标按下):hover表示悬停状态。

推荐顺序是LVHA,即:link:visited:hover:active。理由如下:

·当鼠标悬停在未访问的链接上时,:link和:hover都会命中,如果:hover在:link

之前声明,那么(:hover)就会被覆盖

·当鼠标悬停在已访问的连接上时,:visited和:hover都会命中,如果:hover在:visited

之前声明,那么(:hover)就会被覆盖

·当鼠标单击链接时,:active和:hover都会命中,我们大多是想让:hover只在悬停时展示样式,按下鼠标时使用:active

样式,因此:active在:hover之后声明

·综上,:hover应在:link和:visited之后,在:active之前,因此active在最后。而:link和

:visited两者的顺序无所谓,互不影响。

5.CSS常见的长度单位

CSS中除了px长度单位之外,还有下面几个长度单位:

·pc六分之一英寸,1pc=12pt=1/6*1in=16px

·pt一磅,72分之一英寸。1pt=1/12_1pc=1/72_1in≈1.33px

·in一英寸,1in=2.54cm=96px

·ex在含有“X”字母的字体中,它是该字体的小写字母的高度。对于很多字体来说,1ex≈0.5em

·em1em等于父级元素的字体大小,2em就是父级元素字体大小的二倍

·rem当用在根元素()的font-size上面时,它代表了它的初始值

·ch代表元素所用字体font中“0”这一字形的宽度

·vh1vh相当于视口高度的1%,100vh就是视口的高度

·vw1vw相当于视口宽度的1%,100vw就是视口的宽度

·vmax视口高度vw和宽度vh两者中的最小值

·vmin视口高度vw和宽度vh两种中的最大值

·%相对于父级元素的大小来确定

参考:CSS[1]

CSSpercentage[2]

6.事件对象

冒泡与捕获

事件冒泡与捕获是事件处理的两种机制,主要描述当在一个元素上有两个相同类型的事件处理器被激活会发生什么。

在点击子元素时,浏览器运行了两种不同的阶段:捕获阶段和冒泡阶段。捕获阶段的行为:

·浏览器检查元素的最外层祖先,是否在捕获阶段中注册了一个onclick事件处理程序,如果是,则运行它

·

然后,它移动到中单击元素的下一个祖先元素,并执行相同的 *** 作,然后是单击元素再下一个祖先元素,依此类推,直到到达实际点击的元素

而冒泡与捕获恰恰相反:

·浏览器检查实际点击的元素是否在冒泡阶段中注册了一个onclick事件处理程序,如果是,则运行它

·然后它移动到下一个直接的祖先元素,并做同样的事情,然后是下一个,等等,直到它到达元素

而现代浏览器在默认情况下,所有事件处理程序都在冒泡阶段进行注册。因此上面代码在点击子元素时会先执行子元素绑定的事件,然后向上冒泡,触发父元素绑定的事件。

addEventListener函数的第三个参数是个布尔值。含义:

·当布尔值是false时(这也是默认值),表示向上冒泡触发事件

·当布尔值是true时,表示向下捕获触发事件

不能冒泡的事件

有些事件是不会冒泡的。比如:

·blur元素失去焦点时触发,focusout事件也是失去焦点时触发,但可以冒泡

·focus元素获取焦点时触发

·mouseenter鼠标移动到元素上时会触发该事件,与之对应的是mouseover事件,但会冒泡

·mouseleave鼠标离开元素时触发,与之对应的是mouseout,但会冒泡

事件冒泡可以让我们利用事件委托,尤其是处理大量子元素时,如果给每个子元素都绑定事件,这是不优雅的,可以将事件绑定到父元素上,并让子节点上发生的事件冒泡到父节点上,利用

e.target属性可以获取到当前触发事件的子元素。

事件对象中的方法

·stopPropagation()阻止事件冒泡,当设置后,点击该元素时父元素绑定的事件就不会再触发

·preventDefault()阻止默认事件的发生

·stopImmediatePropagation()它用来阻止监听同一事件的其他事件监听器被调用以及阻止事件冒泡,比如给同一个div

元素绑定多个click事件(使用addEventListener方法可以注册多个),当在第二个事件函数中调用

stopImmediatePropagation方法时,点击div元素时,后面注册的click将不会被触发,而且还会阻止事件冒泡

比如下面的例子,给p绑定多个click事件,在第二个事件函数中调用stopImmediatePropagation,第三个click

事件就不会触发,因为也阻止了冒泡,因此父元素的click事件也不会触发。

paragraph




document.querySelector("div").addEventListener("click",(event)=>{


alert("我是div元素,我是p元素的上层元素")


//p元素的click事件没有向上冒泡,该函数不会被执行


},false)


constp=document.querySelector('p')


p.addEventListener("click",(event)=>{


alert("我是p元素上被绑定的第一个监听函数")


},false)


p.addEventListener("click",(event)=>{


alert("我是p元素上被绑定的第二个监听函数")


event.stopImmediatePropagation()


//执行stopImmediatePropagation方法,阻止click事件冒泡,并且阻止p元素上绑定的其他click
事件的事件监听函数的执行.


},false)


p.addEventListener("click",(event)=>{


alert("我是p元素上被绑定的第三个监听函数")


//该监听函数排在上个函数后面,该函数不会被执行


},false)


在IE浏览器中,使用e.cancelBubble=true也可以取消事件冒泡使用e.returnValue=false

也能阻止默认事件的发生。

target与currentTarget

target属性指向的是事件目标,而currentTarget属性指向的是正在处理当前事件的对象,它总是指向事件绑定的元素。而target

指向的可能不是定义时的事件目标。

例如:

div.addEventListener('click',(e)=>{

console.log(e.target,e.currentTarget)

},false)

e.target可能指向div元素,也可能指向它的子元素。而e.currentTarget总是指向div元素。

以上就是小编今天为大家分享的关于参加Web前端面试的常见面试题汇总的文章,希望本篇文章能够对正准备参加前端面试的小伙伴们有所帮助,想要了解更多Web前端知识记得关注北大青鸟Web前端培训官网,最后祝愿小伙伴们工作顺利,成为一名优秀的Web前端工程师。

参考资料

[1]

CSSlength:#/zh-CN/docs/Web/CSS/length

[2]

CSSpercentage:

#/zh-CN/docs/Web/CSS/percentage

Web前端经常被问到的面试题及答案

一、HTML+CSS

1.对WEB标准以及W3C的理解与认识

标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外

链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维

护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性

2.xhtml和html有什么区别

HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言

最主要的不同:

XHTML 元素必须被正确地嵌套。

XHTML 元素必须被关闭。

标签名必须用小写字母。

XHTML 文档必须拥有根元素。

3.Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

用于声明文档使用那种规范(html/Xhtml)一般为 严格 过度 基于框架的html文档

加入XMl声明可触发,解析方式更改为IE5.5 拥有IE5.5的bug

4.行内元素有哪些?块级元素有哪些?CSS的盒模型?

块级元素:div p h1 h2 h3 h4 form ul

行内元素: a b br i span input select

Css盒模型:内容,border ,margin,padding

5.CSS引入的方式有哪些? link和@import的区别是?

内联 内嵌 外链 导入

区别 :同时加载

前者无兼容性,后者CSS2.1以下浏览器不支持

Link 支持使用javascript改变样式,后者不可

6.CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?

标签选择符 类选择符 id选择符

继承不如指定 Id>class>标签选择

后者优先级高

7.前端页面有哪三层构成,分别是什么?作用是什么?

结构层 Html 表示层 CSS 行为层 js

8.css的基本语句构成是?

选择器{属性1:值1属性2:值2……}

9.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?

Ie(Ie内核) 火狐(Gecko) 谷歌(webkit) opear(Presto)

二、Javascript

1.javascript的typeof返回哪些数据类型

Object number function boolean underfind

2.例举3种强制类型转换和2种隐式类型转换?

强制(parseInt,parseFloat,number)

隐式(== – ===)

3.split() join() 的区别

前者是切割成数组的形式,后者是将数组转换成字符串

4.数组方法pop() push() unshift() shift()

Push()尾部添加 pop()尾部删除

Unshift()头部添加 shift()头部删除

5.事件绑定和普通事件有什么区别

6.IE和DOM事件流的区别

1.执行顺序不一样、

2.参数不一样

3.事件加不加on

4.this指向问题

7.IE和标准下有哪些兼容性的写法

Var ev = ev || window.event

document.documentElement.clientWidth || document.body.clientWidth

Var target = ev.srcElement||ev.target

8.ajax请求的时候get 和post方式的区别

一个在url后面 一个放在虚拟载体里面

有大小限制

安全问题

应用不同 一个是论坛等只需要请求的,一个是类似修改密码的

9.call和apply的区别

Object.call(this,obj1,obj2,obj3)

Object.apply(this,arguments)

10.ajax请求时,如何解释json数据

使用eval parse 鉴于安全性考虑 使用parse更靠谱

11.b继承a的方法

12.写一个获取非行间样式的函数

function getStyle(obj,attr,value)

{

if(!value)

{

if(obj.currentStyle)

{

return obj.currentStyle(attr)

}

else

{

obj.getComputedStyle(attr,false)

}

}

else

{

obj.style[attr]=value

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7303663.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存