前端八股文--HTML篇

版本—代码随想录知识星球精华第五版


HTML

DOCUTYPE的作用

DOCTYPE是document type (文档类型) 的缩写。是HTML5中一种标准通用标记语言的文档类型声明,告诉浏览器文档的类型,便于解析文档。不同的渲染模式会影响浏览器对 CSS 代码甚至 JavaScript 脚本的解析。它必须声明在HTML文档的第一行。

浏览器渲染页面的两种模式

  • CSS1 Compat:标准模式(Strick mode),浏览器使用W3C的标准解析渲染页面。浏览器以其支持的最高标准呈现页面。

  • BackCompat:怪异模式(混杂模式)(Quick mode),默认模式,页面以一种比较宽松的向后兼容的方式显示。

DOCTYPE
不存在或者形式不正确会导致HTML或XHTML文档以混杂模式呈现,就是把如何渲染html页面的权利交给了浏览器,有多少种浏览器就有多少种展示方式。因此要提高浏览器兼容性就必须重视。

HTML语义化

根据内容的结构选择合适的标签

优点

  • 增加代码可读性,结构清晰,便于开发和维护
  • 对机器友好,文字表现力丰富,有利于SEO。SEO(Search Engine Optimization)是搜索引擎优化,为了让用户在搜索和网站相关的关键词时,可以使网站在搜索引擎的排名尽量靠前,从而增加流量。
  • 方便设备解析(如盲人阅读器等),可用于智能分析
  • 在没有 CSS 样式下,页面也能呈现出很好的内容结构、代码结构

常见的语义化标签

  • title:页面主体内容
  • header:页眉,通常包括网站标志、主导航、全站链接以及搜索框。
  • nav:标记导航,仅对文档中重要的链接群使用。
  • section:定义文档中的节(section、区段),比如章节、页眉、页脚或文档中的其他部分。
  • main:帮助搜索引擎以及搜索工程师找到网站的主要内容,本身并不承载特殊的功能和意义。
  • article:定义外部的内容,其中的内容独立于文档的其余部分。
  • aside:定义其所处内容之外的内容,如侧栏、文章的一组链接、广告、友情链接、相关产品列表等。
  • footer:页脚,只有当父级是 body 时,才是整个页面的页脚。
  • address:作者、相关人士或组织的联系信息(电子邮件地址、指向联系信息页的链接)。

meta标签

meta标签用来描述一个HTML网页文档的属性,例如作者、日期和时间、网页描述、关键词、页面刷新等。

meta标签的作用有:

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

meta分类

  1. 页面描述信息 (NAME):常用的选项有:

    • Keywords(关键字)
    • description(网站内容描述)
    • author(作者)
    • robots(机器人人向导)等。
  2. HTTP标题信息 (HTTP-EQUIV):可用于代替name项,常用的选项有:

    • Expires(期限)
    • Pragma(cache模式)
    • Refresh(刷新)
    • Set-Cookie(cookie设定)
    • Window-target(显示窗口的设定)
    • content-Type(显示字符集的设定)等。
  3. content项:根据name项或http-equiv项的定义来决定此项填写什么样的字符串。

HTML5特性

新增

  • 新的选择器 document.querySelectordocument.querySelectorAll
  • 媒体播放的 videoaudio 标签
  • 以前用的 Flash 实现
  • 本地存储 localStoragesessionStorage
  • 浏览器通知 Notifications
  • 语义化标签,例如 headernavfootersectionarticle 等标签
  • 地理位置 Geolocation
    • 鉴于隐私性,除非用户同意,否则不可获取用户地理位置信息
  • 离线应用 manifest
  • 全双工通信协议 websocket
  • 浏览器历史对象 history
  • 多任务处理 webworker
    • 运⾏在后台的 JS,独立于其他脚本,不影响性能
  • 拖拽相关 API
  • 增强表单控件 urldatetimeemailcalendarsearch
  • 页面可见性改变事件 visibilitychange
  • 跨窗口通信 PostMessage
  • 表单 FormData 对象
  • canvas + SVG

移除

  • 纯表现的元素:basefontbigcenterfontsstrikettu
  • 对可用性产生负面影响的元素:frameframesetnoframes

src 和 href 的区别

src 用于替换当前元素,href 用于在当前文档和引用资源之间确立联系。

一、src

srcsource 的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求 src 资源时,会将其指向的资源下载并应用到文档内,例如 js 脚本、img 图片和 frame 等元素。

当浏览器解析到该元素时,浏览器会对这个文件进行解析、编译和执行,从而导致整个页面加载会被暂停,类似于将所指向资源嵌入当前标签内。这也是为什么将 js 脚本放在底部而不是头部。

二、href

hrefHypertext Reference 的缩写,指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接。浏览器遇到 href 就会并行下载资源,并且不会停止对当前文档的处理。这也是为什么建议使用 link 方式来加载 css,而不是使用 @import

三、总结来说

src 代表这个资源是必备的,必不可少的,最终会嵌入到页面中,而 href 是资源的链接。

