【前端三剑客一】HTML的手术刀式剖析

一、HTML结构

  HTML本身的语法比较简单,语法风格与Java之类的编程语言差别挺大的,它并不是表示一些逻辑上的东西,而是表示的是一种规则。

1.HTML 标签

  HTML 代码是由 “标签” 构成的。如:

<body>hello</body>
  • 标签名 (body) 放到 < > 中
  • 大部分标签成对出现. 为开始标签, 为结束标签.
  • 少数标签只有开始标签, 称为 “单标签”.
  • 开始标签和结束标签之间, 写的是标签的内容. (如hello)
  • 开始标签中可能会带有 “属性”. id 属性相当于给这个标签设置了一个唯一的标识符(身份证号码)
<body id="myId">hello</body>

2.HTML 文件基本结构

<html>
	<head>
		<title>第一个页面</title>
	</head>
	<body>
		hello world
	</body>
</html>
  • html 标签是整个 html 文件的根标签(最顶层标签)
  • head 标签中写页面的属性.
  • body 标签中写的是页面上显示的内容
  • title 标签中写的是页面的标题

3.标签层次结构

  • 有父子关系与兄弟关系
<html>
	<head>
		<title>第一个页面</title>
	</head>
	<body>
		hello world
	</body>
</html>
  • head 和 body 是 html 的子标签(html 就是 head 和 body 的父标签)
  • title 是 head 的子标签. head 是 title 的父标签.
  • head 和 body 之间是兄弟关系

  我们可以使用 浏览器的开发者工具查看页面的结构。打开一个页面,摁F12 或者右键审查元素, 开启开发者工具, 切换到 Elements 标签(不同浏览器不同叫法), 就可以看到页面结构细节。如下图:
在这里插入图片描述  我使用的是火狐浏览器,可以看到,整个页面的结构细节。

在这里插入图片描述

  我们还可以使用上图左上角的箭头,来指定查看页面的指定位置,可以看到,我们指向百度的logo图标,下面的查看器里面就定位到了具体的HTML代码。
在这里插入图片描述

  标签之间的结构关系, 构成了一个 DOM 树.DOM 是 Document Object Mode (文档对象模型) 的缩写.
(下图来自网络)
在这里插入图片描述


4.快速生成代码框架

  在 vs code中创建文件 xxx.html , 直接输入 ! , 按 tab 键, 此时能自动生成代码的主体框架。

在这里插入图片描述
  细节解释:

  • 称为 DTD (文档类型定义), 描述当前的文件是一个 HTML5 的文件.
  • 其中 lang 属性表示当前页面是一个 "英语页面". 这里暂时不用管. (有些浏览器会根据此处的声明提示是否进行自动翻译).
  • <meta charset=“UTF-8”> 描述页面的字符编码方式. 没有这一行可能会导致中文乱码.
  • <meta name=“viewport” content=“width=device-width, initial-scale=1.0”>
  1. name=“viewport” 其中 viewport 指的是设备的屏幕上能用来显示我们的网页的那一块区域.
  2. content=“width=device-width, initial-scale=1.0” 在设置可视区和设备宽度等宽, 并设置初始缩放为不缩放. (这个属性对于移动端开发更重要一些)。


二、HTML 常见标签

1.注释标签

<!-- 注释 -->

  ctrl + / 快捷键可以快速进行注释/取消注释
  注释的原则:

  1. 要和代码逻辑一致,不一致怎么叫注释呢?
  2. 尽量使用中文.都是中国人
  3. 不要传递负能量.(比如说,骂人的话)

2.标题标签

  标签注释有六个, 从 h1 - h6. 数字越大, 则字体越小。

<h1>hello</h1>
<h2>hello</h2>
<h3>hello</h3>
<h4>hello</h4>
<h5>hello</h5>
<h6>hello</h6>

在这里插入图片描述

3.段落标签: p

<p>这是一个段落</p>

&emap;  在html 中, 并不会帮我们自动分段,如果我们按照正常写法写了一大段文字,会发现并没有分成段落。

在这里插入图片描述
页面显示:
在这里插入图片描述
  因此我们想分段,得用p标签

