HTML中需要掌握的标签

目录

  1. 概述
  2. 需要掌握的标签
    • <a>(HTTP GET请求)
    • <form>(HTTP POST请求)
    • <input>
    • <table>
    • <meta>
    • 空标签
    • 可替换标签
  3. 语义化的理解
  4. 总结

概述

HMTL(HyperText Markup Language)是一种相当简单的、由不同元素组成的标记语言,它可以应用于文本片段,使文本在文档中具有不同的含义,将文档结构化为逻辑块,并且可以将图片,影像等内容嵌入到页面中。
随着2014年10月29日HTML5的标准规范发布以来,业界对语义化编程的诉求越来越高,本文会在谈到一些需要着重掌握的标签属性同时,谈到对语义化的理解。HTML5 的 DOCTYPE 较之前有了大幅度简化,<!DOCTYPE html> 即可。

需要掌握的标签

这里先插入一个在如今开发环境中不常用的 <iframe> 元素来辅助我们的学习。它的形式如下:

<iframe src="https://www.example.com" name="xxx"></iframe>

关于它的优缺点,这里不谈。<iframe>还有一些骚操作,详见知乎

<a>(HTTP GET请求)

HTML <a> 元素(或称锚元素)可以创建通向其他网页、文件、同一页面内的位置、电子邮件地址或任何其他 URL 的超链接。在跳转页面的时候,<a> 用于发送 HTTP GET 请求。它是 HTML 中最短也最常用的标签之一。

1.target属性

该属性指定在何处显示链接的资源。 取值为标签(tab),窗口(window),或框架(iframe)等浏览上下文的名称或其他关键词。以下关键字具有特殊的意义:

  • _self: 当前页面加载,即当前的响应到同一HTML 4 frame(或HTML5浏览上下文)。此值是默认的,如果没有指定属性的话。
  • _blank: 新窗口打开,即到一个新的未命名的HTML4窗口或HTML5浏览器上下文
  • _parent: 加载响应到当前框架的HTML4父框架或当前的HTML5浏览上下文的父浏览上下文。如果没有parent框架或者浏览上下文,此选项的行为方式与 _self 相同。
  • _top: IHTML4中:加载的响应成完整的,原来的窗口,取消所有其它frame。 HTML5中:加载响应进入顶层浏览上下文(即,浏览上下文,它是当前的一个的祖先,并且没有parent)。如果没有parent框架或者浏览上下文,此选项的行为方式相同_self。

结合上面的 <iframe> 元素,我们可以了解 target 属性会具体跳转到哪里。
这里先创造一种场景。假设在当前目录下,有 index.html index2.html index3.html,index.html中有 <iframe src="./index2.html"></iframe>,index2.html中有 <iframe src="./index3.html"></iframe>,而如下的代码均放在index3.html中。

<a href="https://www.example.com" target="_self">自己</a>
<a href="https://www.example.com" target="_blank">新开页</a>
<a href="https://www.example.com" target="_parent">爹妈</a>
<a href="https://www.example.com" target="_top">祖宗</a>

如字面意思,_self会跳转到index3.html中打开,_blank无论何时何地都在新页面打开,_parent会跳转到index2.html中打开,_top则会跳转到顶层页面index.html中打开。

2.download属性

<a href="https://www.example.com" download>下载</a>

此属性指示浏览器下载 URL 而不是导航到它,因此将提示用户将其保存为本地文件。点击页面中的该“下载”标签,会直接下载。
另外的一种做法是将HTTP请求的 content-type 写成 application/octet-stream,但如果 content-typetext/html,则需要用download属性强制下载。

3.href属性

href 包含超链接指向的 URL 或 URL 片段。
有以下几种情况需要注意:

  • 无协议绝对地址:href="//example.com" => 会打开http://www.example.com
  • 相对地址:href="xxx.html" => 会打开/xxx.html,是一个相对路径
  • 只写锚点:href="#abc" => 页面内跳转,直接加到路径结尾,不会发起HTTP请求
  • 写查询参数:href="?name=frank" => 跳转到/?name=frank,并发起一个GET请求
  • 伪协议:href="javascript: alert(1)" => 会直接执行。
    一个奇葩需求:href="javascript:;" => 作用:建立一个不需要跳转的链接。
    而直接用 href="#" 会跳转到页面顶部,或者 href="" 会刷新页面并发起一个GET请求

