前端面试题1-10

HTML常见题目

01、Doctype作用?严格模式与混杂模式如何区分?它们有何意义?

<!DOCTYPE> 声明帮助浏览器正确地显示网页

提示:请始终向 HTML 文档添加 <!DOCTYPE> 声明,这样浏览器才能获知文档类型。

作用:

声明文档的解析类型(document.compatMode),避免浏览器的怪异模式。

document.compatMode:

BackCompat:怪异模式,浏览器使用自己的怪异模式解析渲染页面。

CSS1Compat:标准模式,浏览器使用W3C的标准解析渲染页面。

这个属性会被浏览器识别并使用,但是如果你的页面没有DOCTYPE的声明,那么compatMode默认就是BackCompat -- 浏览器按照自己的方式解析渲染页面,那么,在不同的浏览器就会显示不同的样式。

如果你的页面添加了<!DOCTYPE html>那么,那么就等同于开启了标准模式 -- 浏览器就得老老实实的按照W3C的标准解析渲染页面,这样一来,你的页面在所有的浏览器里显示的就都是一个样子了。

<!DOCTYPE> 声明不是 HTML 标签;它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令。

02、HTML5为什么只需要写<!doctype html>?

html5不基于SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照他们应该的方式来运行)

而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。

ps: 1  SGML是标准通用标记语言,简单的说,就是比HTML,XML更老的标准,这两者都是由SGML发展而来的。
BUT,HTML5不是的。
     2  DTD:文档类型定义(Document Type Definition)是一套关百于标记符的语法规则。

03、行内元素有哪些?块级元素有哪些?空(void)元素有那些?

行内元素:a、b、span、img、input、strong、select、label、em、button、textarea

块级元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote

空元素:没有内容的HTML元素,例如:br、meta、hr、link、input、img

04、页面导入样式时,使用link和@import有什么区别?

   1   link是XHTML标签,它不仅可以引入css文件,还可以引入网站图标或者设置媒体查询。

    @import是CSS提供的语法规则,只能用来加载css。

    @import一定要写在除@charset外的其他任何 CSS 规则之前,如果置于其它位置将会被浏览器忽略。而且,在@import之后如果存在其它样式,则@import之后的分号是必须书写,不可省略的。

2 //引入css
<link href="main.css" rel="stylesheet">
//引入图标
<link rel="icon" href="favicon.ico">
//设置媒体查询
<link href="mobile.css" rel="stylesheet" media="screen and (max-width: 600px)">

 3   link引入css文件,页面载入同时载入css文件,@import在页面完全载入之后载入css文件,在网络较慢情况下一开始会没有css样式。
 4   link在浏览器中没有兼容问题。@import在css2.1中提出,低版本浏览器会不支持。
 5   link中的css可以被javascript获取进而控制DOM,而@import不支持。

示例: 使用@import导入css

<style>
	@import url(style.css);
<style>

或者在css文件中使用

@charset "utf-8";
@import url(style.css);
*{ margin:0; padding:0;}

 

05、介绍一下你对浏览器内核的理解?

主要分成两个部分:渲染引擎(Render Engine)和JS引擎。

渲染引擎:负责取得网页的内容(html,xml和图像等),整理讯息(例如css),以及计算网页的显示方式,然后输出到显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不同。所有网页浏览器、电子邮件客户端以及它需要编辑、显示网络内容的应用程序都需要内核。

JS引擎:解析和执行JavaScript来实现网页的动态效果。

最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向与只指渲染引擎。

 

1.什么是浏览器的内核?

浏览器最重要或者说最核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”。负责对网页语法的解释并渲染网页。所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。

2.它在浏览器中的作用是什么?

浏览器内核对于浏览器而言,是基础,是依托。如果没有了浏览器内核,那么浏览器是无法独立存在且产生作用的。它的存在,决定了网页的呈现的内容、格式以及效果。所以说,一个好的浏览器,一定是基于有一个稳定、高端、作用明显的浏览器内核的。

06、常见的浏览器内核有哪些?

四大浏览器内核:

(1)WebKit内核

Webkit:是苹果公司自主研发的内核,也是Safari浏览器使用的内核。 Webkit引擎包含渲染引擎WebCore和javascript引擎JSCore,均是从KDE的KHTML及KJS引擎衍生而来,它们都是自由软件,在GPL条约下授权,同时支持BSD系统的开发。所以Webkit也是自由软件,同时开放源代码。Google Chrome、360极速浏览器以及搜狗高速浏览器高速模式也使用Webkit作为内核。

(2)Gecko内核

Netscape6开始采用的内核,后来的Mozilla FireFox(火狐浏览器) 也采用了该内核,Gecko的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,Gecko内核的浏览器也很多,这也是Gecko内核虽然年轻但市场占有率能够迅速提高的重要原因。Gecko 内核的浏览器仍然还是Firefox (火狐) 用户最多,所以有时也会被称为Firefox内核。Gecko核心设计的相对成熟,在无法获取源码的情况下,开放程度仅次于IE。

(3)Trident内核