行内元素 和 块级元素有哪些

一、元素种类

  1. 行内元素

    • 和其他元素都在一行上;
    • 高,行高及外边距和内边距部分可改变;
    • 宽度只与内容有关;
    • 行内元素只能容纳文本或者其他行内元素。
    • 不可以设置宽高,其宽度随着内容增加,高度随字体大小而改变,内联元素可以设置外边界,但是外边界不对上下起作用,只能对左右起作用,也可以设置内边界,但是内边界在 IE6 中不对上下起作用,只能对左右起作用。
    <a>a>
    <strong>strong>
    <b>b>
    <em>em>
    <del>del>
    <span>span>
    <img />
    <input />
    <select>select>
    
  2. 块级元素

    • 总是在新行上开始,占据一整行;
    • 高度,行高以及外边距和内边距都可控制;
    • 宽带始终是与浏览器宽度一样,与内容无关;
    • 它可以容纳内联元素和其他块元素。
    <h1>h1> ~ <h6>h6>
    <p>p>
    <div>div>
    <ul>ul>
    <ol>ol>
    <li>li>
    <dl>dl>
    
  3. 空元素

    <br />
    <hr />
    <img />
    <input />
    <link />
    <meta />
    

二、行内元素和块级元素的转换

// 定义元素为块级元素
display: block;

// 定义元素为行内元素
display: inline;

// 定义元素为行
display: inline-block;

三、块级元素和行内元素的区别

我们区分块级元素和行内元素,首先行内元素是在一行中能有多个的,块级元素是自己占一行的。接着可以从三个方面来查看:

  • 是否占据一行,还是能多个处于一行中,行内是可以的;
  • 是否可以设置宽高,行内是不可以的;
  • 行内元素只可以容纳文本和其他行内元素,块级元素啥都可以容纳。

总结

行内元素和块级元素很好区分,顾名思义,行内就是能都在一行里的,一行可以有多个 标签,可以有多个 标签,而同类的还有 / / 等,这不就很容易记住了。而块级元素就是要自己占一行的,那不就有

,还有我们使用的列表
    /
      ,除此之外还有

      等等。


      link 与 @import 的区别

      一、语法结构

      //link
      <link href="路径" rel="stylesheet" type="text/css" />
      //import
      @import url(路径地址);
      

      二、区别

      1. 从属关系区别
        @import 是 CSS 提供的语法规则,只有导入样式表的作用;link 是 HTML 提供的标签,不仅可以加载 CSS 文件,还可以定义 RSS、rel 连接属性等。

      2. 加载顺序区别
        加载页面时,link 标签引入会和 HTML 同时加载;而 @import 引入的 CSS 将在页面加载完毕后被加载。

      3. 兼容性区别
        @import 是 CSS2.1 才有的语法,可在 IE5+ 才能识别;link 标签作为 HTML 元素,不存在兼容性问题。

      4. DOM 可控性区别
        可以通过 JS 操作 DOM,插入 link 标签来改变样式;由于 DOM 方法是基于文档的,无法使用 @import 的方式插入样式。

      5. 权重
        link 方式的样式权重高于 @import 的权重。

      总的来说,使用 link 会比 @import 好,首先兼容性,link 作为 HTML 的标签是不会存在这个问题的。而且如果使用 @import 是在 DOM 树渲染完才会进行渲染的,所以是不被 JavaScript 动态修改的。


      常见的图片格式

      图片格式对比

      格式 优点 缺点 使用场景
      GIF 文件小,支持动画、透明,无兼容性问题 只支持256种颜色 彩色简单的logoicon、动图
      JPG 色彩丰富,文件小 有损压缩,反复保存图片质量下降明显 色彩丰富的图片/渐变图像
      PNG 无损压缩,支持透明,简单图片尺寸小 不支持动画,色彩丰富的图片尺寸大 logo/icon/透明图
      WEBP 文件小,支持有损和无损压缩,支持动画、透明 浏览器兼容性相对而言不好 支持webp格式的app和webview

      iframe

      iframe 元素可以在一个网站里面嵌入另一个网站内容。

      优点

      1. 实现一个窗口同时加载多个第三方域名下内容
      2. 增加代码复用性

      缺点

      1. 搜索引擎无法识别
      2. 影响首页首屏加载时间
      3. 兼容性差

      限制 iframe 访问另一个页面

      设置 X-Frame-Options 响应头 —— 是否允许网页通过 iframe 嵌套:

      1. deny:完全禁止任何网页嵌套
      2. sameorigin:只允许同源域名访问
      3. allow-from url:允许指定 URL 的域名可嵌套

      设置 Content-Security-Policy

      CSP,内容安全策略,限定网页允许加载的资源,防范 XSS 攻击。

      "Content-Security-Policy": "frame-ancestors 'self'" // 限定 iframe 的嵌套
      

      判断 window.top 页面顶级窗口和自身窗口 window.self 是否相等,若不等则是嵌入了 iframe


      defer 和 async

      deferasync

你可能感兴趣的:(前端八股文,前端)