head 标签里有什么?

每一个 HTML 文档中,都有一个不可或缺的标签:<head> ,它作为一个容器,主要包含了用于描述 HTML 文档自身信息(元数据)的标签,这些标签一般不会在页面中被显示出来,大多情况下是给浏览器和搜索引擎看的。

可以用在 <head> 里面的标签有: <title> , <base> , <link> , <style> , <meta> , <script> , <noscript>

元信息标签介绍

<title>

定义文档的标题,显示在浏览器的标题栏或标签页上,一般会完整地概括整个网页的内容。

<base>

给页面上所有相对 URL 的提供一个基础。一份文档中只能有一个 <base> 标签。

目前我只观察到「淘宝网」使用了这个标签。

<link>

规定外部资源与当前文档的关系,常于链接样式表,如下所示:

<link rel="stylesheet" href="xxx.css" type="text/css">

当然还有很多其他的作用:

  1. 比如用于 SEO,主要给搜索引擎看的:
<link rel="canonical" href="...">

在网站中常有多个 url 指向同一个页面的情况,上述标签告知搜索引擎页面的主 url 是什么,以便搜索引擎保留主要页面而去除其他重复页面。

  1. 提供 rss 订阅的:
<link rel="alternate" type="application/rss+xml" title="RSS" href="...">

上述标签除搜索引擎可以看懂以外,也能被很多浏览器插件识别。

  1. 表示页面 icon 的:
<link rel="icon" href="https://xxx.png">

多数浏览器会读取这个 link 的资源并展示在页面上。

  1. 对页面提供预处理的:
<link rel="dns-prefetch" href="//xxx.com">

提前对一个域名做 dns 查询。强制对域名进行预读取在有的情况下很有用,。

比如, 在网站的主页上,强制在整个网站上对频繁引用的域名做预解析处理,即使它们不在主页本身上使用。虽然主页的性能可能不受影响,但是会提高站点整体性能。

<style>

包含文档的样式信息。

<meta>

一种通用的元数据信息表示标签,一般以键值对出现,如:<meta name="xxx" content="yyy">

charset 属性

<meta charset="UTF-8">

从 HTML5 开始,上述写法被推荐使用,用于声明当前文档所使用的字符编码,推荐放在 <head> 中的第一位。

http-equiv属性

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

在 HTML4 中,上述代码用于声明字符集,但是现在已不被推荐。

除了 content-type ,还有其他几个值:

content-language (已过时)、set-cookie (已过时)、default-style 、refresh 、content-security-policy

因为不常用,所以就不一一介绍了,也挺容易理解,感兴趣可以点击 这里 了解。

name 属性

其实 标签可以被自由定义,只要读取和写入的双方约定好 name 和 content 的格式就可以了。来看一个例子:

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">

上面这种用法并不在 HTML 标准中,但是却移动端开发的事实标准。这里来解释一下 content 中的内容:

  • width :页面宽度,可以是一个正整数;也可以一个字符串 "device-width" ,表示跟设备宽度相等。
  • height :页面高度,可以是一个正整数;也可以一个字符串 "device-height" ,表示跟设备高度相等。
  • initial-scale :初始缩放比例。
  • minimum-scale : 最小缩放比例。
  • maximum-scale : 最大缩放比例。
  • user-scalable :是否允许用户缩放。

name 属性的值除了可以是 viewport 之外,还有相当多的值:

application-name 、author 、description 、generator 、keywords 、referrer 、robots 等。

同样的,就不一一介绍了,感兴趣可以点击 这里 了解。

<script>

用于嵌入或引用可执行脚本。来看几个 script 标签常见的全局属性:

  • async

    使浏览器使用另一个线程下载脚本,这时不会阻塞页面渲染。当脚本下载完成后,浏览器会暂停渲染,执行脚本,执行完毕后继续渲染页面。

    async 无法保证脚本的执行顺序,哪个脚本先下载结束就会先执行。

  • defer

    同样会使浏览器并行下载脚本,但是下载完毕不会立即执行,而是会等到 DOM 加载完成后(即刚刚读取完 </html> 标签)再执行脚本。

    defer 可以保证脚本的执行顺序就是它们在页面上出现的顺序。

  • src

    定义引用外部脚本的地址,指定此属性的 script 标签内不应再有嵌入的脚本。如果脚本文件使用了非英语字符,还应该注明字符的编码。如:

    <script charset="utf-8" src="https://www.example.com/script.js"></script>
  • type

    默认值是 text/javascript

想了解更多关于 <script> 标签的详细内容可以点击 这里

<noscript>

如果页面上的脚本类型不受支持或者当前在浏览器中关闭了脚本,则在此中定义脚本未被执行时的替代内容。

总结

本文到这里就结束了,其实关于 link 和 meta 标签还有很多没有介绍到,很多相关标签都是有特殊的需求,只有在特定情况下才会使用,比如移动端开发就会用许多在 PC 上并不需要的标签。

