1-初识HTML与CSS

0 阅读19分钟

初识Web前端

前端代码通过浏览器的解析与渲染转化为用户可以看到的网页。浏览器中对代码进行解析渲染的部分,称为浏览器内核。不同的浏览器,内核不同,对相同的前端代码的解析效果可能存在差异。Web标准就是用来进行统一的。Web标准提出,一个网页程序由三个部分组成:

HTML:负责网页的结构(页面元素和内容)

CSS:负责网页的表现(页面元素的外观、位置等页面样式,如颜色、大小等)

JavaScript:负责网页的行为(交互效果)

什么是HTML

HTML(HyperText Markup Language):超文本标记语言

超文本:超越了文本的限制。除了文字信息,还可以定义图片、音频、视频等内容。

标记语言:由标签"<标签名>" 构成的语言。

HTML标签都是预定义好的。例如:使用<h1>展开标题,使用<img>展示图片,使用<video>展示视频。HTML代码直接在浏览器中运行,HTML标签由浏览器解析。

什么是CSS

CSS(Cascading Style Sheet):层叠样式表,用于控制页面的样式。

<h1 style="color:red;">HTML入门程序</h1>

这样就可以把HTML入门程序这几个字变成红色。

Web前端开发的相关文档:MDN Web Docs

安装插件

1.HTML CSS Support

2.JavaScript(ES6) code snippets

3.Mithril Emmet

4.Path Intellisense

5.Vue 3 Snippets

6.Auto Close Tag

7.open in browser

8.Auto Rename Tag

9.Live Server

10.Vue(Official)

11.File Utils

12.IntelliJ IDEA Keybindings

13.Trae AI:Coding Assistant

14.Lingma - Alibaba Cloud AI Coding Assistant

在编写HTML文件时,直接先输入一个感叹号再回车,VSCode就会补全所有的标签。选中文本,再Ctrl+/可以生成注释。

<!DOCTYPE html> <!--声明当前文档的类型为HTML-->
<html lang="en">
<head>
  <meta charset="UTF-8">
​
  <!-- 设置网页在移动设备上的显示宽度与缩放比例 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>HTML快速入门</title>
</head>
<body>
  <h1>HTML快速入门</h1>
  <img src="img/1.png">
  
</body>
</html>

可以通过写注释的方式,让AI根据注释完成对应的内容。

颜色调整

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</title>
</head>
<body>
  <h1>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</h1>
  <!-- 有六种标题标签,从h1到h6,其中h1为最顶层标题,h6为最低层标题。 -->
​
  <!-- 定义一个超链接,展示的内容是央视网 -->
  <a href="http://www.cctv.com">央视网</a>
  <!-- a 超链接标签 
   href 属性:超链接的网址
   target 属性:超链接打开方式
    _blank:在新窗口打开
    _self:在当前窗口打开(默认)
    如果要在新窗口打开,应该这么书写: <a href="http://www.cctv.com" target="_blank">央视网</a>
  -->
    2026年01月19日 08:49
</body>
</html>

注意到在原来的新闻中,发布时间是呈灰色的。这就需要CSS的样式控制了。

CSS的引入方式:

1.行内样式:写在标签的style属性中(通常配合JavaScript使用)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</title>
</head>
<body>
  <h1>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</h1>
  <a href="http://www.cctv.com">央视网</a>
    <!-- 方式一:行内样式 -->
    <span style="color: gray">2026年01月19日 08:49</span>
</body>
</html>

2.内部样式:写在style标签中(可以写在页面任何位置,但通常约定写在head标签中)

相当于先定义被span包裹的文字的属性,然后将需要调整样式的文字用span包裹。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</title>
  <!-- 方式二:内部样式 -->
  <style>
    span {
      color: gray;
    }
  </style>
</head>
<body>
  <h1>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</h1>
  <a href="http://www.cctv.com">央视网</a>
  <span>2026年01月19日 08:49</span>
</body>
</html>

可以将span改为其它标签,道理是一样的,表示调整这个标签包裹的文字的属性。

3.外部样式:写在一个单独的.css文件中(需要通过link标签在网页中引入)

在html文件所在的目录下创建一个css文件夹,用来存放css文件,然后在里面创建一个单独的news.css文件,内容为:

span {
    color: gray;
}