<form>(HTTP POST请求)

HTML <form> 元素 表示了文档中的一个区域,这个区域包含有交互控制元件,用来向 web 服务器提交信息。

1.method属性

下面是一个用于提交用户名和密码的 form,常用于登录网址。

<form action="users" method="post" target="_blank">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="提交">
</form>

首先,一个表单如果没有提交按钮,则无法提交表单,除非用js。
假设用户输入的 username 是 Tom,password 是 123456,点击提交按钮后,会发起一个POST请求,并且在POST请求的第四部分,name和password会以 Tom&123456 的形式发送出去,其Content-Type: application/x-www-form-urlencoded。而基于这个 content-type,所有非英文的内容都会被转义为 UTF-8。
<form> 的 method 属性默认情况下为 get,即发起一个GET请求,但这并没有什么用,直接用 GET 请求相当于在网址末尾加上 users?name=Tom&password=123456
POST 请求添加查询参数的方式是加到 action 里:比如 action="users?z=123"

2.target属性

<form> 标签的 target 属性和 <a> 标签完全一致。

<input>

HTML<input>元素用于为基于Web的表单创建交互式控件,以便接受来自用户的数据; 可以使用各种类型的输入数据和控件小部件,具体取决于设备和 user agent
<input> 有非常多的 type,以下是几种介绍。

1.type="button" 和 type="submit"区别

就视觉上而言,两者长得一样,那么它们有什么区别呢?

第一种情况,两者都没有:

<form action="users" method="post" target="_blank">
  <input type="text" name="username">
  <input type="password" name="password">
  <button>提交</button>
</form>

注意到,这里的按钮是唯一的提交按钮,那么它会自动升级为submit按钮,即点击“提交”按钮,表单能发送成功。但如果此时 button 添加了属性 type=button 则会失败。

第二种情况,有 type="button"

<form action="users" method="post" target="_blank">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="button" value="提交">
</form>

这里的 button 只是普通按钮,并没有 submit 功能,因此无法提交表单。

第三种情况,有 type="submit"

<form action="users" method="post" target="_blank">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="提交">
</form>

表单正常提交。
因此,有且仅有 submit 按钮存在时才能提交表单(注意 <button> 自动升级的情况)。

2.type="checkbox"

表示复选框。必须使用 value 属性定义此控件被提交时的值。使用 checked 属性指示控件是否被选择。

喜欢的水果:
<label><input type="checkbox" name="fruit" value="orange">橘子</input></label>
<label><input type="checkbox" name="fruit" value="apple" checked>苹果</input></label>
<label><input type="checkbox" name="fruit" value="banana">香蕉</input></label>

使用 <label> 标签将内容包起来,可以点击文字直接选中,否则只能点方框。
必须有 name 才能被提交到服务器上,如果三个全部选中,那么 POST 请求的第四部分是 fruit=orange&fruit=apple&fruit=banana

3.type="radio"

表示单选按钮。必须使用 value 属性定义此控件被提交时的值。使用 checked 必须指示控件是否缺省被选择。在同一个”单选按钮组“中,所有单选按钮的 name 属性使用同一个值; 一个单选按钮组中是,同一时间只有一个单选按钮可以被选择。

你女朋友问你:爱不爱我?
<label><input type="radio" name="loveme" value="yes" checked>YES</input></label>
<label><input type="radio" name="loveme" value="yes">YES</input></label>

使用一样的 name 即可只选中一个。

<input> 标签中还有很多 HTML5 中用到的 type,以后会逐渐补齐。

<table>

HTML的 <table> 元素表示表格数据 — 即通过二维数据表表示的信息。

表格的内容按照这个顺序:

  • 一个可选的 <caption> 元素
  • 零个或多个的 <colgroup> 元素
  • 一个可选的 <thead> 元素
  • 一个可选的 <tfoot> 元素(tfoot元素出现在tbody或tr元素前后都可以。在HTML4中,它只能出现在这些元素之前)
  • 零个或多个 <tbody> 元素
  • 一个或多个 <tr> 元素
