使用 Flexbox 创建可访问的在线表单布局

阅读时长 9 分钟读完

前言

在今天的互联网世界中,网站和应用程序的表单是最重要的部分之一。表单用于用户和网站或应用程序之间进行交互,其中包含必要的输入字段和选项。然而,即使在现代且漂亮的设计方案中,正确地排版表单是一个具有挑战性的任务。本文将介绍如何使用 Flexbox 来创建可访问的在线表单布局,从设计到代码实现,详细阐述每个步骤,使读者能够在其项目中使用这些技术。

设计

在开始编写代码之前,首先需要将表单的设计转化为可用的代码。此步骤是关键,因为它能够驱动整个设计过程。在设计阶段,您需要考虑以下问题:

  • 表单布局应该跟随哪种设计风格,如何使表单更易于使用和明确?
  • 为遵循 Web Content Accessibility Guidelines(W3C),应该如何为所有用户提供良好的访问性和可用性?

在设计中,我们要注重表单的易用性,包括易于定位、选择、填写,使不同功能的内容对用户来说清晰易懂。同时,在选择颜色,字体和布局方面应考虑用户操作的便利性所有用户都能够使用您的表单。

创建项目文件

在我们开始编写 HTML 和 CSS 代码之前,需要建立项目文件夹,并为表单创建单独的 HTML 文件。这有助于更好地组织代码。

为表单创建一个 HTML 文件:

-- -------------------- ---- -------
--------- -----
----- ----------
------
  ----- ----------------
  ----------------- ---- ------ ---- ---------------
  ----- ---------------- -----------------
-------
------
  --------
    -------------- ---- ------ ---- ------------
    --------- ---- --- --- --------- ---- --- ----- -----------
  ---------
  ------
    ---- -----------------
      ------ ------------------------
      ------ ----------- --------- ----------- ---------
    ------
    ---- --- ---- ---- ---- ---- ---
    ------- -----------------------------
  -------
-------
-------

请注意,我们将 CSS 文件添加到 HTML 文件。

编写 CSS 代码

在本节中,我们将使用 Flexbox 创建在线表单布局。Flexbox 是 CSS3 中的一个模块,在布局方面提供了强大的工具。它具有很多与传统页面布局不同的属性和值,其中最重要的是 display: flex

首先,我们需要将表单元素添加到屏幕中,这些元素需要一个固定的宽度、左侧的标签和右侧的输入字段。在传统布局中,我们可以使用 floatwidthmargin 来实现。使用 Flexbox 的情况下,我们仅需要将 display: flex 添加到父级上,然后使用 flex-growflex-shrink 将子元素的大小自动调整为容器元素的大小。

以下是向表单添加基本字样式的样例代码:

-- -------------------- ---- -------
-- ------ ---- ----- ------- --- ---- ------ --
-------------------
-------- -
  ---------- -----
  ------- -----
  -------------- --- ----- -----
  -------- -----
  ------ -----
  -------------- -----
-

-- --- ---- ---- ----- ------ ---- --

-- ------ ---- ----- ------- --- ------ --
----- -
  ---------- -----
  -------- ------
  -------------- -----
-

现在,我们可以创建带有标签和输入字段的表单布局了。在 Flexbox 中,我们使用 flex-direction 来定义容器中的子元素排列方向,justify-content 用于定位子元素,而 align-items 则用于定位子元素的纵向位置(如居中)。 必须考虑访问ibilidade,因此设置 aria-labelledby 属性指向标签的 ID,如果标签很长,可以使用 title 属性。

以下是一个示例实现:

-- -------------------- ---- -------
-- ------ --- ---- ------ --
---- -
  -------- -----
  --------------- -------
  ---------------- -------
  ------------ -------
  -------------- -----
-

-- ----- --- ----------- ----- --
--------- -
  -------- -----
  ---------- --- -----
  ------------ -------
  ---------------- -------
  ------ -----
  ------- ---- --
-

-- ---- ---- --
--------- ----- -
  -------- -----
  ----------- -------
  ------------ -------
  ---------------- ---------
  ---------- ------ -- ------- ----- -- ----- ---- --
  -------------- -----
-

-- ----- ---- --
--------- ------
--------- -------
--------- -------- -
  -------- -----
  ---------- --
  ------------ --
  ----------- -------
  ------------ ---------- ------ -----------
  ------- -----
  ------- -----
  ------------- -----
  ---------- -----
-

结论

在本文中,我们了解了如何使用 Flexbox 创建可访问的在线表单布局。我们可以使用 CSS 和 HTML 来创建现代的,易于使用和通用的表单。请记住要遵循最佳实践,包括为表格添加描述性标题、使用可访问的标签和输入字段等,以便每个人都可以使用您的表单。

以下是本文中使用的 HTML 和 CSS 的完整代码:

index.html

-- -------------------- ---- -------
--------- -----
----- ----------
------
  ----- ----------------
  ----------------- ---- ------ ---- ---------------
  ----- ---------------- -----------------
-------
------
  --------
    -------------- ---- ------ ---- ------------
    --------- ---- --- --- --------- ---- --- ----- -----------
  ---------
  ------
    ---- -----------------
      ------ ------------------------
      ------ ----------- --------- ----------- -------- -----------------------------
    ------
    ---- -----------------
      ------ --------------------------
      ------ ------------ ---------- ------------ -------- ------------------------------
    ------
    ---- -----------------
      ------ --------------------------------
      ------ --------------- ------------- --------------- -------- ---------------------------------
    ------
    ---- -----------------
      ------ ------------------------------
      --------- ------------ -------------- -------- -------------------------------------------
    ------
    ------- -----------------------------
  -------
-------
-------

style.css

-- -------------------- ---- -------
-- ------ ---- ----- ------- --- ---- ------ --
-------------------
--------------------
-----------------------
-------- -
  ---------- -----
  ------- -----
  -------------- --- ----- -----
  -------- -----
  ------ -----
  -------------- -----
-

-- ------ ---- ----- ------- --- ------ --
----- -
  ---------- -----
  -------- ------
  -------------- -----
-

-- ------ --- ---- ------ --
---- -
  -------- -----
  --------------- -------
  ---------------- -------
  ------------ -------
  -------------- -----
-

-- ----- --- ----------- ----- --
--------- -
  -------- -----
  ---------- --- -----
  ------------ -------
  ---------------- -------
  ------ -----
  ------- ---- --
-

--------- ----- -
  -------- -----
  ----------- -------
  ------------ -------
  ---------------- ---------
  ---------- ------ -- ------- ----- -- ----- ---- --
  -------------- -----
-

--------- ------
--------- -------
--------- -------- -
  -------- -----
  ---------- --
  ------------ --
  ----------- -------
  ------------ ---------- ------ -----------
  ------- -----
  ------- -----
  ------------- -----
  ---------- -----
-

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6747cc5c5883fc5ebfe31480

纠错
反馈