html基础问题

1.<!DOCTYPE HTML>

必须位于html文档第一行,位于<html>标签之前

<!DOCTYPE HTML>作用:

声明文档的解析类型(document.compatMode),指示浏览器的layout引擎用那种方式来解析页面,只是用来选择mode,告诉浏览器dom用哪种词法解析。
document.compatMode:
BackCompat:怪异模式,浏览器使用自己的怪异模式解析渲染页面。
CSS1Compat:标准模式,浏览器使用W3C的标准解析渲染页面。

html4.01和html5声明的不同:

html4.01声明需要引用DTD,分为strict,transitional,frameset三种。
html5不是基于SMGL和XML的,所以可以用简短的声明(!DOCTYPE HTML)

不声明会怎么样

document.compatMode会被浏览器识别并使用,如果不声明的话,浏览器就会使用自己的怪异模式去解析渲染页面。

  • (1)元素在不同的文档类型中的使用情况不同。例如:<article> <aside><audio><canvas><datalist><header><footer>等在html5模式中可以使用,但是在html4的文档声明中不可使用。
    具体的可参考http://www.w3school.com.cn/tags/html_ref_dtd.asp
  • (2) BackCompat模式下margin: 0 auto 问题。例如:ie在BackCompact模式下,margin: 0 auto不起作用,元素还是居左,不能居中。
  • (3) BackCompat模式下table的font属性继承问题,white-space:pre会失效,设置图片的padding会失效。例如:在body中设置了body{font-size:30px;};在ie中,font-size是不会对table起作用的。
  • (4)BackCompat模式下行内元素可以设置宽高,行为类似display:inline-block;ie,firefox,chrome表现一致。
  • (5)BackCompat模式下可以设置百分比高度。在standard模式下,元素的高度默认是由包含的内容来决定的,如果父元素没有设置高度,给子元素设置百分比高度是没有作用的。但是在BackCompat模式下,父元素没有高度,或者元素没有内容的时候,都是可以设置百分比高度的。ie,firefox,chrome表现一致。
  • (6) 元素的宽高不同。在BackCompat模式下,width则是元素的实际宽度 ,内容宽度 = width - ( padding-left + padding-right + border-left-width + border-right-width);在严格模式中 :width是内容宽度 ,元素真正的宽度 = border-left-width + padding-left + width + padding-right + border-right-width。

2.html5新特性:

HTML5一共包含了10个大类别,它们是:

  • 离线(offline)
    Application cache, localStorage, indexedDB,在线/离线事件
  • 存储(storage)
    Application cache, localStorage,sessionStorage,indexedDB等
  • 连接(connectivity)
    Web Stockets, Sever-sent事件
  • 文件访问(file access)
    File API, File System, FileWriter, ProgressEvents
  • 语义(semantics)
    各种新的元素,包括Media, structural, 国际化, Link relation, 属性, form类型, microdata 等
  • 音频和视频(audio/video)
    HTML5 Video, Web Audio, WebRTC, Video track等
  • 3D和图形(3D/graphics)
    Canvas2D, 3D CSS变换, WebGl, SVG等
  • 展示(persentation)
    css3 2D/3D变换,转换,WebFonts等。
  • 性能(performance)
    Web Wroker, HTTP caching等
  • 其他(Nuts and bolts)
    触控和鼠标, Shadow DOM, CSS masking等

3.列举html5新的标签

<header><footer><nav><aside><section><article><audio><video><embed><figure><figcaption><time><summary><canvas><meter><output><progress><track><rt><rp><ruby>
新的input类型:
email, url, number, range, datepicker(date,month,week,time,date-time,datetime-local,search,color)
废弃的标签:
applet, basefont, big, center, u, noframe, frame, frameset, tt, strike, font, dir


4.离线缓存

application cache:通过创建cache manifest文件,创建web应用离线版本
好处:

  • 离线浏览:用户可在离线时加载他们
  • 速度:已缓存资源的加载速度会很快
  • 减少服务器负载:浏览器只从服务器下载更新过或者更改过的文件

manifest文件告诉浏览器要缓存的内容,文件分为三个部分:

  • cache manifest:首次下载后进行缓存的文件列表
  • network:需要与服务器建立连接,且不会被缓存的文件列表
  • fallback:当页面无法访问时的回退页面列表(比如:404);

更新缓存:
一旦应用被缓存,它就会保持缓存直到发生下列情况:

  • 用户清空浏览器缓存
  • manifest文件被修改
  • 由程序来更新应用缓存

使用:
配置html的manifest属性
manifest文件需要配置正确的MIME-type,即text/cache-manifest。必须在web服务器上进行配置

<!doctype html>
<html manifest="test.appcache">
</html>

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


5.cookie,localStorage,sessionStorage之间的区别

ps: 对于一些大型的,结构化的数据,可以用indexedDB存储。
同:都保存在客户端。
异:

  • 数据的生命期不同:cookie一般由服务器生成,可以设置失效时间,如果是在浏览器生成的,默认是关闭浏览器之后失效;localStorage永久有效,除非清除;sessionStorage浏览器关闭之后失效。
  • 存储大小不同:cookie一般是4kb大小,localStorage和sessionStorage会比cookie大很多,一般为5MB。
  • 是否与服务器端通信:cookie会携带在http请求头部,在浏览器和服务器之间传递,在cookie中存放大量的数据会影响性能,常用的场景为判断用户是否登录;localStorage和sessionStorage不会与服务器通信
  • 作用域不同:localStorage和cookie在所有同源窗口中共享(协议,端口,域名相同)。sessionStorage不能在不同的页面或者标签中共享。需要注意的是,页面及标签页仅仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。(也就是说如果关闭标签页后,通过sessionStorage存储的数据就都被删除了。sessionStorage的作用域不仅被限制在文档源,还被限定在窗口中,也就是同一标签页中。注意,这里说的窗口是指顶级窗口,若果同一标签页中包含多个<iframe>元素,这两者之间也是可以共享sessionStorage的。)