在这里插入图片描述
页面显示:
在这里插入图片描述
【注意事项】

  • p 标签之间存在一个空隙
  • 当前的 p 标签描述的段落, 前面还没有缩进. (未来 CSS 会学)
  • 自动根据浏览器宽度来决定排版.
  • html 内容首尾处的换行, 空格均无效.
  • 在 html 中文字之间输入的多个空格只相当于一个空格.
  • html 中直接输入换行不会真的换行, 而是相当于一个空格

4.换行标签: br

<br/>

  br 是 break 的缩写. 表示换行。

  • br 是一个单标签(不需要结束标签)
  • br 标签不像 p 标签那样带有一个很大的空隙.
  • <br/> 是规范写法. 不建议写成

在这里插入图片描述

页面显示:
在这里插入图片描述


5.转义字符

  HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当作文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义字符串。
(下图来自网络)
在这里插入图片描述


6.格式化标签

  • 加粗: strong 标签 和 b 标签
  • 倾斜: em 标签 和 i 标签
  • 删除线: del 标签 和 s 标签
  • 下划线: ins 标签 和 u 标签
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <strong>strong 加粗</strong>
    <b>b 加粗</b>
    <em>倾斜</em>
    <i>倾斜</i>
    <del>删除线</del>
    <s>删除线</s>
    <ins>下划线</ins>
    <u>下划线</u>
</body>
</html>

在这里插入图片描述  我们可以看到,HTML的文件中输入的换行,和网页显示的换行没有任何区别,要想显示这里的换行,需要使用br标签。但是像之前的h1-h6,p之类的标签都能独占一行,这些称为块级元素。不能独占一行的元素,我们称为行内元素。


7.图片标签: img

  img 标签可以带有很多属性,这些属性有的可带可不带,但是必须带有 src 属性.,src属性表示图片的路径。img标签是一个单标签,也就是不需要结束标签。

<img src="pic.jpg">

  这里就是要把 pic.jpg 这个图片文件放到和 html 中的同级目录中。这里需要注意,src里面是可以有相对路径,绝对路径或者是网络路径。

	<!-- 相对路径-->
	<img src="pic.jpg">
	<!-- 绝对路径-->
    <img src="D:\备份文件\a编程\1.c语言项目\比特科技——认真学习\4.jpg">
    <!-- 网络路径-->
    <img src="https://pics7.baidu.com/feed/0e2442a7d933c8956cd0803fc73099f6830200f5.jpeg?token=e117f0501d1a757194eb1241118b6b5b">

  img 标签的其他属性

  • alt: 替换文本. 当文本不能正确显示的时候, 会显示一个替换的文字.
  • title: 提示文本. 鼠标放到图片上, 就会有提示.
  • width/height: 控制宽度高度. 高度和宽度一般改一个就行, 另外一个会等比例缩放. 否则就会图片失衡.
  • border: 边框, 参数是宽度的像素. 但是一般使用 CSS 来设定
<img src="pic.jpg" alt="神奇的图片" title="一张图片" width="500px" height="600px">

在这里插入图片描述
【注意】

  1. 属性可以有多个, 不能写到标签之前
  2. 属性之间用空格分割, 可以是多个空格, 也可以是换行
  3. 属性之间不分先后顺序
  4. 属性使用 “键值对” 的格式来表示.

8.超链接标签: a

<a href="地址">这是一个超链接</a>
  • href: 必须具备, 表示点击后会跳转到哪个页面.
  • target: 打开方式. 默认是 _self. 如果是 _blank 则用新的标签页打开。
<!--百度的链接-->
<a href="http://www.baidu.com">百度</a>

  链接的几种形式:

  1. 外部链接: href 引用其他网站的地址
<a href="http://www.baidu.com">百度</a>
  1. 内部链接:网站内部页面之间的链接. 写相对路径即可

  在一个目录中, 先创建一个 1.html, 再创建一个 2.html。

<!-- 1.html -->
我是 1.html
<a href="2.html">点我跳转到 2.html</a>
<!-- 2.html -->
我是 2.html
<a href="1.html">点我跳转到 1.html</a>
  1. 空链接: 使用 # 在 href 中占位
<a href="#">空链接</a>
  1. 下载链接: href 对应的路径是一个文件. (可以使用 zip 文件)
<a href="test.zip">下载文件</a>
  1. 网页元素链接: 可以给图片等任何元素添加链接(把元素放到 a 标签中)
<a href="http://www.sogou.com">
	<img src="rose.jpg" alt="">
</a>
  1. 锚点链接: 可以快速定位到页面中的某个位置
