16.4 对表单元素进行组织

如果表单上有很多信息需要填写,可以使用fieldset元素将相关的元素组合在一起,使表单更容易理解,如图16.4.1所示。表单越容易让访问者理解,访问者就越有可能正确地填写表单。可以使用legend元素为每个fieldset提供一个标题(caption),用于描述每个组的目的,如图16.4.2所示。

对表单元素进行组织的步骤

  • form开始标记的下面、任何希望包含在第一个组的表单元素的上面,输入

  • 如果需要,输入

  • 如果需要,输入align="direction",这里的direction可以是leftright

  • 输入>

  • 输入标签的文本。

  • 输入以完成标签。

  • 创建属于第一组的表单元素。更多信息参见从16.5节开始讲解的知识。

  • 输入结束第一组表单元素。

  • 为每一组表单元素重复第1步至第8步。

提示 CSS对legend元素的定位能力很有限,这是在大多数浏览器中对该元素设置样式都受到限制的原因(如图16.4.3所示)。推荐使用具有恰当样式的ph1h6元素重新创建标题的效果,如图16.4.4、图16.4.5和图16.4.6所示。

 

提示 使用fieldset元素对表单进行组织是可选的。

  1. <form method="post" action="showform.php">
  2. <fieldset>
  3. <legend>Account</legend> </fieldset>
  4. <fieldset>
  5. <legend class="address">Address </legend>
  6. </fieldset>
  7. <fieldset>
  8. <legend class="publicprofile">
  9. Public Profile</legend>
  10. </fieldset>

16.4.1 我为fieldset元素添加了样式,并为每个legend元素添加了class属性,以帮助对每组表单元素应用样式

  1. fieldset {
  2. background-color: #f1f1f1;
  3. border: none;
  4. border-radius: 2px;
  5. margin-bottom: 12px;
  6. overflow: hidden;
  7. padding: 0 10px;
  8. }
  9.  
  10. legend {
  11. background-color: #dedede;
  12. border-bottom: 1px solid #d4d4d4;
  13. border-top: 1px solid #d4d4d4;
  14. border-radius: 5px;
  15. box-shadow: 3px 3px 3px #ccc;
  16. color: #fff;
  17. font-size: 1.1em;
  18. margin: 12px;
  19. padding: 0.3em 1em;
  20. text-shadow: #9FBEB9 1px 1px 1px;
  21. text-transform: uppercase;
  22. }
  23.  
  24. legend.account { background-color: #0B5586; }
  25. legend.address { background-color: #4494C9; }
  26. legend.public-profile { background-color: #377D87; }
  27. legend.emails { background-color: #717F88; }

图16.4.2 我为所有的fieldset元素添加了外边距、背景颜色和内边距,并为每个标签添加了特殊的背景颜色

16.4 对表单元素进行组织 - 图1

图16.4.3 浏览器限制了对legend元素添加样式的能力。如果想更好地控制标签的格式,可以使用带类名的标题或p元素

  1. <form method="post" action="showform.php">
  2. <fieldset>
  3. <h2 class="account">Account</h2>

图16.4.4 由于大多数浏览器对legend元素的样式控制能力不足,因此推荐使用常规的标题元素

  1. h2 {
  2. background-color: #dedede;
  3. border-bottom: 1px solid #d4d4d4;
  4. border-top: 1px solid #d4d4d4;
  5. border-radius: 5px;
  6. box-shadow: 3px 3px 3px #ccc;
  7. color: #fff;
  8. font-size: 1.1em;
  9. margin: 12px;
  10. padding: 0.3em 1em;
  11. text-shadow: #9FBEB9 1px 1px 1px;
  12. text-transform: uppercase;
  13. }

图16.4.5 这里对legend h2添加了背景、边框以及其他的一些稍后即将了解的CSS3特性

16.4 对表单元素进行组织 - 图2

图16.4.6 现在,标签拥有了更多的样式设置选项