Yıl 2019 ve bu soruna önceki cevaplar kullanılmıyor
- CSS ızgarası
- CSS değişkenleri
- HTML5 form öğeleri
- CSS'de SVG
CSS ızgarası, 2019'da formları yapmanın yoludur, çünkü etiketlerinizin fazladan div'ler, aralıklar, yıldız işaretli aralıklar ve diğer kalıntılar olmadan girdilerinizden önce olmasını sağlayabilirsiniz.
İşte minimum CSS ile gittiğimiz yer:
Yukarıdakiler için HTML:
<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>
Yer tutucu metin de eklenebilir ve şiddetle tavsiye edilir. (Ben sadece bu orta formu yanıtlıyorum).
Şimdi CSS değişkenleri için:
--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>');
Form öğeleri için CSS:
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);
}
Formun kendisi CSS ızgarasında olmalıdır:
form {
align-items: center;
display: grid;
grid-gap: var(--form-grid-gap);
grid-template-columns: var(--form-grid-template-columns);
margin: auto;
}
Sütunların değerleri, 1 / -1 kapsamına ayarlanmış formdaki etiketler gibi herhangi bir şeye 1fr auto
veya 1fr
herhangi bir şeye <p>
ayarlanabilir. Medya sorgularınızdaki değişkenleri, giriş kutularının mobil cihazlarda tam genişlikte ve yukarıda belirtildiği gibi masaüstünde tam genişlikte olacak şekilde değiştirirsiniz. CSS değişkenleri yaklaşımını kullanarak dilerseniz mobil ağda da ızgara boşluğunuzu değiştirebilirsiniz.
Kutular geçerli olduğunda, yıldız işareti yerine yeşil bir onay işareti almalısınız.
CSS'deki SVG, tarayıcıyı yıldız işaretinin görüntüsünü almak için sunucuya gidiş dönüş yapmaktan kurtarmanın bir yoludur. Bu şekilde yıldız işaretlerine ince ayar yapabilirsiniz, buradaki örnekler alışılmadık bir açıda, yukarıdaki SVG simgesi tamamen okunabilir olduğundan bunu düzenleyebilirsiniz. Görünüm kutusu, yıldız işaretini merkezin üstüne veya altına yerleştirmek için de değiştirilebilir.