Saya membuat formulir pendaftaran untuk situs web. Saya ingin setiap label dan elemen input yang sesuai muncul di baris yang sama.
Ini kode saya:
#form {
background-color: #FFF;
height: 600px;
width: 600px;
margin-right: auto;
margin-left: auto;
margin-top: 0px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
padding: 0px;
}
label {
font-family: Georgia, "Times New Roman", Times, serif;
font-size: 18px;
color: #333;
height: 20px;
width: 200px;
margin-top: 10px;
margin-left: 10px;
text-align: right;
clear: both;
}
input {
height: 20px;
width: 300px;
border: 1px solid #000;
margin-top: 10px;
float: left;
}
<div id="form">
<form action="" method="post" name="registration" class="register">
<fieldset>
<label for="Student"> Name: </label>
<input name="Student" />
<label for="Matric_no"> Matric number: </label>
<input name="Matric_no" />
<label for="Email"> Email: </label>
<input name="Email" />
<label for="Username"> Username: </label>
<input name="Username" />
<label for="Password"> Password: </label>
<input name="Password" type="password" />
<input name="regbutton" type="button" class="button" value="Register" />
</fieldset>
</form>
</div>
Jawaban:
Dengan asumsi Anda ingin mengapung elemen, Anda juga harus mengapung
label
elemen juga.Sesuatu seperti ini akan berhasil:
label { /* Other styling... */ text-align: right; clear: both; float:left; margin-right:15px; }
Tampilkan cuplikan kode
#form { background-color: #FFF; height: 600px; width: 600px; margin-right: auto; margin-left: auto; margin-top: 0px; border-top-left-radius: 10px; border-top-right-radius: 10px; padding: 0px; text-align:center; } label { font-family: Georgia, "Times New Roman", Times, serif; font-size: 18px; color: #333; height: 20px; width: 200px; margin-top: 10px; margin-left: 10px; text-align: right; clear: both; float:left; margin-right:15px; } input { height: 20px; width: 300px; border: 1px solid #000; margin-top: 10px; float: left; } input[type=button] { float:none; }
<div id="form"> <form action="" method="post" name="registration" class="register"> <fieldset> <label for="Student">Name:</label> <input name="Student" id="Student" /> <label for="Matric_no">Matric number:</label> <input name="Matric_no" id="Matric_no" /> <label for="Email">Email:</label> <input name="Email" id="Email" /> <label for="Username">Username:</label> <input name="Username" id="Username" /> <label for="Password">Password:</label> <input name="Password" id="Password" type="password" /> <input name="regbutton" type="button" class="button" value="Register" /> </fieldset> </form> </div>
Alternatifnya, pendekatan yang lebih umum adalah membungkus
input
/label
elemen dalam kelompok:<div class="form-group"> <label for="Student">Name:</label> <input name="Student" id="Student" /> </div>
Tampilkan cuplikan kode
#form { background-color: #FFF; height: 600px; width: 600px; margin-right: auto; margin-left: auto; margin-top: 0px; border-top-left-radius: 10px; border-top-right-radius: 10px; padding: 0px; text-align:center; } label { font-family: Georgia, "Times New Roman", Times, serif; font-size: 18px; color: #333; height: 20px; width: 200px; margin-top: 10px; margin-left: 10px; text-align: right; margin-right:15px; float:left; } input { height: 20px; width: 300px; border: 1px solid #000; margin-top: 10px; }
<div id="form"> <form action="" method="post" name="registration" class="register"> <fieldset> <div class="form-group"> <label for="Student">Name:</label> <input name="Student" id="Student" /> </div> <div class="form-group"> <label for="Matric_no">Matric number:</label> <input name="Matric_no" id="Matric_no" /> </div> <div class="form-group"> <label for="Email">Email:</label> <input name="Email" id="Email" /> </div> <div class="form-group"> <label for="Username">Username:</label> <input name="Username" id="Username" /> </div> <div class="form-group"> <label for="Password">Password:</label> <input name="Password" id="Password" type="password" /> </div> <input name="regbutton" type="button" class="button" value="Register" /> </fieldset> </form> </div>
Perhatikan bahwa
for
atribut harus sesuai denganid
elemen yang dapat diberi label, bukan miliknyaname
. Ini akan memungkinkan pengguna untuk mengkliklabel
untuk memberikan fokus ke elemen formulir yang sesuai.sumber
clear: both;
yang membantu kasus saya.Saya menemukan
"display:flex"
gaya adalah cara yang baik untuk membuat elemen ini dalam garis yang sama. Tidak peduli jenis elemen apa di div. Terutama jika kelas masukan adalah kontrol-formulir, solusi lain seperti bootstrap, blok-sebaris tidak akan berfungsi dengan baik.Contoh:
<div style="display:flex; flex-direction: row; justify-content: center; align-items: center"> <label for="Student">Name:</label> <input name="Student" /> </div>
Lebih detail tentang tampilan: flex:
flex-direction: baris, kolom
justify-content: flex-end, center, space-between, space-around
align-items: stretch, flex-start, flex-end, center
sumber
aaa ## HTML Saya sarankan Anda membungkusnya dalam sebuah div, karena Anda kemungkinan besar akan mengapungkannya dalam konteks tertentu.
<div class="input-w"> <label for="your-input">Your label</label> <input type="text" id="your-input" /> </div>
CSS
Kemudian di dalam div itu, Anda dapat membuat setiap bagian
inline-block
sehingga Anda dapat menggunakannyavertical-align
untuk menengahkannya - atau menetapkan garis dasar, dll. (Label dan masukan Anda mungkin berubah ukuran di masa mendatang ....input-w label, .input-w input { float: none; /* if you had floats before? otherwise inline-block will behave differently */ display: inline-block; vertical-align: middle; }
jsFiddle
UPDATE: pertengahan 2016 + dengan kueri media yang memprioritaskan seluler dan flex-box
Inilah cara saya melakukan sesuatu hari ini.
HTML
<label class='input-w' for='this-input-name'> <span class='label'>Your label</span> <input class='input' type='text' id='this-input-name' placeholder='hello'> </label> <label class='input-w' for='this-other-input-name'> <span class='label'>Your label</span> <input class='input' type='text' id='this-other-input-name' placeholder='again'> </label>
SCSS
html { // https://www.paulirish.com/2012/box-sizing-border-box-ftw/ box-sizing: border-box; *, *:before, *:after { box-sizing: inherit; } } // if you don't already reset your box-model, read about it .input-w { display: block; width: 100%; // should be contained by a form or something margin-bottom: 1rem; @media (min-width: 500px) { display: flex; flex-direction: row; align-items: center; } .label, .input { display: block; width: 100%; border: 1px solid rgba(0,0,0,.1); @media (min-width: 500px) { width: auto; display: flex; } } .label { font-size: 13px; @media (min-width: 500px) { /* margin-right: 1rem; */ min-width: 100px; // maybe to match many? } } .input { padding: .5rem; font-size: 16px; @media (min-width: 500px) { flex-grow: 1; max-width: 450px; // arbitrary } } }
jsFiddle
sumber
<label>
elemen sekarang menjadi hari.Apa yang Anda lewatkan adalah pelampung: kiri; berikut adalah contoh yang baru saja dilakukan di HTML
<div id="form"> <form action="" method="post" name="registration" class="register"> <fieldset> <label for="Student" style="float: left">Name:</label> <input name="Student" /> <label for="Matric_no" style="float: left">Matric number:</label> <input name="Matric_no" /> <label for="Email" style="float: left">Email:</label> <input name="Email" /> <label for="Username" style="float: left">Username:</label> <input name="Username" /> <label for="Password" style="float: left">Password:</label> <input name="Password" type="password" /> <input name="regbutton" type="button" class="button" value="Register" /> </fieldset> </form>
Cara yang lebih efisien untuk melakukan ini adalah menambahkan kelas ke label dan menyetel float: left; ke kelas di CSS
sumber
Selain menggunakan float, seperti yang disarankan orang lain, Anda juga dapat mengandalkan kerangka kerja seperti Bootstrap di mana Anda dapat menggunakan kelas "bentuk horizontal" untuk memiliki label dan masukan pada baris yang sama.
Jika Anda tidak terbiasa dengan Bootstrap, Anda perlu memasukkan:
Ini sangat mudah dan Anda tidak perlu mengacaukan float atau banyak CSS untuk pemformatan, seperti yang Anda sebutkan di atas.
<div id="form"> <div class="row"> <form action="" method="post" name="registration" class="register form-horizontal"> <fieldset> <legend>Address Form</legend> <div class="form-group"> <label for="Student" class="col-sm-2 control-label">Name:</label> <div class="col-sm-6"> <input name="Student" class="form-control"> </div> </div> <div class="form-group"> <label for="Matric_no" class="col-sm-2 control-label">Matric number: </label> <div class="col-sm-6"> <input name="Matric_no" class="form-control"> </div> </div> <div class="form-group"> <label for="Email" class="col-sm-2 control-label">Email: </label> <div class="col-sm-6"> <input name="Email" class="form-control"> </div> </div> <div class="form-group"> <label for="Username" class="col-sm-2 control-label">Username: </label> <div class="col-sm-6"> <input name="Username" class="form-control"> </div> </div> <div class="form-group"> <label for="Password" class="col-sm-2 control-label">Password: </label> <div class="col-sm-6"> <input name="Password" type="password" class="form-control"> </div> </div> <div> <button class="btn btn-info" name="regbutton" value="Register">Submit</button> </div> </fieldset> </form> </div> </div> </div>
sumber
Untuk Bootstrap 4 itu bisa dilakukan dengan
class="form-group" style="display: flex"
<div class="form-group" style="display: flex"> <label>Topjava comment:</label> <input class="form-control" type="checkbox"/> </div>
sumber
Saya menggunakan Angular 6 dengan Bootstrap 4 dan menemukan cara ini berfungsi:
<div class="form-group row"> <div class="col-md-2"> <label for="currentPassword">Current Password:</label> </div> <div class="col-md-6"> <input type="password" id="currentPassword"> </div> </div>
sumber
Saya telah melakukan ini dengan beberapa cara berbeda tetapi satu-satunya cara yang saya temukan yang menjaga label dan teks / data input yang sesuai pada baris yang sama dan selalu membungkus sempurna dengan lebar induknya adalah dengan menggunakan display: tabel inline.
CSS
.container { display: inline-table; padding-right: 14px; margin-top:5px; margin-bottom:5px; } .fieldName { display: table-cell; vertical-align: middle; padding-right: 4px; } .data { display: table-cell; }
HTML
<div class='container'> <div class='fieldName'> <label>Student</label> </div> <div class='data'> <input name="Student" /> </div> </div> <div class='container'> <div class='fieldName'> <label>Email</label> </div> <div class='data'> <input name="Email" /> </div> </div>
sumber
Bungkus label dan input di dalam div bootstraps
<div class ="row"> <div class="col-md-4">Name:</div> <div class="col-md-8"><input type="text"></div> </div>
sumber
Hal ini bekerja dengan baik, menempatkan tombol radio atau kotak centang dengan label di baris yang sama tanpa css.
<label><input type="radio" value="new" name="filter">NEW</label> <label><input type="radio" value="wow" name="filter">WOW</label>
sumber
Tampilkan cuplikan kode
#form { background-color: #FFF; height: 600px; width: 600px; margin-right: auto; margin-left: auto; margin-top: 0px; border-top-left-radius: 10px; border-top-right-radius: 10px; padding: 0px; text-align:center; } label { font-family: Georgia, "Times New Roman", Times, serif; font-size: 18px; color: #333; height: 20px; width: 200px; margin-top: 10px; margin-left: 10px; text-align: right; margin-right:15px; float:left; } input { height: 20px; width: 300px; border: 1px solid #000; margin-top: 10px; }
<div id="form"> <form action="" method="post" name="registration" class="register"> <fieldset> <div class="form-group"> <label for="Student">Name:</label> <input name="Student" /> </div> <div class="form-group"> <label for="Matric_no">Matric number:</label> <input name="Matric_no" /> </div> <div class="form-group"> <label for="Email">Email:</label> <input name="Email" /> </div> <div class="form-group"> <label for="Username">Username:</label> <input name="Username" /> </div> <div class="form-group"> <label for="Password">Password:</label> <input name="Password" type="password" /> </div> <input name="regbutton" type="button" class="button" value="Register" /> </fieldset> </form> </div>
sumber
Pilihan lainnya adalah menempatkan tabel di dalam formulir. (lihat di bawah) Saya tahu tabel disukai oleh beberapa orang tapi saya pikir mereka bekerja dengan baik ketika datang ke tata letak formulir responsif.
<FORM METHOD="POST" ACTION="http://www.cs.tut.fi/cgi-bin/run/~jkorpela/echo.cgi"> <TABLE BORDER="1"> <TR> <TD>Your name</TD> <TD> <INPUT TYPE="TEXT" NAME="name" SIZE="20"> </TD> </TR> <TR> <TD>Your E-mail address</TD> <TD><INPUT TYPE="TEXT" NAME="email" SIZE="25"></TD> </TR> </TABLE> <P><INPUT TYPE="SUBMIT" VALUE="Submit" NAME="B1"></P> </FORM>
sumber