作者: xiaoman

2023-07-01

This is the first post of my new Astro blog.

The Astro logo with the word One.

前前后后看了不少次 HTML 教程了,总是停留在看的阶段,没有亲自动手去写前端页面。 因为暂时还用不到,又有想学的念头,为了防止之后用起来的时候遗忘得太严重,这里写一篇总结以随时查阅。 关于 HTML 这个东西,跟 CSS,JavaScript 号称网页三剑客,其中 HTML 又是最基础的。 它是网页结构的骨架,是网页内容最原始、最朴素的展现。 HTML 包含了以下这些内容,在我看来,最基础的是语义化标签结构,在此基础上扩展了表格、表单、图片、视频、链接等。

语义化结构总体骨架

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="utf-8" />
        <meta
            name="viewport"
            content="width=device-width, initial-scale=1"
        />
        <meta
            name="description"
            content="HTML 语言入门"
        />
        <meta
            name="keywords"
            content="HTML,教程"
        />
        <meta
            name="author"
            content="张三"
        />
        <meta
            name="viewport"
            content="width=device-width, initial-scale=1"
        />
        <meta
            name="application-name"
            content="Application Name"
        />
        <meta
            name="generator"
            content="program"
        />
        <meta
            name="subject"
            content="your document's subject"
        />
        <meta
            name="referrer"
            content="no-referrer"
        />

        <meta
            http-equiv="Content-Security-Policy"
            content="default-src 'self'"
        />
        <meta
            http-equiv="Content-Type"
            content="Type=text/html; charset=utf-8"
        />
        <meta
            http-equiv="refresh"
            content="30"
        />
        <meta
            http-equiv="refresh"
            content="30;URL='http://website.com'"
        />

        <link
            href="default.css"
            rel="stylesheet"
            title="Default Style"
        />
        <link
            href="fancy.css"
            rel="alternate stylesheet"
            title="Fancy"
        />
        <link
            href="basic.css"
            rel="alternate stylesheet"
            title="Basic"
        />

        <link
            rel="apple-touch-icon-precomposed"
            sizes="114x114"
            href="favicon114.png"
        />
        <link
            rel="apple-touch-icon-precomposed"
            sizes="72x72"
            href="favicon72.png"
        />
        <link
            rel="alternate"
            type="application/atom+xml"
            href="/blog/news/atom"
        />
        <!-- 
	rel属性表示外部资源与当前文档之间的关系,是<link>标签的必需属性。它可以但不限于取以下值。
	
	alternate:文档的另一种表现形式的链接,比如打印版。
	author:文档作者的链接。
	dns-prefetch:要求浏览器提前执行指定网址的 DNS 查询。
	help:帮助文档的链接。
	icon:加载文档的图标文件。
	license:许可证链接。
	next:系列文档下一篇的链接。
	pingback:接收当前文档 pingback 请求的网址。
	preconnect:要求浏览器提前与给定服务器,建立 HTTP 连接。
	prefetch:要求浏览器提前下载并缓存指定资源,供下一个页面使用。它的优先级较低,浏览器可以不下载。
	preload:要求浏览器提前下载并缓存指定资源,当前页面稍后就会用到。它的优先级较高,浏览器必须立即下载。
	prerender:要求浏览器提前渲染指定链接。这样的话,用户稍后打开该链接,就会立刻显示,感觉非常快。
	prev:表示当前文档是系列文档的一篇,这里给出上一篇文档的链接。
	search:提供当前网页的搜索链接。
	stylesheet:加载一张样式表。
	-->
        <!-- 作者信息 -->
        <link
            rel="author"
            href="humans.txt"
        />
        <!-- 版权信息 -->
        <link
            rel="license"
            href="copyright.html"
        />
        <!-- 另一个语言的版本 -->
        <link
            rel="alternate"
            href="https://es.example.com/"
            hreflang="es"
        />
        <!-- 联系方式 -->
        <link
            rel="me"
            href="https://google.com/profiles/someone"
            type="text/html"
        />
        <link
            rel="me"
            href="mailto:name@example.com"
        />
        <link
            rel="me"
            href="sms:+15035550125"
        />
        <!-- 历史资料 -->
        <link
            rel="archives"
            href="http://example.com/archives/"
        />
        <!-- 目录 -->
        <link
            rel="index"
            href="http://example.com/article/"
        />
        <!-- 导航 -->
        <link
            rel="first"
            href="http://example.com/article/"
        />
        <link
            rel="last"
            href="http://example.com/article/?page=42"
        />
        <link
            rel="prev"
            href="http://example.com/article/?page=1"
        />
        <link
            rel="next"
            href="http://example.com/article/?page=3"
        />
        <!-- 资源预加载 -->
        <link
            rel="preload"
            href="image.png"
            as="image"
        />

        <script
            type="text/javascript"
            src="javascript.js"
        ></script>
        <script
            type="module"
            src="main.js"
        ></script>
        <script
            async
            defer
            nomodule
            src="fallback.js"
        ></script>

        <noscript>
            您的浏览器不能执行 JavaScript 语言,页面无法正常显示。
        </noscript>
        <!--
    <head>的子元素一般有下面七个,后文会一一介绍。
        <meta>:设置网页的元数据。
        <link>:连接外部样式表。
        <title>:设置网页标题。
        <style>:放置内嵌的样式表。
        <script>:引入脚本。
        <noscript>:浏览器不支持脚本时,所要显示的内容。
        <base>:设置网页内部相对 URL 的计算基准。
    -->

        <title>这是网页标题</title>

        <nav>
            <ul>
                <li><a href="/home">首页</a></li>
                <li><a href="/about">关于</a></li>
                <li><a href="/contact">联系</a></li>
            </ul>
            <form target="/search">
                <input
                    name="q"
                    type="search"
                />
                <input type="submit" />
            </form>
        </nav>
    </head>
    <body>
        <header>页眉</header>
        <aside>
            <!-- 侧边栏 -->
            <ul>
                <li><a href="/home">首页</a></li>
                <li><a href="/about">关于</a></li>
                <li><a href="/contact">联系</a></li>
            </ul>
        </aside>

        <nav>
            <!-- 导航栏 -->
            <ol>
                <li><a href="item-a">商品 A</a></li>
                <li><a href="item-b">商品 B</a></li>
                <li>商品 C</li>
            </ol>
        </nav>

        <main>
            <!-- 主内容 -->
            <article>
                <article>
                    <h1>文章标题</h1>
                    <section>
                        <h2>第一章</h2>
                        <p>...</p>
                    </section>
                    <section>
                        <h2>第二章</h2>
                        <p>...</p>
                    </section>
                </article>
            </article>
        </main>
        <footer>页尾</footer>
    </body>
</html>