再在html文件中通过link标签引入

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</title>
  <!-- 方式三:外部样式 -->
  <link rel="stylesheet" href="css/news.css">
  <!-- rel表示引入的文件类型,这里是stylesheet,表示样式文件,即css
  href表示引入的文件路径,这里是css/news.css -->
</head>
<body>
  <h1>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</h1>
  <a href="http://www.cctv.com">央视网</a>
  <span>2026年01月19日 08:49</span>
</body>
</html>

第一种方式的复用性是最差的,因为只针对当前行生效。第三种方式的复用性是最好的,哪个HTML文件要用,直接通过link引入。第二种居中,针对当前的HTML文件生效。

颜色透明度调整

调整了颜色之后,我们发现原始的央视新闻中的灰色是非常淡的,还要调整。

颜色表示形式:

表示方式属性值说明示例
关键字颜色英文单词red\green\blue\gray上面的三个例子都使用关键字声明颜色
rgb表示法rgb(r,g,b)红绿蓝三原色,取值0-255rgb(0,0,0)、rgb(255,0,0)(红色)
rgba表示法rgba(r,g,b,a)红绿蓝三原色,a表示透明度,取值:0-1rgba(0,0,0,0.3),rgba(255,0,0,0.5)
十六进制表示法#rrggbb#开头,将数字转换为十六进制表示#000000、#ff0000,简写:#000,#f00

ff=16*15+1*15=255,所以#ff0000相当于rgb(255,0,0),都表示纯红色。

如何与新闻的颜色保持一致?可以Win+Shift+S进入截图,选择颜色选取器即可,可以选择红绿蓝表示法,也可以选择十六进制表示法。或者在网页空白处右键,点击View Page Source查看源码也可以。

span {
  /* 关键字
  color: gray; */
  color: #b2b2b2;
}

选择器

这里我们的操作是将所有用span包裹的文字都设置为这个颜色。那么如果当前页面中有多个span标签,则所有span标签中的文字颜色都将被设置为灰色,这显然是不合理的。如何只针对发布时间设置CSS样式?可以通过CSS中的选择器来选取需要设置样式的元素(标签)。

选择器写法示例示例说明
元素选择器元素名称 {...}h1 {...}选择页面上所有的<h1>标签
类选择器.class属性值 {...}.cls {...}选择页面上所有class属性为cls的标签
id选择器#id属性值 {...}#hid {...}选择页面上id属性为hid的标签
分组选择器选择器1,选择器2 {...}h1,h2 {...}选择页面上所有的<h1><h2>标签
属性选择器元素名称[属性] {...}input[type] {...}选择页面上有type属性的<input>标签
属性选择器元素名称[属性名=”值“] {...}input[type="text"] {...}选择页面上type属性为text的<input>标签
后代选择器元素1 元素2 {...}form input {...}选择<form>标签内的所有<input>标签

前面我们写的span就是元素选择器。

类选择器:

.cls {
  color: #b2b2b2;
}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</title>
  <link rel="stylesheet" href="css/news.css">
</head>
<body>
  <h1>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</h1>
  <a href="http://www.cctv.com">央视网</a>
  
  <span class="cls">2026年01月19日 08:49</span>
  <span>6666</span>
</body>
</html>

可以看到,只有发布时间是灰色,6666是正常的黑色。

ID选择器:

#time {
  color: #b2b2b2;
}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</title>
  <link rel="stylesheet" href="css/news.css">
</head>
<body>
  <h1>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</h1>
  <a href="http://www.cctv.com">央视网</a>
  
  <span id="time">2026年01月19日 08:49</span>
  <span>6666</span>
</body>
</html>

可以看到,ID选择器可以唯一地定位到发布时间这个标签。

如果三类选择器都同时匹配到同一个元素,则会根据优先级显示属性。ID选择器优先级最高,类选择器次之,最后是元素选择器。

下划线

原新闻中的超链接下方是没有下划线的,现在我们要去掉下划线。由于页面只有这一个超链接,我们可以直接使用元素选择器。记不住没关系,直接写注释交给AI即可。

#time {
  color: #b2b2b2;
}
​
/* 去除超链接的下划线 */
a {
  text-decoration: none;
}

如果想要进一步了解text-decoration属性的作用,可以将光标放在它上面,点击MDN Reference就能进入我们前面给出的帮助文档中。