<a href="#one">第一集</a>
<a href="#two">第二集</a>
<a href="#three">第三集</a>
<p id="one">
	第一集剧情 <br>
	第一集剧情 <br>
	...
</p>
<p id="two">
	第二集剧情 <br>
	第二集剧情 <br>
	...
</p>
<p id="three">
	第三集剧情 <br>
	第三集剧情 <br>
	...
</p>

禁止 a 标签跳转: <a href=“javascript:void(0);”> 或者 <ahref=“javascript:;”>


9.表格标签

(1)基本使用

  • table 标签: 表示整个表格
  • tr: 表示表格的一行
  • td: 表示一个单元格
  • th: 表示表头单元格. 会居中加粗
  • thead: 表格的头部区域(注意和 th 区分, 范围是比 th 要大的)
  • tbody: 表格得到主体区域.

  表格标签有一些属性, 可以用于设置大小边框等. 但是一般使用 CSS 方式来设置。这些属性都要放到 table 标签中。

  • align 是表格相对于周围元素的对齐方式。align=“center” (不是内部元素的对齐方式)
  • border 表示边框. 1 表示有边框(数字越大, 边框越粗), “” 表示没边框.
  • cellpadding: 内容距离边框的距离, 默认 1 像素
  • cellspacing: 单元格之间的距离. 默认为 2 像素
  • width / height: 设置尺寸
<table align="center" border="1" cellpadding="20" cellspacing="0" width="500"
height="500">
        <tr>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
        </tr>
        <tr>
            <td>张三</td>
            <td></td>
            <td>11</td>
        </tr>
        <tr>
            <td>李四</td>
            <td></td>
            <td>11</td>
        </tr>
    </table>

在这里插入图片描述

(2)合并单元格

  • 跨行合并: rowspan=“n”
  • 跨列合并: colspan=“n”

步骤

  1. 先确定跨行还是跨列
  2. 找好目标单元格(跨列合并, 左侧是目标单元格; 跨行合并, 上方是目标单元格)
  3. 删除的多余的单元格
<table align="center" border="1" cellpadding="20" cellspacing="0" width="500"
height="500">
        <tr>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
        </tr>
        <tr>
            <td>张三</td>
            <td colspan="2"></td>
        </tr>
        <tr>
            <td>李四</td>
            <td></td>
            <td>11</td>
        </tr>
    </table>

在这里插入图片描述


10.列表标签

主要使用来布局的. 整齐好看.

  • 无序列表[重要] ul li , .
  • 有序列表[用的不多] ol li
  • 自定义列表[重要] dl (总标签) dt (小标题) dd (围绕标题来说明) 上面有个小标题, 下面有几个围绕着标题来展开的。

【注意】

  1. 元素之间是并列关系
  2. ul/ol 中只能放 li 不能放其他标签, dl 中只能放 dt 和 dd
  3. li 中可以放其他标签.
  4. 列表带有自己的样式, 可以使用 CSS 来修改. (例如前面的小圆点都会去掉)
 <h3>无序列表</h3>
    <ul>
        <li>咬人猫</li>
        <li>兔总裁</li>
        <li>阿叶君</li>
    </ul>
    <h3>有序列表</h3>
    <ol>
        <li>咬人猫</li>
        <li>兔总裁</li>
        <li>阿叶君</li>
    </ol>
    <h3>自定义列表</h3>
    <dl>
        <dt>我的老婆们</dt>
        <dd>咬人猫</dd>
        <dd>兔总裁</dd>
        <dd>阿叶君</dd>
    </dl>

在这里插入图片描述
  最常用的就是无序列表,使用场景已经并不是单纯的就用本身的这种显示行为了,而是把多个"并列关系"的元素给罗列到一起.这种经常就会使用到ul
  上面的无序列表的小圆点,要不要显示,显示成啥样,都可以通过CSS来修改。


11.表单标签

1.form标签

<form action="test.html">
... [form 的内容]
</form>

  form (不是from,不要拼写错了)表示一个表单标签.借助这个form就可以允许用户输入一些信息,并且提交到服务器上,在form里面可以放一些和用户交互的组件.


2.input 标签

  • 各种输入控件, 单行文本框, 按钮, 单选框, 复选框.
  • type(必须有), 取值种类很多多, button, checkbox, text, file, image, password, radio 等.
  • name: 给 input 起了个名字. 尤其是对于 单选按钮, 具有相同的 name 才能多选一.
  • value: input 中的默认值
  • checked: 默认被选中. (用于单选按钮和多选按钮)
    maxlength: 设定最大长度.

