Bootstrap 表单

Bootstrap 的默认设置

使用 Bootstrap 时表单控件都会自动带有一些全局的样式:

所有文本 <input>, <textarea>, 和 <select> 元素都会带有 .form-control 样式类而使得其宽度为 100%。


Bootstrap 表单布局

Bootstrap 提供了 3 种表单布局:

  • 垂直表单 (默认)
  • 水平表单
  • 内联表单

所有 3 种表单布局的标准规则:

  • <div class="form-group"> 中包裹标签和表单控件(需要最佳空间)
  • 对所有文本 <input>, <textarea>, 和 <select> 元素添加 .form-control 样式。

Bootstrap 垂直表单 (默认)

下面的实例创建了一个垂直表单,其中包含两个输入框、一个复选框和一个提交按钮:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Bootstrap 实例</title>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <link rel="stylesheet" href="https://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">
  8. <script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
  9. <script src="https://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
  10. </head>
  11. <body>
  12. <div class="container">
  13. <h2>垂直表单 (默认)</h2>
  14. <form action="/action_page.php">
  15. <div class="form-group">
  16. <label for="email">邮箱:</label>
  17. <input type="text" class="form-control" id="email" placeholder="输入邮箱地址">
  18. </div>
  19. <div class="form-group">
  20. <label for="pwd">密码:</label>
  21. <input type="text" class="form-control" id="pwd" placeholder="输入密码">
  22. </div>
  23. <div class="checkbox">
  24. <label><input type="checkbox"> 记住我</label>
  25. </div>
  26. <button type="button" class="btn btn-default">提交</button>
  27. </form>
  28. </div>
  29. </body>
  30. </html>

Bootstrap 内联表单

在内联表单中,所有元素都是内联的、左对齐的,标签是并排的。

注意:这只适用于至少 768px 宽度的浏览器!

内联表单的附加规则:

  • .form-inline 类添加到 <form> 元素

下面的实例创建了一个包含两个输入框、一个复选框和一个提交按钮的内联表单:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Bootstrap 实例</title>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <link rel="stylesheet" href="https://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">
  8. <script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
  9. <script src="https://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
  10. </head>
  11. <body>
  12. <div class="container">
  13. <h2>内联表单</h2>
  14. <p>使视口的宽度大于 768px,以查看所有的表单元素都是内联的、左对齐的,并且标签是并排的。</p>
  15. <form class="form-inline" action="/action_page.php">
  16. <div class="form-group">
  17. <label for="email2">邮箱:</label>
  18. <input type="text" class="form-control" id="email2" placeholder="输入邮箱地址">
  19. </div>
  20. <div class="form-group">
  21. <label for="pwd2">密码:</label>
  22. <input type="text" class="form-control" id="pwd2" placeholder="输入密码">
  23. </div>
  24. <div class="checkbox">
  25. <label><input type="checkbox"> 记住我</label>
  26. </div>
  27. <button type="button" class="btn btn-default">提交</button>
  28. </form>
  29. </div>
  30. </body>
  31. </html>

提示:如果你没有为每一个输入都添加标签,这样的表单对于屏幕阅读器就会出现问题。通过使用 .sr-only 类,隐藏除屏幕阅读器之外的所有设备的标签:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Bootstrap 实例</title>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <link rel="stylesheet" href="https://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">
  8. <script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
  9. <script src="https://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
  10. </head>
  11. <body>
  12. <div class="container">
  13. <h2>使用 .sr-only 的内联表单</h2>
  14. <p>使视口的宽度大于 768px,以查看所有的表单元素都是内联的、左对齐的,并且标签是并排的。</p>
  15. <form class="form-inline" action="/example/html/action_page.ashx">
  16. <div class="form-group">
  17. <label class="sr-only" for="email">邮箱:</label>
  18. <input type="email" class="form-control" id="email" placeholder="输入邮箱地址" name="email">
  19. </div>
  20. <div class="form-group">
  21. <label class="sr-only" for="pwd">密码:</label>
  22. <input type="password" class="form-control" id="pwd" placeholder="输入密码" name="pwd">
  23. </div>
  24. <div class="checkbox">
  25. <label><input type="checkbox" name="remember"> 记住我</label>
  26. </div>
  27. <button type="submit" class="btn btn-default">提交</button>
  28. </form>
  29. </div>
  30. </body>
  31. </html>

Bootstrap 水平表单

水平形式意味着标签与大屏幕和中屏幕上的输入字段(水平)对齐。在小屏幕(767px 及以下)上,它将转换为垂直形式(标签标签放置在每个输入框之上)。

水平表单的规则:

  • 对 <form> 元素添加 .form-horizontal 样式
  • 对 <label> 元素添加 .control-label 样式

提示:使用 Bootstrap 的预定义网格类在水平布局中对齐标签和表单控件组。

下面的实例创建了一个带有两个输入框、一个复选框和一个提交按钮的水平表单。

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Bootstrap 实例</title>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <link rel="stylesheet" href="https://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">
  8. <script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
  9. <script src="https://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
  10. </head>
  11. <body>
  12. <div class="container">
  13. <h2>Horizontal form</h2>
  14. <form class="form-horizontal" action="/example/html/action_page.ashx">
  15. <div class="form-group">
  16. <label class="control-label col-sm-2" for="email3">邮箱:</label>
  17. <div class="col-sm-10">
  18. <input type="text" class="form-control" id="email3" placeholder="输入邮箱地址">
  19. </div>
  20. </div>
  21. <div class="form-group">
  22. <label class="control-label col-sm-2" for="pwd3">密码:</label>
  23. <div class="col-sm-10">
  24. <input type="text" class="form-control" id="pwd3" placeholder="输入密码">
  25. </div>
  26. </div>
  27. <div class="form-group">
  28. <div class="col-sm-offset-2 col-sm-10">
  29. <div class="checkbox">
  30. <label><input type="checkbox"> 记住我</label>
  31. </div>
  32. </div>
  33. </div>
  34. <div class="form-group">
  35. <div class="col-sm-offset-2 col-sm-10">
  36. <button type="button" class="btn btn-default">提交</button>
  37. </div>
  38. </div>
  39. </form>
  40. </div>
  41. </body>
  42. </html>