图片与视频

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</title>
  <link rel="stylesheet" href="css/news.css">
</head>
<body>
​
  <!---------------------- 新闻标题 -------------------------->
  <h1>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</h1>
  <a href="http://www.cctv.com">央视网</a>
  
  <span id="time">2026年01月19日 08:49</span>
  <!-- 换两行 -->
  <br><br>
​
  <!---------------------- 新闻正文 -------------------------->
  <!-- 定义一个视频,引入video/news.mp4 -->
   <video src="video/news.mp4" controls width="800px"></video>
   <!-- video标签属性
    src: 视频文件路径
    width: 视频宽度
    height: 视频高度
    高度与宽度的单位:px(像素)、%
    百分比:相对于父元素的宽度或高度。这里的父元素是body
    高度与宽度设置一个即可,另一个会自动按比例调整
    controls: 显示播放控件。如果没有这个属性,视频不会显示播放控件,用户无法控制视频播放
    loop: 循环播放
    autoplay: 自动播放 
   -->
  
   <!-- 如果是音频,使用<audio>标签,属性与video标签类似 -->
​
    <br><br>
​
    <!-- 使用段落标签<p>,两段之间会自动换行 -->
    <p>
      2026年第1期《求是》杂志发表中共中央总书记、国家主席、中央军委主席习近平的重要文章《学习好贯彻好党的二十届四中全会精神》。
    </p>
​
    <p>
      党的二十届四中全会审议通过“十五五”规划建议,擘画了未来五年的宏伟蓝图。
    </p>
​
    <p>
      在贯彻落实全会精神过程中,习近平总书记指出要着重把握以下几点:第一,坚定不移推动高质量发展;第二,加快构建新发展格局;第三,推动全体人民共同富裕迈出坚实步伐;第四,更好统筹发展和安全;第五,统筹推进各领域工作。
    </p>
​
    <p>
      2026年是“十五五”开局之年。习近平主席在二〇二六年新年贺词中指出:“我们要锚定目标任务,坚定信心、乘势而上,扎实推动高质量发展,进一步全面深化改革开放,推进全体人民共同富裕,续写中国奇迹新篇章。”
    </p>
​
    <!-- 定义一张图片,引入img/1.png -->
      <img src="img/1.png">
    <!-- img标签属性
      src: 图片文件路径
        1. 相对路径:相对于当前HTML文件的位置
          1.1 同一文件夹下:img/1.png(或./img/1.png)
          1.2 上一级文件夹:../img/1.png
          1.3 下一级文件夹:folder/img/1.png
        2. 绝对路径:从根目录开始写起,完整的文件
          2.1 绝对磁盘路径:C:/Users/31604/Desktop/Personal/JavaWeb/code/HTML-CSS/img/1.png
          2.2 绝对网络路径:https://www.example.com/img/1.png
          在新标签页中打开图片即可看到图片的绝对网络路径
          需要注意的是,浏览器出于安全考虑,通常不允许网页直接访问本地文件,建议使用相对路径或将图片上传到服务器后使用网络路径。
      alt: 图片无法显示时,显示的替代文本
      width: 图片宽度
      height: 图片高度
      高度与宽度的单位:px(像素)、%
      百分比:相对于父元素的宽度或高度。这里的父元素是body
      高度与宽度设置一个即可,另一个会自动按比例调整
    --></body>
</html>

首行缩进、加粗、行高

#time {
  color: #b2b2b2;
}
​
/* 去除超链接的下划线 */
a {
  text-decoration: none;
}
​
​
p {
  /* 为所有段落标签设置行高 */
  line-height: 2;
​
  /* 设置首行缩进2个字符 */
  text-indent: 2em;
}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</title>
  <link rel="stylesheet" href="css/news.css">
</head>
<body>
​
  <!---------------------- 新闻标题 -------------------------->
  <h1>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</h1>
  <a href="http://www.cctv.com">央视网</a>
  
  <span id="time">2026年01月19日 08:49</span>
  <!-- 换两行 -->
  <br><br>
​
  <!---------------------- 新闻正文 -------------------------->
   <video src="video/news.mp4" controls width="800px"></video>
​
    <br><br>