6.lable和input的关系

<label>标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上

  • label的for属性和input的id绑定
<form>
  <label for="male">male</label>
  <input type="radio" id="male" name="sex" />
  <br>
  <label for="female">female</label>
  <input type="radio" id="female" name="sex" />
</form>
  • <label>包裹<input>标签,点击<label>,<label>响应两次,即<label>本身出发和<input>触发后冒泡到<label>。
<body>
  <label for="input">
    <input id="input" type="text" /> 
  </label>
  <script>
    var label = document.getElementByTagName("label")[0];
    var input = document.getElementById("input");
    label.addEventListener("click",function(){
      console.log("label");
    },false);
    input.addEventListener("click",function(){
      console.log("input");
    },false)
  </script>
</body>
//output: label  input label

7.标签语义化的理解

  • 语义化:根据内容的结构化,选择合适的标签便于开发者阅读和写出优雅的代码的同时让浏览器的爬虫和机器很好的解析。用正确的标签做正确的事情。
  • 好处:
    • 在没有css的情况下,能够呈现出清晰的内容结构和代码结构。
    • 好的用户体验:例如title,alt用于解释名词或解释图片信息、label标签的活用。
    • 有利于SEO:和搜索引擎建立良好的沟通,有助于爬虫抓取更多的有效信息。爬虫依赖标签确定上下文和各个标签的权重。
    • 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
    • 便于团队的开发与维护:语义化更具可读性,如果都遵循这个标准,可以减少差异化。
  • 应该注意的事项:
    • 尽可能少的使用无语义的标签div和span;
    • 在语义不明显时,既可以使用div或者p时,尽量用p, 因为p在默认情况下有上下间距,对兼容特殊终端有利;
    • 不要使用纯样式标签,如:b、font、u等,改用css设置。
      需要强调的文本,可以包含在strong或者em标签中(浏览器预设样式,能用CSS指定就不用他们),strong默认样式是加粗(不要用b),em是斜体(不用i);
    • 使用表格时,标题要用caption,表头用thead,主体部分用tbody包围,尾部用tfoot包围。表头和一般单元格要区分开,表头用th,单元格用td;
    • 表单域要用fieldset标签包起来,并用legend标签说明表单的用途;
    • 每个input标签对应的说明文本都需要使用label标签,并且通过为input设置id属性,在lable标签中设置for=someld来让说明文本和相对应的input关联起来。

8.meta标签的作用

  • 概念: 定义页面的元信息,比如针对搜索引擎和更新频度的描述和关键字。

属性用法具体可参考:https://www.deanhan.cn/html-meta.html

  • 属性:

    • content:必选,定义与http-equiv或者name相关的元信息。
    • http-equiv: 可选,把content属性关联到http头部。
      值:content-type, expires, refresh, set-cookie, charset, pragma, windows-target, page-enter,page-exit。
    • name: 可选,把content属性关联到一个名称。
      值:author, description,keywords,generator,revised,others
  • 作用:meta标签里的数据是供机器解读的,其主要作用有:

    • 搜索引擎优化(SEO)
    • 定义页面使用语言
    • 自动刷新并指向新的页面
    • 实现网页转换时的动态效果
    • 控制页面缓存
    • 网页定级评价
    • 控制网页显示的窗口等等

9.HTML5 标准提供的新的 API

  • Media API
  • Text Track API
  • Application Cache API
  • User Interaction
  • Data Transfer API
  • Command API
  • Constraint Validation API
  • History API

10.如何对网站的文件和资源进行优化

  • 文件合并(目的是减少http请求)
  • 文件压缩 (目的是直接减少文件下载的体积)
  • 使用cdn托管资源
  • 使用缓存
  • gzip压缩你的js和css文件
  • meta标签优化(title,description,keywords),heading标签的优化,alt优化
  • 反向链接,网站外链接优化。

11. 为什么利用多个域名来提供网站资源会更有效?

  • 突破浏览器的并发限制(浏览器同一域名最大的并发请求数量为6个,ie6为2个)
  • 节约cookie带宽
  • CDN缓存更方便
  • 防止不必要的安全问题(尤其是cookie的隔离尤为重要)
  • 节约主机域名连接数,优化页面响应速度

参考:https://www.cnblogs.com/libin-1/p/6525128.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  • 接上 关于HTML/HTML5(一)http://www.jianshu.com/p/33fc7840c079 学...
    Amyyy_阅读 791评论 0 4
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,490评论 1 45
  • 语义化 HTML标签的语义化是指:通过使用包含语义的标签(如h1-h6)恰当地表示文档结构 css命名的语义化是指...
    纹小艾阅读 557评论 0 1
  •   支持离线 Web 应用开发是 HTML5 的另一个重点。   所谓离线 Web 应用,就是在设备不能上网的情况...
    霜天晓阅读 1,040评论 0 2
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,587评论 0 7