HTML: 基本语法

HTML

简介

标记语言

HTML(超文本标记语言),它不是一种编程语言,而是使用一个个标签来构建一个网页的框架,一个HTML文档就是一个WEB网页(而浏览器内含解析其内容的解析器);CSS负责网页的美化,JS负责网页的动态交互,而它负责网页的架构,CSS以及脚本都要在这个框架里定义

和编程语言的区别

Markdown就是一种标记语言,它们只是把一份文档通过标记来增加一些细节,然后展示出来,因此没有复杂的语法,只是定义了一个文档的结构、排布等。文档本身并没有实现部分,需要由解释器渲染才能有效展示。只有HTML代码的文档就是一静态网页,不会因为用户输入而发生实时变化(但可以将输入信息传输给服务器,及时更换一个新的网页,达到实时的效果)

而编程语言有更复杂的语法来实现更高效、多样的逻辑与功能,例如最基本的输入输出、计算、内存管理等。源文件本身包含许多底层的实现,经过翻译后可由系统执行

基本内容

输出标签

HTML不区分大小写,使用一条条元素来构建网页,每条元素一般由一对标签作为头尾,标签夹着的文本为内容,而标签内部的参数对为属性(其值一般不会显示),解释器通过标签及其属性来展现不同样式的内容;很多属性都与样式有关,这里尽量只介绍框架有关的属性。以下是常用标签:

  • <!DOCTYPE html>:这是一条声明,用于告诉浏览器使用特定的HTML版本解释器,这一条声明的是html5
  • <!-- message -->:用于注释,message只会在源代码中被看见
  • <html></html>:这是一份html文档的开头与结尾,定义了一整个html文档
  • <head></head>:定义文档的头部内容,包括编码方式(meta)、文档标题(title)、插入脚本(scripts块,可以在<body>中定义,但习惯在<head>中)、文档样式等,它们不呈现在网页主体中,而会被解释器接受。以下是常用的只在<head>中定义的元素
    • <title></title>:定义了在浏览器顶部的网页名称
    • <meta>:定义了文档信息的信息(即元数据),例如属性charset指定了浏览器的编码方式,常见<meta charset="UTF-8">指定编码方式保证中文不会出现乱码
    • <base>:定义基准链接,即其它所有使用相对链接的元素都会相对基准链接,只能定义一次
    • <link>:定义文档与外部资源的联系,例如链接外部CSS
  • <body></body>:定义网页主体,其中内容将会展现给用户
    • <header></header>:定义文档简介
    • <h></h>:定义一行标题,从<h1><h6>标题等级递减,体现在文字加粗放大以及目录索引上
    • <p></p>:定义一片段落文字,前后会添加换行
    • <a></a>:定义一个链接,href属性指示链接地址链接
      • 链接可以是一个网页、锚点、本地文件、图片等,锚点链接即’#’开头的一串标记,类似于Markdown,这个标记可以是idname属性的值
    • <img></img>:定义一张图片,src属性指示图片地址,alt属性指示当图片无法显示时的可作替换的文本内容
    • <table></table>:定义一个表格,border属性指示其边框样式
      • <tr></tr>:定义表格的一行(table row)
        • <th></th>:定义表格的表头单元格(table header)
        • <td></td>:定义表格一般数据的单元格(table data)
    • <ul></ul>、<ol></ol>、<dl></dl>:定义无序(unordered)、有序(ordered)、自定义列表(definition)
      • <li></li>:定义列表中的一项()
      • <dt></dt>:定义自定义列表中的一项(definition term)
      • <dd></dd>:定义列表上一项的注释(definition description)
    • 文本格式化的常用标签有如下:
      • <br>:定义一次换行,可在<p>等内容中使用
      • <hr>:定义一条水平分割线
      • <b></b><i></i>:定义文字的粗体斜体,它们是样式标签,属于无意义的文字加粗与倾斜,两者应作为最后的选择
      • <strong></strong><em></em>:语义化标签,分别为特别强调一般强调,可以做到<b><i>的效果,且在非视觉上(例如大声朗读)也有强调效果,这两者更常用
      • <mark></mark>:定义高亮强调文字
      • <small></small>:定义小号字体
      • <sub></sub><sup></sup>:定义下标上标字体
      • <del></del>:定义划线字
    • 其它类型字体渲染如下:
      • <pre></pre><code></code>:定义代码字体,前者不会忽视制表符和回车
      • <abbr></abbr>:定义缩略词,赋予title属性后当光标悬浮其上时将会显示出来abbr
      • <address></address>:其中应包含文档作者的相关信息如联系方式等,通常表现为斜体
      • <blockquote></blockquote>、<q></q>、<cite></cite>:分别定义长(一个段落)、短(一句话)引用内容、引用来源。<q><cite>,前两种标签含cite属性,用于指示引用来源(链接)

早期html标准存在一些无需加上关闭标签的元素,这在之后的XHTML标准(参考XML)中变为例如<br />的自我封闭元素,而HTML5XHTML兼容,所以<br>、<br/>都可以使用

这些元素可以被分为区块元素内联元素,前者与后者相比,会在内容开头加上换行符表示这是新的区块;为了更好地排版和优化框架,有如下标签:

  • <div></div>:定义一块元素,即将其中的所有内容归纳为一个区块来管理,可以配合样式表进行整块的修饰
  • <span></span>:定义一个内联元素,即将其中的所有内容归纳为一个内联元素来管理,样式由内容决定

输入标签

html用表单来收集用户输入的信息,需要注意的是,html文档和解释器并不会处理这些信息,而是发送给服务器处理,处理后服务器会发送一个新的html文档给浏览器

  • <form></form>:定义一个收集信息的区域,含有些许控件用于检测事件后传输收集到的表单,action属性指定目标地址method属性指定传输的方法
    • <fieldset></fieldset>:定义表单的边框
      • <legend></legend>:定义边框的标题
    • <input>:定义一个输入控件type属性指定其类型,id属性指定其关联的label元素,name属性指定这个表单项的名字,value指定这个选项的内容
    • <label></label>:定义一个表单项的标签,for属性指定这个表单项的id
    • <select></select>:定义一个可下拉选项name属性指定这个表单项的名字
      • <option></option>:定义一个选项,value属性指定这个选项的内容,selected属性指定这个下拉选项的预先选好的选项(否则为第一个option元素)
    • <textarea></textarea>:定义一个用于输入多行文本的控件,colsrows分别定义其宽高

html5提供的一些新控件如下:

  • <button></button>:定义一个按钮控件,其与<input type="button">的区别为支持更丰富的内容(例如图像)。不要随意将button元素放在表单里,因为它相当于<input type="submit">(提交按钮)

属性的值

  • id:每个html元素只有唯一的id,因此这个属性用于查找唯一值、设置锚点等
  • namename属性的一个值可以复用到多个html元素上,且会将它们绑定为一个整体传输数据;例如,单选框的所有选项的name属性应当一致,才能达到单选的效果。name属性是输入控件必不可少的一项,提交数据时只会提交含有name选项的元素
  • value:指定该元素的内容,方便传输数据,有时可以改变;一些控件会显示它的值
  • <option>的属性位:有selected(默认选中)、disabled(无法选中)、hidden(不显示该选项)
  • <input>type:其值有text(一般文本)、submit(提交按钮)、radio(单选框)、checkbox(复选框)、reset(重置按钮)、button(一般按钮)、password(密码文本,即隐藏文本)
  • <input>checked位:置位表示选中