(下图来自网络)
在这里插入图片描述

<!--文本框-->
    <input type="text"><br/>
    <!--密码框-->
    <input type="password"><br/>
    <!--单选框,注意: 单选框之间必须具备相同的 name 属性, 才能实现 多选一 效果-->
    性别:
    <input type="radio" name="sex"><input type="radio" name="sex" checked="checked"><br/>
    <!--复选框-->
    爱好:
    <input type="checkbox"> 吃饭 <input type="checkbox"> 睡觉 <input type="checkbox">
    打游戏<br/>
    <!--普通按钮,当前点击了没有反应. 需要搭配 JS 使用-->
    <input type="button" value="我是个按钮">
    <input type="button" value="我是个按钮" onclick="alert('hello')">
    <!--提交按钮-->
    <form action="test.html">
        <input type="text" name="username">
        <input type="submit" value="提交">
    </form><br/>
    <!--清空按钮:清空按钮必须放在 form 中. 点击后会将 form 内所有的用户输入内容重置.-->
    <form action="test.html">
        <input type="text" name="username">
        <input type="submit" value="提交">
        <input type="reset" value="清空">
    </form><br/>
    <!--选择文件-->
    <input type="file">

在这里插入图片描述


3.label 标签

  搭配 input 使用. 点击 label 也能选中对应的单选/复选框, 能够提升用户体验.
  for 属性: 指定当前 label 和哪个相同 id 的 input 标签对应. (此时点击才是有用的).

<label for="male"></label> <input id="male" type="radio" name="sex">

在这里插入图片描述


4.select 标签

  下拉菜单

  • option 中定义 selected=“selected” 表示默认选中
	<select>
        <option>北京</option>
        <option selected="selected">上海</option>
    </select>

在这里插入图片描述
可以给的第一个选项, 作为默认选项:

<select>
        <option>--请选择年份--</option>
        <option>1991</option>
        <option>1992</option>
        <option>1993</option>
        <option>1994</option>
        <option>1995</option>
    </select>

在这里插入图片描述


5.textarea 标签

  文本域中的内容, 就是默认内容, 注意, 空格也会有影响.rows 和 cols 也都不会直接使用, 都是用 css 来改的

<textarea rows="3" cols="50">哈哈哈哈
</textarea>

在这里插入图片描述


6.无语义标签: div & span

  • div 标签, division 的缩写, 含义是 分割
  • span 标签, 含义是跨度

就是两个盒子. 用于网页布局

  • div 是独占一行的, 是一个大盒子.
  • span 不独占一行, 是一个小盒子
<div>
        <span>咬人猫</span>
        <span>咬人猫</span>
        <span>咬人猫</span>
    </div>
    <div>
        <span>兔总裁</span>
        <span>兔总裁</span>
        <span>兔总裁</span>
    </div>
    <div>
        <span>阿叶君</span>
        <span>阿叶君</span>
        <span>阿叶君</span>
    </div>

在这里插入图片描述
这里有一个文档,大家可以去了解一下:

  1. 学习 HTML :指南与教程
  2. HTML(超文本标记语言)


三、实例

