自定义表单的外观?
此功能可通过提前访问计划使用。 要请求访问,请将包含您的GitHub组织名称和存储库名称的电子邮件(从您的官方地址发送到aem-forms-ea@adobe.com)。 例如,如果存储库URL为https://github.com/adobe/abc,则组织名称为adobe,存储库名称为abc。
表单对于网站上的用户交互至关重要,用户可以在其中输入数据。您可以使用级联样式表 (CSS) 来设置表单字段的样式,以增强表单的视觉呈现效果,并改善用户体验。
自适应表单块可为所有表单字段生成一致的结构。一致的结构使得开发 CSS 选择器更容易根据字段类型和字段名称来选择和设置表单字段的样式。
本文档概述了各种表单组件的 HTML 结构,有助于您了解如何为各种表单字段创建 CSS 选择器,以便设置自适应表单块的表单字段的样式。
在文章的最后:
- 您可以了解到自适应表单块中包含的默认 CSS 文件的结构。
- 您可以了解到 Adaptive Forms Block 提供的表单组件中的 HTML 结构,其中包括常规组件和特定组件,例如下拉列表、单选按钮组和复选框组。
- 您将会学习到如何使用 CSS 选择器根据字段类型和字段名称设置表单字段的样式,从而根据需求实现一致或独特的样式。
了解表单字段类型
在深入研究样式设置之前,让我们回顾一下 Adaptive Forms Block 支持的常见表单字段类型:
- 输入字段:包括文本输入、电子邮件输入、密码输入等。
- 复选框组:用于选择多个选项。
- 单选按钮组:用于从一个组中仅选择一个选项。
- 下拉菜单:也称为选择框,用于从列表中选择一个选项。
- 面板/容器:用于将相关的表单元素组合在一起。
基本样式设置准则
在设置特定表单字段的样式之前,了解至关重要:
- :CSS 选择器可让您针对特定的 HTML 元素进行样式设置。您可以使用元素选择器、类选择器或 ID 选择器。
- :CSS 属性定义元素的外观。用于设置表单字段的样式的常见属性包括颜色、背景颜色、边框、间距、边距等。
- :CSS 框模型将 HTML 元素的结构描述为由间距、边框和边距包围的内容区域。
- 贵濒别虫产辞虫/网格:颁厂厂 和是用于创建响应式和灵活设计的强大工具。
为 Adaptive Forms Block 设置表单样式
Adaptive Forms Block 提供了标准化 HTML 结构,简化了选择表单组件并设计其样式的过程:
-
更新默认样式:您可以通过编辑
/blocks/form/form.css file
来修改表单的默认样式。此文件为表单提供全面的样式,并支持多步骤向导表单。它强调使用自定义颁厂厂变量来轻松进行自定义、维护和跨表单的统一样式。 -
Forms 的 CSS 样式:为确保正确应用样式,请在
main .form form
选择器中包含表单特定的 CSS。这可确保您的样式仅针对主要内容区域内的表单元素,从而避免与网站的其他部分发生冲突。
示例:code language-css main .form form input { /* Add styles specific to input fields inside the form */ } main .form form button { /* Add styles specific to buttons inside the form */ } main .form form label { /* Add styles specific to labels inside the form */ }
组件结构
Adaptive Forms Block 为各种表单元素提供一致的 HTML 结构,确保更轻松地设置样式和管理。您可以使用 CSS 来操作组件以设置样式。
常规组件(下拉菜单、单选按钮组和复选框组除外):
所有表单字段(下拉列表、单选按钮组和复选框组除外)都具有以下 HTML 结构:
code language-html |
---|
|
- 类:div 元素包含几个用于定位特定元素和样式的类。您需要
{Type}-wrapper
或field-{Name}
类来开发 CSS 选择器以设置表单字段的样式: - {Type}:通过字段类型标识组件。例如,文本 (text-wrapper)、数字 (number-wrapper)、日期 (date-wrapper)。
- 调狈补尘别皑:通过名称标识组件。字段名称只能包含字母数字字符,名称中的多个连续破折号将替换为单个破折号
(-)
,并且字段名称中的开头和结尾破折号将被删除。例如,名字 (field-first-name field-wrapper)。 - 调贵颈别濒诲滨诲皑:它是自动生成的字段的唯一标识符。
- 调搁别辩耻颈谤别诲皑:它是一个布尔值,指示该字段是否为必填字段。
- 标签:
label
元素为字段提供描述性文本,并使用for
属性将它与输入元素关联。 - 输入:
input
元素定义要输入的数据类型。例如:文本、数字、电子邮件。 - 描述(可选):带类
field-description
的div
为用户提供附加信息或说明。
HTML 结构示例
code language-html |
---|
|
code language-css |
---|
|
.{Type}-wrapper
:根据字段类型锁定外部div
元素。例如,.text-wrapper
会锁定所有文本字段。.field-{Name}
:根据特定字段名称进一步选择元素。例如:.field-first-name
锁定“名字”文本字段。虽然此选择器可用于定位具有 field-{Name} 类的元素,但务必谨慎。在这种特定情况下,它对于设置输入字段的样式不是很有帮助,因为它不仅针对输入本身,还针对标签和描述元素。建议使用更具体的选择器,例如用于定位文本输入字段(.text-wrapper input)的选择器。
常规组件的示例 CSS 选择器
code language-css |
---|
|
下拉菜单组件
对于下拉菜单,使用 select
元素而不是 input
元素:
code language-html |
---|
|
示例 HTML 结构
code language-html |
---|
|
以下 CSS 列出了下拉组件的一些 CSS 选择器示例。
code language-css |
---|
|
- 锁定包装器:第一个选择器 (
.drop-down-wrapper
) 锁定外部包装器元素,确保样式应用于整个下拉组件。 - Flexbox 布局:Flexbox 垂直排列标签、下拉菜单和描述以实现干净布局。
- 标签样式:标签以更粗的字体和微小边距脱颖而出。
- 下拉样式:
select
元素接收边框、间距和圆角以获得精美外观。 - 背景颜色:设置一致的背景颜色以实现视觉和谐。
- 箭头自定义:可选样式隐藏默认下拉箭头,并使用 Unicode 字符和定位创建自定义箭头。
单选按钮组
与下拉组件类似,单选按钮组也拥有自己的 HTML 结构和 CSS 结构:
code language-html |
---|
|
示例 HTML 结构
code language-html |
---|
|
- 定位字段集
code language-css |
---|
|
此选择器针对具有 radio-group-wrapper 类的任何字段集。这对于将通用样式应用于整个单选按钮组非常有用。
- 定位单选按钮标签
code language-css |
---|
|
- 根据名称锁定特定字段集中的所有单选按钮标签
code language-css |
---|
|
复选框组
code language-html |
---|
|
示例 HTML 结构
code language-html |
---|
|
- 定位外部包装器:这些选择器定位单选按钮组和复选框组的最外层容器,允许您将常规样式应用于整个组结构。这对于设置间距、对齐方式或其他与布局相关的属性非常有用。
code language-css |
---|
|
- 定位组标签:此选择器定位单选按钮组和复选框组包装器中的
.field-label
元素。这使您能够专门为这些组设置标签样式,从而使它们更加突出。
code language-css |
---|
|
- 定位单个输入和标签:这些选择器提供对单个单选按钮、复选框及其关联标签的更精细控制。您可以使用它们来调整大小、间距或应用更独特的视觉样式。
code language-css |
---|
|
- 自定义单选按钮和复选框的外观:此技术隐藏默认输入并使用
:before
和:after
伪元素来创建根据“选中”状态更改外观的自定义视觉效果。
code language-css |
---|
|
面板/容器组件
code language-html |
---|
|
示例 HTML 结构
code language-html |
---|
|
-
Fieldset 元素充当面板容器,具有 panel-wrapper 类和基于面板名称 (field-login) 进行样式设置的附加类。
-
图例元素 (
) 用作面板标题,其中包含文本“登录信息”和类字段标签。data-visible="false" 属性可以与 JavaScript 一起使用来控制标题的可见性。
-
在字段集中,多个。{Type}-wrapper 元素(在本例中为 .text-wrapper 和 .password-wrapper)代表面板中的各个表单字段。
-
每个包装器都包含一个标签、输入字段和描述,与前面的示例类似。
- 定位面板:
code language-css |
---|
|
.panel-wrapper
选择器使用 panel-wrapper 类来设置所有元素的样式,为所有面板创建一致的外观。
- 定位面板标题:
code language-css |
---|
|
.panel-wrapper legend
选择器设置面板内图例元素的样式,使标题在视觉上脱颖而出。
- 定位面板中的各个字段:
code language-css |
---|
|
.panel-wrapper .{Type}-wrapper
选择器针对面板中具有.{Type}-wrapper
类的所有包装器,允许您设置表单字段之间的间距样式。
- 定位特定领域(可选):
code language-css |
---|
|
- 这些可选选择器允许您在面板中锁定特定的字段包装器以实现独特的样式,例如突出显示用户名字段。
可重复面板
code language-html |
---|
|
示例 HTML 结构
code language-html |
---|
|
每个面板具有与单个面板示例相同的结构,并具有附加属性:
-
data-repeatable="true":此属性指示可以使用 JavaScript 或框架动态重复面板。
-
唯一 ID 和名称:面板中的每个元素都有一个唯一 ID(例如 name-1、email-1)和基于面板索引的名称属性(例如 name="contacts[0 ].name”)。这样可以在提交多个面板时进行正确的数据收集。
- 定位所有可重复面板:
code language-css |
---|
|
选择器对所有可重复的面板进行样式设置,确保一致的外观和感觉。
- 定位面板中的各个字段:
code language-css |
---|
|
此选择器对可重复面板中的所有字段包装器进行样式设置,从而保持字段之间的间距一致。
- 定位特定领域(在面板内):
code language-css |
---|
|
文件附件
code language-html |
---|
|
示例 HTML 结构
code language-html |
---|
|
- 类属性使用为文件附件提供的名称(肠濒补颈尘冲蹿辞谤尘)。
- 输入元素的 id 和名称属性与文件附件名称 (claim_form) 匹配。
- 文件列表部分最初是空的。当文件上传时,它会用 JavaScript 动态填充。
- 定位整个文件附件组件:
code language-css |
---|
|
该选择器设置整个文件附件组件的样式,包括图例、拖动区域、输入字段和列表。
- 定位特定元素:
code language-css |
---|
|
这些选择器允许您单独设置文件附件组件各个部分的样式。您可以调整样式以符合您的设计偏好。
设置组件的样式
您还可以根据表单字段的特定类型 ({Type}-wrapper
) 或单个名称 (field-{Name}
) 来设置其样式。这允许更精细地控制和自定义表单外观。
基于字段类型的样式设置
您可以使用 CSS 选择器来锁定特定字段类型并一致地应用样式。
code language-html |
---|
|
示例 HTML 结构
code language-html |
---|
|
-
每个字段都包含在具有多个类的
div
元素中:{Type}-wrapper
:标识字段的类型。例如,form-text-wrapper
、form-number-wrapper
、form-email-wrapper
。field-{Name}
:通过名称标识字段。例如,form-name
、form-age
、form-email
。field-wrapper
:所有字段包装器的通用类。
-
data-required
属性指示该字段是必填字段还是可选字段。 -
每个字段都有相应的标签、输入元素和潜在的附加元素(例如占位符和描述)。
code language-css |
---|
|
基于字段名称的样式设置
您还可以按名称锁定各个字段以应用唯一样式。
code language-html |
---|
|
示例 HTML 结构
code language-html |
---|
|
code language-css |
---|
|
此 CSS 针对位于具有类 field-otp
的元素内的所有输入元素。表单的 HTML 结构遵循 Adaptive Forms Block 的惯例,这意味着有一个标有“form-otp”类的容器包含名为“otp”的字段。
另请参阅
{{universal-editor-see-also}}