嗨!大家好!我是法医,一只治疗系前端码猿,与代码对话,倾听它们心底的呼声,期待着大家的点赞与关注➕。
最近整理了一些前端高频面试题,分享给大家,如有问题欢迎留言指正,面试专栏我会长期更新,欢迎大家点赞、收藏,感谢!
Doctype
是HTML5的文档声明,通过它可以告诉浏览器,使用哪一个HTML版本标准解析文档。在浏览器发展的过程中,HTML出现过很多版本,不同的版本之间格式书写上略有差异。如果没有事先告诉浏览器,那么浏览器就不知道文档解析标准是什么?此时,大部分浏览器将开启最大兼容模式来解析网页,我们一般称为怪异模式
,这不仅会降低解析效率,而且会在解析过程中产生一些难以预知的bug
,所以文档声明是必须的。
HTML标签的语义化,简单来说,就是用正确的标签做正确的事情,给某块内容用上一个最恰当最合适的标签,使页面有良好的结构,页面元素有含义,无论是谁都能看懂这块内容是什么。
语义化的优点如下:
src和href都是HTML中特定元素的属性,都可以用来引入外部的资源。两者区别如下:
构成:结构层
、表示层
、行为层
结构层(structural layer)
结构层类似于盖房子需要打地基以及房子的悬梁框架,它是由HTML超文本标记语言来创建的,也就是页面中的各种标签,在结构层中保存了用户可以看到的所有内容,比如说:一段文字、一张图片、一段视频等等
表示层(presentation layer)
表示层是由CSS负责创建,它的作用是如何显示有关内容,学名:层叠样式表
,也就相当于装修房子,看你要什么风格的,田园的、中式的、地中海的,总之CSS都能办妥
行为层(behaviorlayer)
行为层表示网页内容跟用户之间产生交互性,简单来说就是用户操作了网页,网页给用户一个反馈,这是JavaScript
和DOM
主宰的领域
iframe也称作嵌入式框架,嵌入式框架和框架网页类似,它可以把一个网页的框架和内容嵌入到现有的网页中。
优点:
缺点:
alternate
,切换的意思,如果无法显示图像,浏览器将显示alt指定的内容区别:
一般当鼠标滑动到元素身上的时候显示title
,而alt
是img标签特有的属性,是图片内容的等价描述,用于图片无法加载时显示,这样用户还能看到关于丢失了什么东西的一些信息,相对来说比较友好。
常见的块级元素:p、div、form、ul、li、ol、table、h1、h2、h3、h4、h5、h6、dl、dt、dd
常见的行级元素:span、a、img、button、input、select
块级元素:
行内元素:
使用行内元素需要注意的是:
width
无效height
无效,但是可以通过line-height
来设置margin
只有左右有效,上下无效padding
只有左右有效,上下无效可以通过display
属性对行内元素和块级元素进行切换(主要看第 2、3、4
三个值):
label
元素不会向用户呈现任何特殊效果,但是,它为鼠标用户改进了可用性,当我们在label元素内点击文本时就会触发此控件。也就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。最常用label的地方就是表单中的性别单选框了,当点击文字时也能够自动聚焦绑定的表单控件。
<form>
<label for="male">男label>
<input type="radio" name="sex" id="male">
<label for="female">女label>
<input type="radio" name="sex" id="female">
form>
Web标准
简单来说可以分为结构、表现、行为。其中结构是由HTML各种标签组成,简单来说就是body里面写入标签是为了页面的结构。表现指的是CSS层叠样式表,通过CSS可以让我们的页面结构标签更具美感。行为指的是页面和用户具有一定的交互,这部分主要由JS组成
W3C
,全称:world wide web consortium是一个制定各种标准的非盈利性组织,也叫万维网联盟,标准包括HTML、CSS、ECMAScript等等,web标准的制定有很多好处,比如说:
页面如果写了DTD,就意味着这个页面采用对CSS支持更好的布局,而如果没有,则采用兼容之前的布局方式,这就是Quirks模式,有时候也叫怪癖模式、诡异模式、怪异模式。
区别:总体会有布局、样式解析、脚本执行三个方面区别,这里列举一些比较常见的区别:
盒模型
:在W3C标准中,如果设置一个元素的宽度和高度,指的是元素内容的宽度和高度,然而在Quirks模式下,IE的宽度和高度还包含了padding和border设置行内元素的高宽
:在Standards模式下,给行内元素设置width和height都不会生效,而在Quriks模式下会生效用margin:0 auto设置水平居中
:在Standards模式下,设置margin:0 auto;可以使元素水平居中,但是在Quriks模式下失效设置百分比高度
:在Standards模式下,元素的高度是由包含的内容决定的,如果父元素没有设置百分比的高度,子元素设置百分比的高度是无效的所谓的微格式是建立在已有的、被广泛采用的标准基础之上的一组简单的、开放的数据格式。
具体表现是把语义嵌入到HTML中,以便有助于分离式开发,并通过制定一些简单的约定,来兼顾HTML文档的人机可读性,相当于对web网页进行语义注解。
采用微格式的web页面,在HTML文档中给一些标签增加一些属性,这些属性对信息的语义结构进行注解,有助于处理HTML文档的软件,更好的理解HTML文档。当爬取web内容时,能够更为准确地识别内容块的语义,微格式可以对网站进行SEO优化。
?为什么HTML5只需要写一段:
DOCTYPE html>
而HTML4却需要写很长的一段
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
其实主要是因为HTML5不基于SGML,所以不需要引用DTD。在HTML4中,声明引用DTD,因为HTML4基于SGML。DTD规定了标记语言的规则,这样浏览器才能正确的呈现内容。
HTML5主要是关于图像、位置、存储、多任务等功能的增加:
移除的元素:
basefont、font、s、strike、tt、u、big、center
frame、frameset、noframes
主要有两种方式:
document.createElement(tagName)
方法可以让浏览器识别新的标签,浏览器支持新标签后。还可以为新标签添加CSS样式head
标签中调用以下代码:<!--[if lt IE 9]>
<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
<![endif]-->
我们可以通过图片热区技术:
标记中设置参数usemap="#Map"
,以表示对图像地图的引用。
标记设定图像地图的作用区域,并取名:Map;
标记针对相应位置互粉出多个矩形作用区域,并设定好链接参数href
例:
<body>
<img src="./image.jpg" alt="" usemap="#Map" />
<map name="Map" id="Map">
<area alt="" title="" href="#" shape="poly"
coords="65,71,98,58,114,90,108,112,79,130,56,116,38,100,41,76,52,53,83,34,110,33,139,46,141,75,145,101,127,115,113,133,85,132,82,131,159,117" />
<area alt="" title="" href="#" shape="poly" coords="28,22,57,20,36,39,27,61" />
map>
body>
href属性中的url可以是浏览器支持的任何协议,所以a标签可以用来手机拨号110
,也可以用来发送短信110
,还有邮件等等
当然,a元素最常见的就是用来做锚点和 下载文件。
锚点可以在点击时快速定位到一个页面的某个位置,而下载的原理在于a标签所对应的资源浏览器无法解析,于是浏览器会选择将其下载下来。
在SEO中,TDK其实就是title
、description
、keywords
这三个标签,title表示标题标签,description是描述标签,keywords是关键词标签