Forms help users enter information. Different layouts make forms easier to use and look nice on different screens.
Form layout (inline, horizontal) in Bootsrap
/* Inline form */ <form class="row row-cols-lg-auto g-3 align-items-center"> <div class="col-12"> <label for="inputEmail" class="visually-hidden">Email</label> <input type="email" class="form-control" id="inputEmail" placeholder="Email"> </div> <div class="col-12"> <label for="inputPassword" class="visually-hidden">Password</label> <input type="password" class="form-control" id="inputPassword" placeholder="Password"> </div> <div class="col-12"> <button type="submit" class="btn btn-primary">Sign in</button> </div> </form> /* Horizontal form */ <form> <div class="row mb-3"> <label for="inputEmail" class="col-sm-2 col-form-label">Email</label> <div class="col-sm-10"> <input type="email" class="form-control" id="inputEmail" placeholder="Email"> </div> </div> <div class="row mb-3"> <label for="inputPassword" class="col-sm-2 col-form-label">Password</label> <div class="col-sm-10"> <input type="password" class="form-control" id="inputPassword" placeholder="Password"> </div> </div> <div class="row mb-3"> <div class="col-sm-10 offset-sm-2"> <button type="submit" class="btn btn-primary">Sign in</button> </div> </div> </form>
Use row-cols-lg-auto and g-3 classes for inline forms to keep inputs aligned and spaced.
For horizontal forms, use Bootstrap grid classes like col-sm-2 for labels and col-sm-10 for inputs to align them side by side.
<form class="row row-cols-lg-auto g-3 align-items-center"> <div class="col-12"> <label for="search" class="visually-hidden">Search</label> <input type="search" class="form-control" id="search" placeholder="Search"> </div> <div class="col-12"> <button type="submit" class="btn btn-secondary">Go</button> </div> </form>
<form> <div class="row mb-3"> <label for="username" class="col-sm-3 col-form-label">Username</label> <div class="col-sm-9"> <input type="text" class="form-control" id="username" placeholder="Username"> </div> </div> <div class="row mb-3"> <label for="password" class="col-sm-3 col-form-label">Password</label> <div class="col-sm-9"> <input type="password" class="form-control" id="password" placeholder="Password"> </div> </div> <div class="row mb-3"> <div class="col-sm-9 offset-sm-3"> <button type="submit" class="btn btn-success">Login</button> </div> </div> </form>
This page shows two Bootstrap forms: one inline and one horizontal. Both forms have email and password fields with a sign-in button. The inline form arranges inputs side by side in a compact row. The horizontal form aligns labels and inputs side by side using grid columns.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Bootstrap Form Layouts</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body class="p-4"> <h2>Inline Form</h2> <form class="row row-cols-lg-auto g-3 align-items-center mb-5" aria-label="Inline sign in form"> <div class="col-12"> <label for="inlineEmail" class="visually-hidden">Email</label> <input type="email" class="form-control" id="inlineEmail" placeholder="Email" required> </div> <div class="col-12"> <label for="inlinePassword" class="visually-hidden">Password</label> <input type="password" class="form-control" id="inlinePassword" placeholder="Password" required> </div> <div class="col-12"> <button type="submit" class="btn btn-primary">Sign in</button> </div> </form> <h2>Horizontal Form</h2> <form aria-label="Horizontal sign in form"> <div class="row mb-3"> <label for="horizontalEmail" class="col-sm-2 col-form-label">Email</label> <div class="col-sm-10"> <input type="email" class="form-control" id="horizontalEmail" placeholder="Email" required> </div> </div> <div class="row mb-3"> <label for="horizontalPassword" class="col-sm-2 col-form-label">Password</label> <div class="col-sm-10"> <input type="password" class="form-control" id="horizontalPassword" placeholder="Password" required> </div> </div> <div class="row mb-3"> <div class="col-sm-10 offset-sm-2"> <button type="submit" class="btn btn-primary">Sign in</button> </div> </div> </form> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> </body> </html>
Use visually-hidden class on labels in inline forms to keep them accessible but hidden visually.
Horizontal forms use Bootstrap grid to align labels and inputs side by side, improving readability on wider screens.
Both layouts are responsive and adjust well on small screens, stacking inputs vertically if needed.
Inline forms place inputs and buttons in one row for compactness.
Horizontal forms align labels and inputs side by side using grid columns.
Both layouts improve form usability and appearance depending on the context.
Practice
inline form layout in Bootstrap?Solution
Step 1: Understand inline form layout
Inline forms arrange inputs and buttons side by side in one row to save space.Step 2: Compare with other layouts
Unlike vertical or horizontal forms, inline forms keep everything compact horizontally.Final Answer:
To place form controls and buttons in a single horizontal row for compactness -> Option CQuick Check:
Inline form = compact horizontal layout [OK]
- Confusing inline with vertical stacking
- Thinking inline hides labels
- Assuming inline creates multi-step forms
Solution
Step 1: Identify horizontal form class
Bootstrap uses.form-horizontalto align labels and inputs side by side.Step 2: Differentiate from other classes
.form-inlineis for inline forms;.form-controlstyles inputs;.form-rowis for grid rows.Final Answer:
.form-horizontal-> Option AQuick Check:
Horizontal form = .form-horizontal [OK]
- Using .form-inline for horizontal layout
- Confusing .form-control with layout classes
- Thinking .form-row alone creates horizontal forms
<form class="form-inline"> <label for="email" class="mr-2">Email</label> <input type="email" class="form-control mr-2" id="email" placeholder="Enter email"> <button type="submit" class="btn btn-primary">Submit</button> </form>
Solution
Step 1: Analyze form class
The form usesform-inline, which arranges controls horizontally.Step 2: Check elements and spacing
Label, input, and button have margin classes to separate them horizontally in one row.Final Answer:
Label, input, and button appear side by side in one horizontal row -> Option DQuick Check:
form-inline = horizontal row layout [OK]
- Expecting vertical stacking with form-inline
- Ignoring margin classes causing cramped layout
- Thinking labels are hidden in inline forms
<form class="form-horizontal"> <label class="col-sm-2 control-label" for="name">Name</label> <input type="text" class="form-control col-sm-10" id="name" placeholder="Name"> </form>
Solution
Step 1: Understand horizontal form grid
In Bootstrap horizontal forms, inputs must be inside grid columns wrapped in a div for alignment.Step 2: Check snippet structure
The input has the column class but is not wrapped in a div, breaking the grid layout.Final Answer:
Input should be wrapped inside a <div class="col-sm-10"> for proper grid layout -> Option BQuick Check:
Horizontal form inputs need column div wrappers [OK]
- Adding column classes directly to inputs without wrapper
- Removing control-label class from labels
- Confusing form-inline with form-horizontal
Solution
Step 1: Choose breakpoint classes for responsiveness
Usingcol-md-3andcol-md-9applies columns on medium screens and larger, stacking on smaller.Step 2: Wrap inputs in a div with column class inside
This ensures proper horizontal alignment and responsive stacking.form-horizontalFinal Answer:
Usecol-md-3on labels andcol-md-9wrapped in div on inputs inside aform-horizontal-> Option AQuick Check:
Responsive horizontal form = col-md-* + wrappers + form-horizontal [OK]
- Using col-sm-* classes causing stacking too early
- Not wrapping inputs in divs with column classes
- Using form-inline for horizontal responsive layout
Ready to prove it?
Pass the test and this pattern moves unknown
