การจัดรูปแบบ Radio Buttons และ Labels ด้วย CSS

คุณเคยพบว่าตัวเองต้องดิ้นรนเพื่อจัดรูปแบบปุ่มวิทยุและป้ายกำกับของพวกมันในลักษณะที่ดึงดูดสายตาหรือไม่? ความท้าทายนี้มักเกิดขึ้นโดยเฉพาะเมื่อพยายามให้แน่ใจว่าปุ่มวิทยุที่เลือกเด่นชัดกว่าที่เหลือ โชคดีที่ด้วย CSS เพียงเล็กน้อยและ JavaScript คุณสามารถทำสิ่งนี้ได้อย่างง่ายดาย

ทำความเข้าใจกับปัญหา

เมื่อออกแบบแบบฟอร์มที่ใช้ปุ่มวิทยุ สิ่งสำคัญไม่เพียงแต่ต้องมีเลย์เอาต์ที่ใช้งานได้ แต่ยังต้องสวยงามตามสายตาอีกด้วย หนึ่งในข้อกำหนดทั่วไปคือให้ปุ่มวิทยุเรียงตรงกับป้ายกำกับ และให้ป้ายกำกับที่เลือกมีการจัดรูปแบบที่แตกต่างจากป้ายกำกับอื่น ๆ มาดูวิธีที่คุณจะสามารถทำให้ทั้งสองสิ่งนี้สำเร็จได้

เลย์เอาต์: การจัดวางปุ่มวิทยุข้างป้ายกำกับ

เริ่มต้น เราต้องตัดสินใจว่าคุณต้องการให้ปุ่มวิทยุปรากฏอยู่ข้างป้ายกำกับอย่างไร:

  • เลย์เอาต์แบบแถวเดียว: ปุ่มวิทยุและป้ายกำกับปรากฏอยู่ในบรรทัดเดียวกัน
  • เลย์เอาต์แบบแนวตั้ง: ปุ่มวิทยุและป้ายกำกับซ้อนกันในแนวตั้ง

นี่คือสองวิธีในการสร้างเลย์เอาต์เหล่านี้:

วิธีที่ 1: ใช้แท็กอินไลน์พร้อมมาร์จิน

หากคุณต้องการให้ปุ่มวิทยุทั้งหมดเรียงอยู่ในบรรทัดเดียว คุณอาจใช้มาร์จินเพื่อสร้างระยะห่างระหว่างพวกมัน นี่คือตัวอย่าง CSS ง่ายๆ เพื่อจัดทุกอย่างให้เรียบร้อย

<style type='text/css'>
    .input input {
        width: 20px; /* ขนาดของปุ่มวิทยุ */
        margin-right: 10px; /* ระยะห่างระหว่างปุ่มและป้ายกำกับ */
    }
</style>

วิธีที่ 2: ใช้การตัดบรรทัด

หากคุณต้องการให้แต่ละทางเลือกปรากฏในบรรทัดของตัวเอง เพียงแค่แทรกแท็ก <br /> เพื่อทำลายบรรทัด นี่คือตัวอย่างว่าจะดูเป็นอย่างไร:

<div class="input radio">
    <fieldset>
        <legend>ท้องฟ้ามีสีใด?</legend>
        <input type="hidden" name="data[Submit][question]" value="" id="SubmitQuestion" />
        
        <input type="radio" name="data[Submit][question]" id="SubmitQuestion1" value="1" />
        <label for="SubmitQuestion1">สีเขียวน่าพิศวงที่แผ่รังสี.</label><br />
        
        <input type="radio" name="data[Submit][question]" id="SubmitQuestion2" value="2" />
        <label for="SubmitQuestion2">สีส้มที่มืดมนและน่าเบื่อ</label><br />
        
        <input type="radio" name="data[Submit][question]" id="SubmitQuestion3" value="3" />
        <label for="SubmitQuestion3">สีน้ำเงินที่เปล่งประกายอย่างสมบูรณ์แบบ</label>
    </fieldset>
</div>

เน้นป้ายกำกับที่เลือก

ตอนนี้มาถึงการจัดรูปแบบป้ายกำกับของปุ่มวิทยุที่เลือก โชคไม่ดีที่สิ่งนี้ต้องใช้ JavaScript สักหน่อยเพราะ CSS เพียงอย่างเดียวไม่สามารถแยกแยะสไตล์ได้ตามปุ่มวิทยุที่ถูกเลือก

ขั้นตอนที่ 1: CSS พื้นฐานสำหรับการจัดรูปแบบโฟกัส

เพื่อเริ่มต้น คุณต้องการเพิ่ม CSS เล็กน้อยสำหรับป้ายกำกับที่มีการโฟกัส สิ่งนี้จะแสดงให้เห็นว่าตัวเลือกใดถูกเลือก:

<style type='text/css'>
    .input label.focused {
        background-color: #EEEEEE; /* พื้นหลังสำหรับป้ายกำกับที่เลือก */
        font-style: italic; /* เปลี่ยนสไตล์ฟอนต์เพื่อให้โดดเด่น */
    }
</style>

ขั้นตอนที่ 2: JavaScript เพื่อจัดการการโฟกัส

ถัดไป คุณจะต้องใช้ JavaScript เพื่อจัดการการเพิ่มและลบคลาสที่มีการโฟกัส การใช้ไลบรารีอย่าง jQuery ทำให้เรื่องนี้ง่ายขึ้นมาก:

<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
    $(document).ready(function() {
        $('.input :radio').focus(updateSelectedStyle);
        $('.input :radio').blur(updateSelectedStyle);
        $('.input :radio').change(updateSelectedStyle);
    });

    function updateSelectedStyle() {
        $('.input :radio').removeClass('focused').next().removeClass('focused');
        $('.input :radio:checked').addClass('focused').next().addClass('focused');
    }
</script>

สรุป

เพื่อสรุป นี่คือวิธีที่คุณสามารถจัดรูปแบบปุ่มวิทยุและป้ายกำกับได้อย่างมีประสิทธิภาพ:

  1. การจัดตำแหน่ง: ใช้ CSS มาร์จินสำหรับเลย์เอาต์แบบแถวเดียว หรือแท็ก <br /> สำหรับการซ้อนในแนวตั้ง
  2. การเน้น: ใช้ CSS สำหรับการจัดรูปแบบพื้นฐานและ JavaScript เพื่ออัปเดตสไตล์แบบไดนามิกตามปุ่มวิทยุที่เลือก

ด้วยเทคนิคเหล่านี้ คุณสามารถปรับปรุงประสบการณ์ของผู้ใช้ในแบบฟอร์มของคุณในขณะที่รักษารูปลักษณ์ที่สะอาดและทันสมัย สุขสันต์การเขียนโค้ด!