​
    <!-- 使用<b>标签加粗</b> -->
    <!-- 使用<;strong>标签加粗</strong>有同样效果 -->
    <!-- &nbsp;是空格符,但是这么做太麻烦且不美观,使用CSS设置段落缩进 -->
    <p>
      <b>
        2026年第1期《求是》杂志发表中共中央总书记、国家主席、中央军委主席习近平的重要文章《学习好贯彻好党的二十届四中全会精神》。
      </b>
    </p>
​
    <p>
      党的二十届四中全会审议通过“十五五”规划建议,擘画了未来五年的宏伟蓝图。
    </p>
​
    <p>
      在贯彻落实全会精神过程中,习近平总书记指出要着重把握以下几点:第一,坚定不移推动高质量发展;第二,加快构建新发展格局;第三,推动全体人民共同富裕迈出坚实步伐;第四,更好统筹发展和安全;第五,统筹推进各领域工作。
    </p>
​
    <p>
      2026年是“十五五”开局之年。习近平主席在二〇二六年新年贺词中指出:“我们要锚定目标任务,坚定信心、乘势而上,扎实推动高质量发展,进一步全面深化改革开放,推进全体人民共同富裕,续写中国奇迹新篇章。”
    </p>
​
      <img src="img/1.png">
​
​
</body>
</html>

整体布局处理

我们要让整个网页居中显示、左右等距。让AI帮我们生成即可。

#time {
  color: #b2b2b2;
}
​
/* 去除超链接的下划线 */
a {
  text-decoration: none;
}
​
​
p {
  /* 为所有段落标签设置行高 */
  line-height: 2;
​
  /* 设置首行缩进2个字符 */
  text-indent: 2em;
}
​
.container {
  width: 70%;
  margin: 0 auto;
  box-sizing: border-box;
}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</title>
  <link rel="stylesheet" href="css/news.css">
</head>
<body>
  <div class="container">
​
    <h1>壹视界·微视频丨如何贯彻落实四中全会精神?总书记这样划重点</h1>
    <a href="http://www.cctv.com">央视网</a>
    
    <span id="time">2026年01月19日 08:49</span>
    <br><br>
​
    <video src="video/news.mp4" controls width="100%"></video>
    <br><br>
​
    <p>
      <b>
        2026年第1期《求是》杂志发表中共中央总书记、国家主席、中央军委主席习近平的重要文章《学习好贯彻好党的二十届四中全会精神》。
      </b>
    </p>
​
    <p>
      党的二十届四中全会审议通过"十五五"规划建议,擘画了未来五年的宏伟蓝图。
    </p>
​
    <p>
      在贯彻落实全会精神过程中,习近平总书记指出要着重把握以下几点:第一,坚定不移推动高质量发展;第二,加快构建新发展格局;第三,推动全体人民共同富裕迈出坚实步伐;第四,更好统筹发展和安全;第五,统筹推进各领域工作。
    </p>
​
    <p>
      2026年是"十五五"开局之年。习近平主席在二〇二六年新年贺词中指出:"我们要锚定目标任务,坚定信心、乘势而上,扎实推动高质量发展,进一步全面深化改革开放,推进全体人民共同富裕,续写中国奇迹新篇章。"
    </p>
​
    <img src="img/1.png" width="100%">
    <!-- 因为body变成了div,而我们希望div占70%而图片与视频与div同宽,所以这里图片和视频也设置了width:100% -->
  </div>
</body>
</html>
盒子模型

盒子:页面中所有的元素(标签),都可以看做是一个盒子,由盒子将页面中的元素包含在一个矩形区域内,通过盒子的视角更方便地进行页面布局。

盒子模型组成:内容区域(content)、内边距区域(padding)、边框区域(border)、外边距区域(margin)

布局标签:使用div和span这两个没有语义的布局标签。

div标签特点:一行只显示一个(独占一行)、宽度默认是父元素的宽度,高度默认由内容撑开、可以设置宽高。

span标签特点:一行可以显示多个、宽度和高度默认由内容撑开、不可以设置宽高。

常见的CSS样式:

div {
    width: 200px;
    height: 100px;
    background-color: #05a5d2;
    padding: 20px 20px 20px 20px;
    border: 20px solid #6bd5d7;
    margin: 30px 30px 30px 30px;
}

