HTML的由来
在1990年左右,英国人_蒂姆·伯纳斯·李(Tim Berners-Lee) _发明了万维网(World Wide Web,WWW),并发明了人类史上第一个浏览器和第一个服务器。万维网的出现解决了人们上网冲浪的需求,只要在浏览器的地址栏中输入url,通过http协议就可以请求到服务端上的html文件,再由客户的浏览器渲染显示html文件,形成客户可以看懂的页面。
可以说,WWW = url + http + html
HTML起手式
html是Hyper Text Markup Language的缩写,意思为超文本标记语言,下面是一段范例代码,也是一个html文件的起手式。
<!DOCTYPE html>
<!-- !DOCTYPE 文档类型 告诉浏览器该文档为html文件,还支持svg xml等 -->
<html lang="en">
<!-- html标签 属性lang,即language。可以改成lange="zh-CN",表示页面语言为中国中文 -->
<head>
<meta charset="UTF-8" />
<!-- charset 字符编码 默认写UTF-8,可以支持所有字符
如果想改成其他的,如GBK,需确保与文件设置的编写格式是一致的,否则会乱码 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- viewport 页面视窗 这条代码用来兼容手机
width=device-width 页面与设备同宽 initial-scale=1.0 页面缩放值为1,即不缩放-->
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<!-- 这条指令表示在ie浏览器中使用最新edge内核 -->
<title>Document</title>
<!-- 网页标题 -->
</head>
<body>
<!-- 网页内容 -->
</body>
</html>
将注释去掉再复习一遍,看起来也清爽一些
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
</head>
<body>
</body>
</html>
常用章节标签
HTML的章节标签用来表示页面文章的层级关系,通常一篇文章会由各级标题、章节、段落等组成。同时为了代码的易读性,也可以根据网页的布局将代码放进对应的章节标签里。常见的章节标签有以下这些
- 标题
<h1>~<h6> - 文章
<article> - 章节
<section> - 段落
<p> - 头部
<header> - 主要内容
<main> - 脚部
<footer> - 旁支
<aside> - 划分
<div>
下面是部分标签的演示
注:
- 章节标签的书写顺序,比如header-main-aside-footer的顺序写是为了代码的易读性,如果将这个顺序打乱,页面并不会报错,但改你代码的小伙伴可能会想打你
- 看页面可以发现h标签的字体会加大加粗,这是浏览器的默认样式,我们可以通过引入css文件或内联style等来修改这些样式
常见的内容标签
除了表示文章的层级,html还有一些表示内容的表现,列举如下
-
有序列表 ol + li (ordered list + list item)
- 内容1
- 内容2
- 内容3
-
无序列表 ul + li (unordered lisst + list item)
- 内容1
- 内容2
- 内容3
-
描述列表 dl + dt + dd (description list + term + data),在
<dt>中放要描述的对象,在<dd>放描述的具体内容- 小明
- 男的
- 小红
- 女的
-
pre
html会默认将文件中的多个空格缩写成一个,而放在<pre>中的文本内容到了页面上也会保留文本的格式,包括换行符和空格
- hr
会在页面上画一条与屏幕等宽的分割线
- br
break的缩写,表示换行
- a
anchor(锚)的缩写,会生成一个超链接,链接跳转的内容由其href属性决定,详细内容我会在下篇文章中描述
<a href='xxx'>用户可以点击跳转的文字</a>
- em
emphasis的缩写,表示语气上的强调,默认样式为斜体
- strong
表示内容上的强调,默认样式为出题
- code
用来显示代码,默认用等宽字体显示
- q
表示文字为引用,默认样式为内联元素
- blockquote
表示文字为引用,默认样式为块级元素
全局属性
先来看下面这个div标签
<div class='xxx' />
代码里面的class='xxx'是给这个div标签添上的属性,属性名是class,属性值是xxx
**全局属性就是所有标签都可以添加的属性,**全局属性有以下这些
-
class
class属性可以设置多个值,中间用空格隔开,添加了class属性的标签可以被css或js通过选择器选中。css中选择器的写法是.xxx ,或者[class='xxx'],意思是选中所有class为xxx的标签。
-
contenteditable
这个单词比较长,可以分成content+edit+able,也就是内容+编辑+able后缀,可以编辑内容的意思。这个属性用来设置标签是否为可编辑,后面可以不用跟属性值,要写的话也只能是true和false这两个布尔值。加上这个属性的标签在页面上可以被用户直接编辑里面的文本内容,就像输入文本框那样。
-
hidden
用来设置该标签在页面上是否被显示,同样不需要加属性值。加上这个属性后,用户在页面上看不到该标签。实际上是浏览器为有这个属性的标签加上了display:none的样式,所以可以通过修改其style来让标签显示。
-
id
为标签设置id,作为其在全局页面的唯一标识,但是当html出现相同id时,浏览器渲染时并不会报错,css的id选择器也可以选中这两个标签,但如果使用js通过id来操作两个标签时,就会报错。可以说这个唯一标识并不具备强制性,所以不推荐使用。
不过当全局中该id唯一时,js可以通过id名直接找到该标签,执行修改样式或者添加事件等操作
/* JS代码片段 */
xx.style.color = 'red';
xx.onclick = function() {
console.log('click');
}
另外就是浏览器本身有些内置对象,如location、document,起id要注意不要和这些大佬撞名(尽量不用id就是了!)
-
style
为标签设置样式,如果要设置多个样式中间用英文分号;隔开,在标签内设置的样式为行内样式,优先级要比外联样式和内联样式高
-
tabIndex
在网页上,用户可以通过键盘上的tab按键与页面进行交互,tabIndex决定了该标签是否能通过tab键被用户选到以及被选中的顺序。
当tabIndex取值为大于0的正整数时,浏览器会按照数字大小来排序,数字越小,越先被选中。
当取值为0时,表示该元素是最后一个被选中的。
除了以上这两种情况,tabIndex取其他值都不会被选中,比如取值-1
**注:**我发现当取值正小数也可以被选中,比如0.1、0.2这些,但顺序很迷,还会影响到其他标签的tab交互,所以,为了不给自己和其他小伙伴挖坑,取正整数的值就可。
-
title
为标签设置title属性之后,页面上鼠标悬停到该标签时会显示title里设置的文字,一般应用于文字内容太长,需要隐藏部分内容的情况,比如掘金文章的旁栏目录,悬停到其中一个章节标题,就会显示完整的标题,这里就应用到了title属性。
结语
html作为前端的三大基础之一,看似容易,但要是抠起细节还是有很多可以研究的地方。学无止境,加油。