มันคือ 2019 และคำตอบก่อนหน้าสำหรับปัญหานี้ไม่ได้ใช้
- ตาราง CSS
- ตัวแปร CSS
- องค์ประกอบแบบฟอร์ม HTML5
- SVG ใน CSS
CSS grid เป็นวิธีการทำแบบฟอร์มในปี 2019 เนื่องจากคุณสามารถมีป้ายกำกับของคุณนำหน้าอินพุตของคุณโดยไม่ต้องมี div, spans, spans, spans, asterisks และ relics อื่น ๆ
นี่คือที่ที่เราจะไปด้วย CSS ขั้นต่ำ:
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>
สามารถเพิ่มข้อความตัวยึดได้ด้วยและขอแนะนำอย่างยิ่ง (ฉันแค่ตอบแบบฟอร์มกลางนี้)
ตอนนี้สำหรับตัวแปร 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 สำหรับองค์ประกอบของฟอร์ม:
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);
}
รูปแบบตัวเองควรอยู่ในตาราง CSS:
form {
align-items: center;
display: grid;
grid-gap: var(--form-grid-gap);
grid-template-columns: var(--form-grid-template-columns);
margin: auto;
}
ค่าสำหรับคอลัมน์สามารถตั้งค่าเป็น1fr auto
หรือ1fr
มีอะไรก็ได้เช่น<p>
แท็กในชุดรูปแบบการขยาย 1 / -1 คุณเปลี่ยนตัวแปรในเคียวรีสื่อบันทึกของคุณเพื่อให้คุณมีกล่องอินพุตกว้างเต็มบนมือถือ คุณสามารถเปลี่ยนช่องว่างกริดของคุณบนมือถือได้หากต้องการโดยใช้วิธีการตัวแปร CSS
เมื่อกล่องถูกต้องคุณควรได้รับเครื่องหมายสีเขียวแทนเครื่องหมายดอกจัน
SVG ใน CSS เป็นวิธีการบันทึกเบราว์เซอร์ไม่ต้องเดินทางไปที่เซิร์ฟเวอร์เพื่อรับภาพของเครื่องหมายดอกจัน ด้วยวิธีนี้คุณสามารถปรับแต่งเครื่องหมายดอกจันตัวอย่างที่นี่อยู่ในมุมที่ผิดปกติคุณสามารถแก้ไขได้เนื่องจากไอคอน SVG ด้านบนสามารถอ่านได้ทั้งหมด นอกจากนี้ยังสามารถแก้ไข viewbox เพื่อวางเครื่องหมายดอกจันด้านบนหรือด้านล่างตรงกลาง