width和height默认情况下设置的是content区域的宽度和高度。padding和margin的四个数值分别代表上、右、下、左,即顺时针。也可以设置为两个值,上下是第一个值,左右是第二个值。也可以设置为一个值,表示上下左右的内边距/外边距相同。border的三个值分别表示距离、实线还是虚线、边框颜色。auto表示居中。具体可以去MDN Reference查看。

可以通过inspect(检查)来查看:

b43011426a0d5751263d856ca9e21c88.png

表单

表单:在网页中主要负责数据采集功能,如注册、登录等数据采集。标签为<form>

表单项:不同类型的input元素、下拉列表、文本域等。

<input>:定义表单项,通过type属性控制输入形式(text/password/...)

<select>:定义下拉列表,<option>定义列表项

<textarea>:定义文本域

type取值描述
text默认值,定义单行的输入字段
password定义密码字段
radio定义单选按钮(name属性要一致才能互斥)
checkbox定义复选框
file定义文件上传按钮
date/time/datetime-local定义日期/时间/日期时间
hidden定义隐藏域(该表单项看不到,但会提交到服务器端)
submit/reset/button定义提交/重置/可点击按钮

属性

action:规定当提交表单时向何处发送表单数据,URL

method:规定用于发送表单数据的方式,get\post(get为默认)

注意

1.表单项要想采集数据,必须设置name属性

2.对于get,表单数据会出现在URL后面,形式为:/URL?表单数据1&表单数据2&...

特点:

(i).如果表单中包含了隐私数据,get方式并不安全

(ii).在浏览器中get请求的大小是有限制的,不适合提交大数据量的表单

3.对于post,表单数据会在消息体/请求体中提交到服务器。在网页的开发者工具的“载荷”处可以看到

特点:

(i).安全

(ii).请求大小没有限制

4.label标签:将选项进行整体包裹,点击选项的文字也能选中。

练习:智能学习辅助系统

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>智能学习辅助系统</title>
    <style>
        /* 顶部导航栏样式 */
        .top-nav {
            background-color: #333; /* 深灰色背景 */
            padding: 15px;
            overflow: hidden;
        }
        
        .nav-title {
            float: left; /* 标题居左 */
            font-size: 24px;
            font-weight: bold; /* 加粗展示 */
            margin: 0;
            color:#f0f0f0;
        }
        
        .nav-logout {
            float: right; /* 退出登录居右 */
            font-size: 16px;
            margin-top: 8px;
        }
        
        .nav-logout a {
            color: white;
            text-decoration: none;
        }
        
        .nav-logout a:hover {
            text-decoration: underline;
        }
​
        /* 搜索表单区域样式 */
        .search-form {
            padding: 20px;
            background-color: #f8f9fa;
            border: 1px solid #e9ecef;
            margin: 20px;
            border-radius: 5px;
        }
        
        .search-form form {
            display: flex;
            align-items: center;
            gap: 15px;
            flex-wrap: wrap;
        }
        
        .form-group {
            display: flex;
            align-items: center;
            gap: 5px;
        }
        
        .form-group label {
            font-weight: 500;
            min-width: 60px;
        }
        
        .form-group input,
        .form-group select {
            padding: 8px 12px;
            border: 1px solid #ced4da;
            border-radius: 4px;
            font-size: 14px;
        }
        
        .form-group input {
            width: 150px;
        }
        
        .form-group select {
            width: 120px;
        }
        
        .form-buttons {
            margin-left: auto;
            display: flex;
            gap: 10px;
        }
        
        .btn {
            padding: 8px 20px;
            border: none;
            border-radius: 4px;
            font-size: 14px;
            cursor: pointer;
            font-weight: 500;
        }
        
        .btn-primary {
            background-color: #007bff;
            color: white;
        }
        
        .btn-primary:hover {
            background-color: #0056b3;
        }
        
        .btn-secondary {
            background-color: #6c757d;
            color: white;
        }
        
        .btn-secondary:hover {
            background-color: #545b62;
        }
