---
id: 587d78af367417b2b2512b03
title: 制作一个调查表格
challengeType: 3
forumTopicId: 301145
dashedName: build-a-survey-form
---

# --description--

**目标：** 在 [CodePen.io](https://codepen.io) 上创建一个与这个功能类似的 app：<https://codepen.io/freeCodeCamp/full/VPaoNP>。

在满足以下 [需求](https://en.wikipedia.org/wiki/User_story) 并能通过所有测试的前提下， 你可以根据自己的喜好来美化你的 app。

你可以使用 HTML、JavaScript 以及 CSS 来完成项目。 由于目前你只学到了 CSS 课程，所以我们建议你只使用 CSS 来完成这个项目，同时巩固一下你之前所学的内容。 你也可以使用 Bootstrap 或者 SASS。 我们不推荐你在这个项目中使用其他技术（比如 jQuery、React、Angular 或 Vue）。 在后续的其他项目中，你将有机会使用像是 React 等其他技术栈。 我们会接受并尝试修复你在使用推荐技术栈创建项目时报告的问题。 祝你编码愉快！

**需求 1：** 此 app 中应存在一个 `id="title"` 的大小为 H1 的标题。

**需求 2：** 此 app 中应存在一段 `id="description"` 的大小为 P 的短小的描述。

**需求 3：** 此 app 中应存在一个 `id="survey-form"` 的 `form` 元素。

**需求 4：** 在表单元素内，应存在 `id="name"` 的输入框（必填项），以便用户输入姓名。

**需求 5：** 在表单元素内，应存在 `id="email"` 的输入框（必填项），以便用户输入邮箱。

**需求 6：** 如果用户输入了格式不正确的邮箱，则应出现来自 HTML5 表单数据校验的错误信息。

**需求 7：** 在表单内，用户应可以在 `id="number"` 的输入框中输入数字。

**需求 8：** 如果用户在数字输入框内输入非数字内容，则应出现来自 HTML5 表单数据校验的错误信息。

**需求 9：** 如果用户输入的数字超出了使用 `min` 和 `max` 属性定义的范围，则应出现来自 HTML5 表单数据校验的错误信息。

**需求 10：** 表单中的姓名、邮箱和数字输入框需有对应的包含描述输入框用途的标签。这些标签的 id 应分别为 `id="name-label"`、`id="email-label"` 和 `id="number-label"`。

**需求 11：** 表单中的姓名、邮箱和数字输入框需有对应的描述文字作为占位符。

**需求 12：** 在表单元素内，应存在一个 `id="dropdown"` 的下拉列表，用户可以从中选取一个选项。

**需求 13：** 在表单元素内，应至少存在一组单选按钮，用户可以从中选取一个选项。 每组应使用 `name` 属性进行分组。

**需求 14：** 在表单元素内，应存在几个复选框，且每个复选框都应有 `value` 属性。

**需求 15：** 在表单元素的最后，应存在一个 `textarea` 元素，以便用户输入额外的批注。

**需求 16：** 在表单元素内，应存在一个 `id="submit"` 的按钮，以便用户提交表单。

你可以<a href='https://codepen.io/pen?template=MJjpwO' target='_blank' rel='nofollow'>使用这个 CodePen 模版</a>创建你自己的项目，点击 `Save` 即可创建你的新项目。 也可以使用此 CDN 链接在任何你喜欢的环境中运行测试：`https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`。

完成项目并通过所有测试后，请输入你的项目在 CodePen 上的链接并提交。

# --solutions--

```html
// solution required
```
