Horizontal form
各CSSフレームワークのHorizontal form
を比較してみました。
今回は、時間の都合、HTML
を記述するだけです。
ドキュメントから引用させていただいています。
Bootstarp 5.2.3
<form> <div class="row mb-3"> <label for="inputEmail3" class="col-sm-2 col-form-label">Email</label> <div class="col-sm-10"> <input type="email" class="form-control" id="inputEmail3"> </div> </div> <fieldset class="row mb-3"> <legend class="col-form-label col-sm-2 pt-0">Radios</legend> <div class="col-sm-10"> <div class="form-check"> <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked> <label class="form-check-label" for="gridRadios1"> First radio </label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2"> <label class="form-check-label" for="gridRadios2"> Second radio </label> </div> <div class="form-check disabled"> <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled> <label class="form-check-label" for="gridRadios3"> Third disabled radio </label> </div> </div> </fieldset> </form>
fieldset
は、Flexbox
が効かないらしいけど、Bootstrap
ではReboot.css
で実現していました。*1
試してみたけど、イマイチだったので、fieldset
とlegend
は、使わないことにしました。
UIkit 3.15.14
<form class="uk-form-horizontal uk-margin-large"> <div class="uk-margin"> <label class="uk-form-label" for="form-horizontal-text">Text</label> <div class="uk-form-controls"> <input class="uk-input" id="form-horizontal-text" type="text" placeholder="Some text..."> </div> </div> <div class="uk-margin"> <label class="uk-form-label" for="form-horizontal-select">Select</label> <div class="uk-form-controls"> <select class="uk-select" id="form-horizontal-select"> <option>Option 01</option> <option>Option 02</option> </select> </div> </div> <div class="uk-margin"> <div class="uk-form-label">Radio</div> <div class="uk-form-controls uk-form-controls-text"> <label><input class="uk-radio" type="radio" name="radio1"> Option 01</label><br> <label><input class="uk-radio" type="radio" name="radio1"> Option 02</label> </div> </div> </form>
Bulma 0.9.4
Form controls | Bulma: Free, open source, and modern CSS framework based on Flexbox
<div class="field is-horizontal"> <div class="field-label"> <label class="label">Already a member?</label> </div> <div class="field-body"> <div class="field is-narrow"> <div class="control"> <label class="radio"> <input type="radio" name="member"> Yes </label> <label class="radio"> <input type="radio" name="member"> No </label> </div> </div> </div> </div>
Spectre.css v0.5.9
Forms - Elements - Spectre.css CSS Framework
<form class="form-horizontal"> <div class="form-group"> <div class="col-3 col-sm-12"> <label class="form-label" for="input-example-1">Name</label> </div> <div class="col-9 col-sm-12"> <input class="form-input" type="text" id="input-example-1" placeholder="Name"> </div> </div> <!-- form structure --> </form>
Pure v3.0.0
<form class="pure-form pure-form-aligned"> <fieldset> <div class="pure-control-group"> <label for="aligned-name">Username</label> <input type="text" id="aligned-name" placeholder="Username" /> <span class="pure-form-message-inline">This is a required field.</span> </div> <div class="pure-control-group"> <label for="aligned-password">Password</label> <input type="password" id="aligned-password" placeholder="Password" /> </div> <div class="pure-control-group"> <label for="aligned-email">Email Address</label> <input type="email" id="aligned-email" placeholder="Email Address" /> </div> <div class="pure-control-group"> <label for="aligned-foo">Supercalifragilistic Label</label> <input type="text" id="aligned-foo" placeholder="Enter something here..." /> </div> <div class="pure-controls"> <label for="aligned-cb" class="pure-checkbox"> <input type="checkbox" id="aligned-cb" /> I've read the terms and conditions </label> <button type="submit" class="pure-button pure-button-primary">Submit</button> </div> </fieldset> </form>
感想
Bootstrap
やSpectre.css
は、col-sm-2
やcol-3
を指定していて、変更できるのは便利かな?と思いました。
でも、項目は右寄せで表示させるのが望ましいので、UIkit
やBulma
のようにuk-form-lable
やfield-label
として定義した方がいいかな?と思いました。*2
Bulma
のように、is-horizontal
を取ると、Stacked Form
として表示する方法を模索しています。