​
        /* 表格展示区样式 */
        .table-container {
            margin: 20px;
            border-radius: 5px;
            overflow: hidden;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        }
        
        .data-table {
            width: 100%;
            border-collapse: collapse;
            background-color: white;
        }
        
        .data-table th,
        .data-table td {
            padding: 12px 15px;
            text-align: center;
            border-bottom: 1px solid #e9ecef;
        }
        
        .data-table th {
            background-color: #f8f9fa;
            font-weight: 600;
            color: #495057;
            font-size: 14px;
        }
        
        .data-table tbody tr {
            transition: background-color 0.2s;
        }
        
        .data-table tbody tr:hover {
            background-color: #f8f9fa;
        }
        
        .btn-edit {
            background-color: #28a745;
            color: white;
            padding: 5px 12px;
            margin-right: 5px;
        }
        
        .btn-edit:hover {
            background-color: #218838;
        }
        
        .btn-delete {
            background-color: #dc3545;
            color: white;
            padding: 5px 12px;
        }
        
        .btn-delete:hover {
            background-color: #c82333;
        }
    </style>
</head>
<body>
    <!-- 顶部导航栏 -->
    <div class="top-nav">
        <h1 class="nav-title">智能学习辅助系统</h1>
        <div class="nav-logout">
            <a href="#">退出登录</a>
        </div>
    </div>
​
    <!-- 搜索表单区域 -->
    <div class="search-form">
        <form action="#" method="get">
            <div class="form-group">
                <label for="name">姓名:</label>
                <input type="text" id="name" name="name" placeholder="请输入姓名">
            </div>
            
            <div class="form-group">
                <label for="gender">性别:</label>
                <select id="gender" name="gender">
                    <option value="">请选择</option>
                    <option value="男"></option>
                    <option value="女"></option>
                </select>
            </div>
            
            <div class="form-group">
                <label for="position">职位:</label>
                <select id="position" name="position">
                    <option value="">请选择</option>
                    <option value="班主任">班主任</option>
                    <option value="讲师">讲师</option>
                    <option value="学工主管">学工主管</option>
                    <option value="教研主管">教研主管</option>
                    <option value="咨询师">咨询师</option>
                </select>
            </div>
            
            <div class="form-buttons">
                <button type="submit" class="btn btn-primary">查询</button>
                <button type="reset" class="btn btn-secondary">清空</button>
            </div>
        </form>
    </div>
​
    <!-- 表格展示区 -->
    <div class="table-container">
        <table class="data-table">
            <thead> 
              <!-- thead用来定义表头 -->
                <tr>
                    <!-- tr用来定义表格中的行 -->
                    <th>姓名</th>
                    <th>性别</th>
                    <th>职位</th>
                    <th>入职日期</th>
                    <th>最后操作时间</th>
                    <th>操作</th>
                    <!-- th用来定义表格中的单元格 -->
                </tr>
            </thead>
            <tbody>
                <!-- 测试数据:基于《进击的巨人》角色 -->
                <tr>
                    <td>艾伦</td>
                    <td></td>
                    <td>讲师</td>
                    <td>2023-01-15</td>
                    <td>2023-12-10 14:30:25</td>
                    <td>
                        <button class="btn btn-edit">编辑</button>
                        <button class="btn btn-delete">删除</button>
                    </td>
                </tr>
                <tr>
                    <td>三笠</td>
                    <td></td>
                    <td>学工主管</td>
                    <td>2023-02-20</td>
                    <td>2023-12-09 09:15:42</td>
                    <td>
                        <button class="btn btn-edit">编辑</button>
                        <button class="btn btn-delete">删除</button>
                    </td>
                </tr>
                <tr>
                    <td>阿尔敏</td>
                    <td></td>
                    <td>教研主管</td>
                    <td>2023-03-05</td>
                    <td>2023-12-08 16:45:18</td>
                    <td>
                        <button class="btn btn-edit">编辑</button>
                        <button class="btn btn-delete">删除</button>
                    </td>
                </tr>
                <tr>
                    <td>利威尔</td>
                    <td></td>
                    <td>班主任</td>
                    <td>2023-01-10</td>
                    <td>2023-12-10 11:20:30</td>
                    <td>
                        <button class="btn btn-edit">编辑</button>
                        <button class="btn btn-delete">删除</button>
                    </td>
                </tr>
                <tr>
                    <td>韩吉</td>
                    <td></td>
                    <td>咨询师</td>
                    <td>2023-02-15</td>
                    <td>2023-12-07 15:50:45</td>
                    <td>
                        <button class="btn btn-edit">编辑</button>
                        <button class="btn btn-delete">删除</button>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
</html>

效果如图:

a73615c3306423d7897c3330313898ff.png