Ini 2019 dan jawaban sebelumnya untuk masalah ini tidak digunakan
- Kotak CSS
- Variabel CSS
- Elemen formulir HTML5
- SVG dalam CSS
Kotak CSS adalah cara untuk melakukan formulir pada 2019 karena Anda dapat memiliki label sebelum input Anda tanpa memiliki div, bentang, bentang dengan tanda bintang tambahan di dan peninggalan lainnya.
Di sinilah kita akan pergi dengan CSS minimal:
HTML untuk yang di atas:
<form action="https://www.example.com/register/" method="post" id="form-validate" enctype="multipart/form-data">
<p class="form-instructions">Please enter the following information to create your account.</p>
<label for="firstname">First name</label>
<input type="text" id="firstname" name="firstname" value="" title="First name" maxlength="255" required="">
<label for="lastname">Last name</label>
<input type="text" id="lastname" name="lastname" value="" title="Last name" maxlength="255" required="">
<label for="email_address">Email address</label>
<input type="email" autocapitalize="off" autocorrect="off" spellcheck="false" name="email" id="email_address" value="" title="Email address" size="30" required="">
<label for="password">Password</label>
<input type="password" name="password" id="password" title="Password" required="">
<label for="confirmation">Confirm password</label>
<input type="password" name="confirmation" title="Confirm password" id="confirmation" required="">
<input type="checkbox" name="is_subscribed" title="Subscribe to our newsletter" value="1" id="is_subscribed" class="checkbox">
<label for="is_subscribed">Subscribe to the newsletter</label>
<input type="checkbox" name="persistent_remember_me" id="remember_meGCJiRe0GbJ" checked="checked" title="Remember me">
<label for="remember_meGCJiRe0GbJ">Remember me</label>
<p class="required">* Required</p>
<button type="submit" title="Register">Register</button>
</form>
Teks Placeholder dapat ditambahkan juga dan sangat disarankan. (Saya hanya menjawab mid-form ini).
Sekarang untuk variabel CSS:
--icon-required: url('data:image/svg+xml,\
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="-10 -6 16 16"> \
<line id="line" y1="-3" y2="3" stroke="%23df0000" stroke-linecap="butt" transform="rotate(15)"></line> \
<line id="line" y1="-3" y2="3" stroke="%23df0000" stroke-linecap="butt" transform="rotate(75)"></line> \
<line id="line" y1="-3" y2="3" stroke="%23df0000" stroke-linecap="butt" transform="rotate(-45)"></line> \
</svg>');
--icon-tick: url('data:image/svg+xml,\
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="100" viewBox="-2 -2 16 16"> \
<path fill="green" stroke-linejoin="round" d="M2 6L1 7l3 4 7-10h-1L4 8z"/> \
</svg>');
CSS untuk elemen formulir:
input[type=text][required],
input[type=email][required],
input[type=password][required],
input[type=tel][required] {
background-image: var(--icon-required);
background-position-x: right;
background-repeat: no-repeat;
background-size: contain;
}
input:valid {
--icon-required: var(--icon-tick);
}
Formulir itu sendiri harus dalam kotak CSS:
form {
align-items: center;
display: grid;
grid-gap: var(--form-grid-gap);
grid-template-columns: var(--form-grid-template-columns);
margin: auto;
}
Nilai untuk kolom dapat diatur ke 1fr auto
atau 1fr
dengan apa pun seperti <p>
tag dalam formulir yang ditetapkan untuk rentang 1 / -1. Anda mengubah variabel dalam kueri media Anda sehingga Anda memiliki kotak input menjadi lebar penuh di ponsel dan sesuai di atas pada desktop. Anda juga dapat mengubah celah jaringan di ponsel jika diinginkan dengan menggunakan pendekatan variabel CSS.
Ketika kotak-kotak itu valid maka Anda harus mendapatkan tanda centang hijau alih-alih tanda bintang.
SVG dalam CSS adalah cara untuk menyelamatkan browser dari keharusan melakukan bolak-balik ke server untuk mendapatkan gambar tanda bintang. Dengan cara ini Anda dapat menyempurnakan tanda bintang, contoh-contoh di sini berada pada sudut yang tidak biasa, Anda dapat mengeditnya karena ikon SVG di atas sepenuhnya dapat dibaca. Kotak view juga dapat diubah untuk menempatkan tanda bintang di atas atau di bawah pusat.