实例一:展示简历

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>天下五</h1>
    <!--基本信息-->
    <div>
        <h2>基本信息</h2>
        <img src="pic.jpg" alt="">
        <p><span>求职意向:</span>Java开发工程师</p>
        <p><span>联系电话:</span>1111111111</p>
        <p><span>邮箱:</span11111.qq.com</p>
        <p><a href="https://github.com">我的 github</a></p>
        <p><a href="https://csdn.com">我的 博客</a></p>
    </div>
    <!--教育背景-->
    <div>
        <h2>教育背景</h2>
        <ol>
            <li>2014 - 2017 地球中学 初中</li>
            <li>2017 - 2021 地球中学 高中</li>
            <li>2021 - 2025 地球中学 计算机专业 本科</li>
        </ol>
    </div>
    <!--专业技能-->
    <div>
        <h2>专业技能</h2>
        <ul>
            <li>Java 基础语法扎实,已经刷了 800 道 Leetcode 题;</li>
            <li>常见数据结构都可以独立实现并熟练应用;</li>
            <li>熟知计算机网络理论,并且可以独立排查常见问题;</li>
            <li>掌握 Web 开发能力,并且独立开发了学校的留言墙功能。</li>
        </ul>
    </div>
    <!--我的项目-->
    <div>
        <h2>我的项目</h2>

        <ol>
            <li>
                <h3>留言墙</h3>
                <p>开发时间:2008年9月 到 2008年12月</p>
                <p>功能介绍:
                    <ul>
                        <li>支持留言发布</li>
                        <li>支持匿名留言</li>
                    </ul>
                </p>
            </li>
            <li>
                <h3>学习小助手</h3>
                <p>开发时间:2008年9月 到 2008年12月</p>
                <p>功能介绍:
                    <ul>
                        <li>支持错题检索</li>
                        <li>支持同学探讨</li>
                     </ul>
                </p>
            </li>
        </ol>
    </div>

    <!-- 其他信息 -->
    <div>
        <h2>个人评价</h2>
        <p>在校期间,学习成绩优良,多次获得奖学金。</p>
    </div>

</body>
</html>

在这里插入图片描述

实例二:填写简历信息

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <table width="500px" cellspacing="0">
        <thead>
            <h3>请填写简历信息</h3>
        </thead>
        <tbody>
            <tr>
                <td>
                    <label for="name">姓名</label>
                </td>
                <td>
                    <input type="text" id="name">
                </td>
            </tr>
            <tr>
                <td>性别</td>
                <td>
                    <input type="radio" name="sex" id="male" checked="checked">
                    <label for="male">male</label>
                    <input type="radio" name="sex" id="female">
                    <label for="female">female</label>
                </td>
            </tr>
            <tr>
                <td>出生日期</td>
                <td>
                    <select name="" id="">
                        <option value="">年份</option>
                        <option value="">1888</option>
                        <option value="">1889</option>
                        <option value="">1890</option>
                        <option value="">1891</option>
                    </select>
                    <select name="" id="">
                        <option value="">月份</option>
                        <option value="">1</option>
                        <option value="">2</option>
                        <option value="">3</option>
                        <option value="">4</option>
                        <option value="">5</option>
                        <option value="">6</option>
                        <option value="">7</option>
                        <option value="">8</option>
                        <option value="">9</option>
                        <option value="">10</option>
                        <option value="">11</option>
                        <option value="">12</option>

                    </select>
                </td>
            </tr>
            <tr>
                <td>毕业院校</td>
                <td>
                    <input type="text" name="" id="">
                </td>
            </tr>
            <tr>
                <td>应聘岗位</td>
                <td>
                    <input type="checkbox" id="frontend">
                    <label for="frontend">前端开发</label>
                    <input type="checkbox" id="backend">
                    <label for="backend">后端开发</label>
                    <input type="checkbox" id="qa">
                    <label for="qa">测试开发</label>
                </td>
            </tr>
            <tr>
                <td>掌握的技能</td>
                <td><textarea name="" id="" cols="30" rows="10"></textarea></td>
            </tr>
            <tr>
                <td>项目经历</td>
                <td><textarea name="" id="" cols="30" rows="10"></textarea></td>
            </tr>
            <tr>
                <td></td>
                <td>
                    <input type="checkbox" id="lisence">
                    <label for="lisence">我已仔细阅读过公司的招聘要求</label>
                </td>
            </tr>
            <tr>
                <td></td>
                <td>
                    <a href="#">查看我的状态</a>
                </td>
            </tr>
            <tr>
                <td></td>
                <td>
                    <h3>请应聘者确认:</h3>
                    <ul>
                        <li>以上的信息真实有效</li>
                        <li>能够尽早去公司实习</li>
                        <li>能接受公司的加班文化</li>
                    </ul>
                </td>
            </tr>
        </tbody>
    </table>

</body>
</html>

在这里插入图片描述


四、 最后的话

  有时会在文章的最后讲讲一些莫名奇怪的话,其实不过是为了勉励自己,心中许多郁结,总想有个地方写下来,但毕竟不是专门写小作文的,往往写了三言两语,便觉得言已诉尽,可心却继续郁结。这些话可能没人会看啦,更重要的意义或许就是有时回顾自己写的文章,一直划到最后,看到这杂七杂八的话,可能会会心一笑:嘿,你个小伙子,心思真是多。

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十叶知秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值