<table>
        <caption>成绩表</caption>
        <colgroup>
            <col class="column1">
            <col class="columns2plus3" span="2">
        </colgroup>
        <thead>
            <tr>
                <th></th>
                <th>Name</th>
                <th>Class</th>
                <th>Score</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>Average</th>
                <td></td>
                <td></td>
                <td>80</td>
                <tr>
                    <th>Total</th>
                    <td></td>
                    <td></td>
                    <td>240</td>
                </tr>
        </tfoot>
        <tbody>
            <tr>
                <td></td>
                <td>Shawn</td>
                <td>2</td>
                <td>100</td>
            </tr>
            <tr>
                <td></td>
                <td>Tom</td>
                <td>1</td>
                <td>60</td>
            </tr>
            <tr>
                <td></td>
                <td>Frank</td>
                <td>3</td>
                <td>80</td>
            </tr>

        </tbody>
    </table>

如图是一个结构比较完整的表格,加上一点 CSS 呈现如下:

其中的灰色部分是选中 colgroup 中的 columns2plus3 来实现的。我们注意到代码中的 <tfoot><tbody> 上面,但是不影响结果的呈现。

<meta>

HTML<meta>元素表示那些不能由其它HTML元相关元素 (<base>, <link>, <script>, <style><title>) 之一表示的任何元数据信息.
<meta>有非常多的属性,这里我们只讲 name="viewport",它提供有关视口初始大小的提示,仅供移动设备使用。目前研究还不深,这里只提供文档。

空标签

一个空元素可能是 HTML,SVG,或者 MathML 里的一个不可能存在子节点(例如内嵌的元素或者元素内的文本)的元素。

在 HTML 中有以下这些空元素:

可替换标签

CSS 里,可替换元素的展现不是由 CSS 来控制的。这些元素是一类外观渲染独立于 CSS 的 外部对象。 简单来说,它们的内容不受当前文档的样式的影响。CSS 可以影响可替换元素的位置,但不会影响到可替换元素自身的内容。某些可替换元素,例如 <iframe> 元素,可能具有自己的样式表,但它们不会继承父文档的样式。
CSS 能对可替换元素产生的唯一影响在于,部分属性支持控制元素内容在其框中的位置或定位方式。

典型的可替换元素有:

有些元素仅在特定情况下被作为可替换元素处理,例如:

语义化的理解

结构化的标签,它在一个网页结构中,可以清楚的表示该部分在文档中的结构含义。

HTML5 关注的不仅是呈现出一个页面的效果,它更加关注如何构造一个结构化的代码内容优雅地页面。
HTML5 新增的结构化标签虽然本质上都是 div 标签,但它用语义化的命名方式使得一个HTML页面更加有结构和清晰,在日后如果遇到重构等问题也更加方便。

语义化标签,顾名思义就是从标签的名称就能看出这个标签的作用是什么,按照设计的网页结构使用合理的标签可以使代码清晰易懂,一定程度上也做好了页面的 SEO(搜索引擎优化)。

语义化标签列举:

  • <article> 定义外部的内容,可以是一片新的文章
  • <aside> 定义article以外的内容,aside的内容可用作文章的侧栏
  • <fig caption> 定义figure元素的标题
  • <figure> 对元素进行组合,使用fig caption元素为元素组添加标题
  • <footer> 定义section或文档的页脚
  • <header> 定义文档的页眉
  • <hgroup> 用于对section或网页的标题进行组合,使用fig caption元素为元素组添加标题
  • <nav> 定义导航链接部分
  • <section> 定义文章中的节。比如章节、页眉、页脚或文章中的其他部分。
  • <time> 定义日期或时间

总结

以上大概就是我在学习HTML过程中对标签的梳理。里面涉及到有些内容,比如 meta viewport 在移动端的应用,还需要以后有相关项目经历才能深刻理解。以及一些HTML5 中的新标签,特别是 canvasvideoaudio 等,会在以后的文章里详细呈现。

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

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,454评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,744评论 1 92
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 3,875评论 0 0
  • HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(D...
    米塔塔阅读 3,229评论 1 41
  • 学习HTML的最佳网站没有之一http://www.w3school.com.cn/html/ 关于HTML/HT...
    Amyyy_阅读 2,054评论 0 16