1.什么是HTML?
HTML是用来描述网页的一种语言
- HTML指的是超文本标记语言(Hyper Text Markup Language)-
- HTML不是一种编程语言,而是一种标记语言(markup language)
- 标记语言是一套标记标签(markup tag)
- HTML使用标记标签来描述网页
2.HTML、XML、XHTML之间的区别
- HTML:超文本标记语言,语法松散、不严格的标记语言
- XML:可扩展标记语言,主要用于存储数据和结构
- XHTML:可扩展超文本标记语言,基于XML,作用与HTML类似,语法更严谨更纯净的HTML版本
HTML与XHTML的区别:
- XHTML 元素必须被正确地嵌套
- XHTML 元素必须被关闭
- XHTML 标签名必须使用小写字母
- XHTML 文档必须拥有根元素
3.HTML语义化
1. 什么是语义化
语义化是指根据内容的结构化(内容语义化),选择合适的标签(标签语义化),便于开发者阅读和写出更规范的代码的同时,让浏览器的爬虫和机器更好的解析。
2. 为什么要语义化?
有利于SEO
和搜索引擎建立良好的沟通,有助于爬虫抓取更多的有效信息,爬虫是依赖于标签来确定上下文和各个关键字的权重清晰的页面结构
语义化的HTML在没有CSS的情况下也能呈现较好的内容结构和代码结构,增强页面的可读性便于团队开发和维护
在团队中大家遵循同一个标准,使用规范的代码,方便开发和维护,提高开发效率方便其他设备的解析
4. 怎样理解内容与样式分离的原则
HTML——结构
写HTML的时候先不管样式,重点放在HTML的结构和语义化上,让HTML能体现页面结构和内容
CSS——表现
写完HTML的结构和内容后,再进行CSS样式的编写,减少HTML与CSS契合度(即内容与样式分离)
JavaScrip——行为
写JS的时候,尽量不要用JS去直接操作样式,而是通过给元素添加删除class来控制样式变化(即行为分离)
样式结构分离优点:
- 浏览器加载网页页面速度变快。分离原则下,页面样式的代码写在了CSS当中,页面体积容量变得更小
- 修改网页样式时,更有效率、更省时间。根据html标签内ID或class的标记,到CSS里找到相应的ID或class,可以快速替换指定位置的样式,不会破坏页面架构和其他部分的样式
- 可以确保网页都能平稳退化。具备CSS支持的浏览器固然可以把网页呈现的美轮美奂,不支持或禁用了CSS功能的浏览器同样可以把网页的内容按照正确的内容结构显示出来
5.有哪些常见的meta标签
1.meta标签定义和用法
- <meta>元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词
- <meta>标签位于文档的头部,不包含任何内容;<meta>标签的属性定义了与文档相关联的名称/值对
2.常见meta标签用法
<meta charset="utf-8">
告诉浏览器页面的编码方式
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
双核浏览器时,指定使用哪种内核进行解析
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
用于移动端的展示合理
<meta name="keywords" content="前端 饥人谷">
搜索引擎优化,网页关键字
<meta name="description" content="最有爱的前端学习社区">
搜索引擎优化,网站描述信息
<meta name="author" content="你的姓名">
搜索引擎优化,站点的作者
<meta http-equiv="Content-Type" content="text/html";charset=utf-8">
指定字符集
<meta http-equiv="refresh" content="n;url=">
定时让网页在指定的时间n内跳转
<meta http-equiv="pragma" content="no-cache">
禁用缓存
<meta http-equiv="set-cookie" content="Mon,12 May 2001 00:20:00 GMT">
cookie设定,如果网页过期,存盘的cookie将被删除。需要注意的也是必须使用GMT时间格式
6. 文档声明的作用?严格模式和混杂模式指什么?<!doctype html> 的作用?
1. Doctype作用是什么?
- <!DOCTYPE>声明叫做文件类型定义(DTD),声明的作用是为了告诉浏览器该文件的类型。让浏览器解析器知道应该用哪个规范来解析文档。
- <!DOCTYPE>声明必须在HTML文档的第一行,这并不是一个HTML标签。
2.严格模式与混杂模式如何区分?它们有何意义?
严格模式:又称标准模式,是指浏览器按照W3C标准解析代码
混杂模式:又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码
如何区分:浏览器解析时到底使用严格模式还是混杂模式,与网页中的DTD直接相关
- 如果文档包含严格的 DOCTYPE ,那么它一般以严格模式呈现。(严格 DTD ——严格模式)
- 包含过渡 DTD 和 URI 的 DOCTYPE ,也以严格模式呈现,但有过渡 DTD 而没有 URI (统一资源标识符,就是声明最后的地址)会导致页面以混杂模式呈现。(有 URI 的过渡 DTD ——严格模式;没有 URI 的过渡 DTD ——混杂模式)
- DOCTYPE 不存在或形式不正确会导致文档以混杂模式呈现。(DTD不存在或者格式不正确——混杂模式)
- HTML5 没有 DTD ,因此也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。(__ HTML5 没有严格和混杂之分__)
意义:严格模式与混杂模式存在的意义与其来源密切相关,如果说只存在严格模式,那么许多旧网站必然受到影响,如果只存在混杂模式,那么会回到当时浏览器大战时的混乱,每个浏览器都有自己的解析模式。
7.浏览器乱码的原因是什么?如何解决
-
几种编码方式
ASCII
计算机发明之后需要使用0和1来表示字符,于是美国人在50年代发明了 ASCII (美国标准信息交换代码,American Standard Code for Information Interchange) 码。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成,每个字符占7位(1字节是8位)。比如 'a'的 ASCII码10进制是97,二进制是 01100001。
ISOLatin-1
可以认为ASCII是美国发明针对英语设计的,但欧洲人在用的时候出现了问题。对于一些特殊的拉丁字符,比如法文德文里某些字符,ASCII字符集就不包括。于是欧洲人发明了一种8位字符集是ISO 8859-1Latin 1,也简称为ISOLatin-1。它对ASCII做了个扩充,对于0-127之间的字符还使用ASCII里的字符不变, 把位于128-255之间的字符表示拉丁字母表中特殊语言字符。
UNICODE
后来计算机不断发展扩展到亚洲非洲,如何用计算机使用的二进制表示这些语言又成了问题。ISOLatin-1的8位字符集只能表示256个字符,而仅汉语就有80000以上个字符。如何把地球上绝大多数语言用一种编码方式表示出来呢? 于是发明了UNICODE编码,只用2个字节(16位)就可以编码地球上几乎所有地区的文字。
但是,UNICODE只是理论上的编码方式,相当于给世界上每个文字打了个编号,但这编号具体如何在计算机里面存储,可以有多种实现方式。比如utf-8和gbk。
前面说了UNICODE只是给每个文字打了个编号,为啥不把这个编号直接转化成二进制存储在计算机里面呢? 比如英文字母s
的编号是115
, 用二进制表示是00000000 1110011
, 中文日
的编号是26085 (16进制是65e5) ,二进制是11001011 1100101
。老外才没那么傻,对于老外这种日常纯粹是用英文字符的人来说明明之前1个字节就能存储一个字母,现在为了全球大一统非要存储为2个字节,相当于一个之前一个1M的文档,现在变为2M。于是老外耍了赖,英文字母s
是115
没错,但我就用1个字节1110011
表示,而你中文日
是26085
号也没错,但是你不能在使用2个表示,而是用2个甚至6个字节表示。(为了英文的特权,牺牲其他语言的存储空间的便利),这个编码方式就是UTF-8。
UTF-8
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
那GBK又是如何产生的呢?
GBK
这时候中国人不干了,为啥你制定了全球大一统的规则,却为了自己的便利又破坏规则,连这点小便宜都不放过(典型的美国人作风)? 明明用2个字节就能表示中文一个汉字,现在UTF-8编码中文竟然需要2个甚至4个字节来表示。于是中国制定一套自己的规则,于是用2个字节来表示一个汉字,总共可以覆盖2万多个文字。 对于英文,好吧让一步,还保留和你UTF-8同样的方式使用一个字节来表示。
下图是把当前文章分别保存为 gbk 何 utf-8两种编码格式下文件大小的对比,表明用 gbk 确实省空间
2.网页乱码如何产生的呢?
下面这个流程是我们写入文件到展示文件的简单描述:
我们使用编辑器编写 HTML 文件
保存编写的HTML文件
使用浏览器打开HTML文件
HTML文件在浏览器展示
乱码产生的根源就在与第2步骤和第4步。
在第2步保持文件时会把我们写入的文字使用编辑器默认的编码方式进行保存。如果大家使用的是vscode编辑器,默认的编码方式是utf-8。
首先,在文件保存的时候你自己要清楚是用哪种编码方式保存的。如果你的文件是保存为utf-8格式,那么一定要在html 的
<head>
里添加<meta charset="utf-8">
,这句话的意思是告诉浏览器在打开这个页面的时候不要去猜了,直接用utf-8去解码。 同理,如果你的文件保存为gbk格式,一定在文件里添加<meta charset="gbk">
。
3.总结&解决乱码方法:
乱码产生的根本原因是你保存的编码格式和浏览器解析时的解码格式不匹配导致的。
乱码一般是英文以外的字符才会出现。
为啥纯粹的英文不会出现乱码问题,即使编码方式和解码方式不一致?那是因为前面讲过了 utf-8、gbk对英文都是采用1个字节的编码方式,并且使用了相同的码字。
解决方法:
首先,在文件保存的时候你自己要清楚是用哪种编码方式保存的。如果你的文件是保存为utf-8格式,那么一定要在html 的 <head>
里添加<meta charset="utf-8">
,这句话的意思是告诉浏览器在打开这个页面的时候不要去猜了,直接用utf-8去解码。 同理,如果你的文件保存为gbk格式,一定在文件里添加<meta charset="gbk">
。
8.常见的浏览器有哪些,什么内核
浏览器 | 内核 |
---|---|
IE | Trident |
Firefox | Gecko |
Chrome | Webkit |
Safari | Webkit |
Opera | Presto |
新Chrome | Blink |
9.列出常见的标签,并简单介绍这些标签用在什么场景
常见标签 场景
浏览器 | 内核 |
---|---|
h1 h2 h3 h4 h5 | 标题:大标题 、二级标题、..... |
p | 表示大段文字:ps标题和段落不能互相包裹 |
a | 链接 target="_blank" 在新页面打开; target ="_self" 在当前页打开; href="#id"跳到对应的id |
img | 图片 :只闭合标签,最后不需要加 / ; alt="图片描述": 搜索引擎优化 |
ul li | 无序列表 :用于表示并列内容,可以嵌套 |
ul ol | 有序列表:用于表示有步骤或编号的并列内容,可以嵌套 |
dl dt dd | 用于一系列"标题,内容...." 的场景 |
button | 按钮 |
em strong span | em用于强调一下, strong很重要,强调性更强, span用于包裹文字,方便添加样式 |
iframe | 用于嵌入页面 |
table | 用于展示表格,不要用来做布局 |