当然平时使用也主要是看需求,就拿我目前来说,只是些许用到过一些与 viewport 和 SEO 相关的标签。

鉴于此我推荐一个不错的学习方法,就是去各大网站查看它们的 head 标签里都有什么,遇到没见过的就去搜索一下,熟悉起来会很快。

我这边看过的网站有:「淘宝网」、「阿里巴巴」、「京东」、「网易严选」、「起点中文网」等。

(完)

head 标签里有什么?的更多相关文章

  1. 将javascript函数写在Html标签里

    有些时候不想把函数写在script标签里了,想直接在html标签里直接加上js代码,可以这样写: <body onload="javascript:{window.location.h ...

  2. 在<s:iterator>标签里给动态表格添加序号

    在<s:iterator>标签里给动态表格添加序号,需要用到<s:iterator>标签里的Status属性里的count eg:<s:iterator value=&q ...

  3. 如何在一个div标签里显示出另一个网页? <iframe src=" http://www.baidu.com " width="800px" height="200px" scrolling="no" frameborder="0"> </iframe>

    如何在一个div标签里显示出另一个网页? 用在div里用iframe,就像下面的代码 <iframe src=" http://www.baidu.com " width=& ...

  4. Asp.Net正则获取页面a标签里的内容

    Asp.Net正则获取页面a标签里的内容 string url = "http://www.114369.com"; string html = MyCLib.NetClass.S ...

  5. 火狐下<a>标签里嵌套的<select>不能选的bug

    今天遇到了这个问题,网上一找就找到原因了:在狐火下<a>标签里嵌套的<select>不能选 可是我查找这个问题过程中依然饶了一些时间,原因是在<a>标签没有写hre ...

  6. img标签里的value获取

    简单描述:在img标签里的value存放了需要用到的值,但是在js中获取的时候,我直接写的就是$("#imgStr").val(),结果发现是空,后来查了一下,才知道,img的va ...

  7. 对<tr><td>标签里的input 循环取值

    需求描述:单击table整行,跳转到具体的信息页面  关键就是获取整行的id,传给后台做查询,返回list 解决思路:用带参数函数传过去id,然后在js的函数中用$("#id"). ...

  8. 如何在地址栏(title标签里)和收藏夹里 加上网站的标志ICO、LOGO图片

    第一步:首先你必须要制作一个看起来既清楚又容易辨识的.ico格式的小图片. 我们将图标的大小定义为16x16 像素.此外在制作图形文件的时候,你可能需要把色盘设定成只使用标准的 16 色 Window ...

  9. <script>标签里的defer和async属性 区别(待补充)

    defer与async的区别(表格显示): table th:first-of-type { width: 150px; } table th:nth-of-type(2) { } 区别 defer ...

随机推荐

  1. Google zxing实现二维码扫描完美解决方案

    最近因项目需求,需要在App中集成二维码扫描的功能.网上找了很多资料,最后决定使用Google的zxing来实现.实现的过程遇到了很多的坑,也是因为这些坑在网上没有具体的解决方案,今天就把我的实现过程 ...

  2. c# 从一个服务器 访问另外一个服务器上的文件

    页面调用 function fnOpen(path) { window.open("~/FileHelp.ashx? url="); //window.open(url); } 后 ...

  3. IIS测试环境搭建

    1.控制面板->程序->程序和功能->打开或关闭Windows功能->Internet信息服务->Web管理工具,打开如下服务: 2.打开IIS管理器 2.1检查.net ...

  4. git下配置github sshkey

    教程看这里 http://xiaxveliang.blog.163.com/blog/static/29708034201341244759225/

  5. 如何进行 Python性能分析,你才能如鱼得水?

    [编者按]本文作者为 Bryan Helmig,主要介绍 Python 应用性能分析的三种进阶方案.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 我们应该忽略一些微小的效率提升,几乎在 9 ...

  6. ps命令之排序

    Linux中ps命令会自动选择一列进行排序,但有时这不是我们想要的. 方法一: ps+sort sort 选项与参数: -f  :忽略大小写的差异,例如 A 与 a 视为编码相同:-b  :忽略最前面 ...

  7. MySQL Flashback 工具介绍

    MySQL Flashback 工具介绍 DML Flashback 独立工具,通过伪装成slave拉取binlog来进行处理 MyFlash 「大众点点评」 binlog2sql 「大众点评(上海) ...

  8. python下载指定的版本包

    首先我们很多时候在执行pip的时候是不行的  有时候很难成功,这个时候我们就要想其他的版本了 一.是不是这个包需要指定版本, 比如python2的和mysql链接的是,而python3则是mysqlc ...

  9. TableView的cell加载倒计时重用问题解决方案

    TableView的cell加载倒计时重用问题解决方案 效果 说明 1. 写过类似需求的朋友一定知道,TableView上面加载倒计时功能会遇到复杂的重用问题难以解决 2. 本人提供一种解决思路,高效 ...

  10. 关于Tomcat端口出现的问题

    =Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. Th ...