该内核程序在1997年的IE4中首次被采用,是微软在Mosaic代码的基础之上修改而来的,并沿用到IE11,也被普遍称作”IE内核”。Trident实际上是一款开放的内核,其接口内核设计的相当成熟,因此才有许多采用IE内核而非IE的浏览器(壳浏览器)涌现。由于IE本身的“垄断性”(虽然名义上IE并非垄断,但实际上,特别是从Windows 95年代一直到XP初期,就市场占有率来说IE的确借助Windows的东风处于“垄断”的地位)而使得Trident内核的长期一家独大。

Trident内核的常见浏览器有:IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0)、2345浏览器等。

(4)Presto内核

Presto是一个由Opera Software开发的浏览器排版引擎,供Opera 7.0及以上使用。该款引擎的特点就是渲染速度的优化达到了极致,也是目前公认网页浏览速度最快的浏览器内核,然而代价是牺牲了网页的兼容性。实际上它是一个动态内核,与其它几个内核的最大的区别就在脚本处理上,Presto有着天生的 优势,页面的全部或者部分都能够在回应脚本事件时等情况下被重新解析。此外该内核在执行Javascrīpt的时候有着最快的速度,根据在同等条件下的测 试,Presto内核执行同等Javascrīpt所需的时间仅有Trident和Gecko内核的约1/3(Trident内核最慢,不过两者相差没有多大)

07、html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?

新特性:

1. 拖拽释放(Drag and drop) API

2. 语义化更好的内容标签(header,nav,footer,aside,article,section)

3. 音频、视频API(audio,video)

4. 画布(Canvas) API

5. 地理(Geolocation) API

6. 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;

7. sessionStorage 的数据在浏览器关闭后自动删除

8. 表单控件,calendar、date、time、email、url、search  

9. 新的技术webworker, websocket, Geolocation

移除的元素:

1. 纯表现的元素:basefont,big,center,font, s,strike,tt,u;

2. 对可用性产生负面影响的元素:frame,frameset,noframes;

 

HTML5新标签的浏览器兼容问题是浏览器不能识别HTML5新标签而不能使用,解决办法有两种:

  •  方法1:实现标签被识别

通过document.createElement(tagName)方法即可让浏览器识别新标签,浏览器支持新标签后,还可以为新标签添加CSS样式。

  • 方法2:JavaScript解决方案

   A)使用html5shim:

   在<head>中调用以下代码:

    <!--[if lt IE 9]>

           <script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>

    <![endif]-->

   当然也可以直接把这个文件下载到自己的网站上,但这个文件必须在head标签中调用。

 

   B)使用kill IE6

   在</body>之前调用以下代码:

    <!--if lte IE 6]>

           <script src="http://letskillie6.googlecode.com/svn/trunk/letskillie6.zh_CN.pack.js"></script>

       <![endif]-->

08、如何区分HTML和HTML5?

1.DOCTYPE声明变化:

    HTML4中需要指明是HTML的哪个版本,HTML5不需要,只使用<!DOCTYPE html>即可。

2. 新增的元素和废除的元素

  新增元素:heade、footer、nav(表示页面中导航部分)、article、  video 、 audio、hidden属性

  去除元素:frame(只是有iframe)

09、简述一下你对HTML语义化的理解?

1.什么是HTML语义化?

根据内容的语义化(内容结构化),选择合适的标签(代码语义化),便于开发者阅读和写出更优雅的代码,同时让浏览器的爬虫和机器很好的解析。

2.为什么要语义化?

  • 为了在没有css的情况下,页面也能呈现出很好的内容结构和代码结构。
  • 为了提升用户体验,如:title,alt用于解释名词或解释图片信息,lable标签的活用。
  • 有利于和搜索引擎建立良好的沟通。
  • 方便其他设备解析(如屏幕阅读器,盲人阅读器,移动设备),以意义的方式来渲染网页。
  • 便于团队的开发和维护,语义化更具有可读性,是下一步网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。

3.写HTML代码是应注意什么?

  • 尽可能少的使用无语义的标签div和span
  • 在语义不明显时,既可以使用div或者时,尽量用p,因为p在默认情况下有上下间距,对兼容特殊终端有利。
  • 不要使用纯样式的标签,如:b,font,u等,改用css设置。
  • 需要强调的文本,可以包含在strong(加粗)或者em(斜体)标签中(浏览器预设样式,能用css样式就不用它们)
  • 使用表格,标题要用caption,表头用thead,主体部分用tbody包围,尾部要tfoot包围。表头和一般单元格要区分开,表头用th,单元格用td
  • 表单域要用fieldset标签包起来,并用legend标签说明标签的用途。
  • 每个input标签对应的文本框都需要使用label标签,并且通过为input设置id属性,在label标签中设置for=someID来说明文本和相对应的input关联起来

简单来说就是:

用正确的标签做正确的事情。html语义化让页面的内容结构化,结构更清晰,便于对浏览器,搜索引擎解析;

即使在没有css样式的情况下,也以一种文档格式显示,并且是容易阅读的;

搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;

使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

10、HTML5的离线储存怎么使用,工作原理能不能解释一下?

HTML5离线存储存储功能非常强大,它的作用是:在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,自动更新缓存数据。

原理:
HTML5的离线存储是基于一个新建的.appcache文件的,通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。

浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?

    在线的情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。
    离线的情况下,浏览器就直接使用离线存储的资源。

原文链接:https://blog.csdn.net/weixin_41258179/article/details/97820275

希望有所收获!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值