Kebanyakan input mempunyai sesuatu yang sama - mereka paling gembira dengan label sahabat! Dan kebahagiaan tidak berhenti di sana. Borang dengan input dan label yang betul adalah lebih mudah bagi orang untuk menggunakan dan membuat orang gembira juga.
Dalam jawatan ini, saya ingin memberi tumpuan kepada situasi di mana kekurangan label semantik dan gabungan input menjadikannya lebih sukar bagi semua orang untuk menyelesaikan bentuk. Sejak berjuta -juta mata pencaharian orang bergantung pada bentuk, mari kita masuk ke tip terbaik yang saya tahu untuk mewujudkan hubungan yang memuaskan dan harmoni antara input dan label.
Amaran Kandungan: Dalam jawatan ini adalah tema cinta dan hubungan.
Kisah cinta bermula di sini! Mari kita tutup asas untuk membuat label dan input gembira.
Terdapat dua cara untuk memasangkan label dan input. Satu adalah dengan membungkus input dalam label (tersirat), dan yang lain adalah dengan menambahkan A untuk atribut ke label dan ID ke input (eksplisit).
Fikirkan label tersirat sebagai memeluk input, dan label eksplisit sebagai berdiri di sebelah input dan memegang tangannya.
<label> Nama: <input type="text" name="name"> </label>
Label eksplisit untuk nilai atribut mesti sepadan dengan nilai ID inputnya. Sebagai contoh, jika mempunyai nilai nama, maka ID juga harus mempunyai nilai nama.
<label for="name"> name: </label> <input type="text" name="name">
Malangnya, label tersirat tidak dikendalikan dengan betul oleh semua teknologi bantuan, walaupun untuk dan atribut ID digunakan. Oleh itu, ia adalah idea terbaik untuk menggunakan label eksplisit dan bukannya label tersirat.
<label> Nama: <input type="text" name="name"> </label> <label untuk="Label-Label-Name"> Nama: </label> <input type="text" name="name">
Setiap elemen input yang berasingan hanya boleh dipasangkan dengan satu label. Dan label hanya perlu dipasangkan dengan satu input. Ya, input dan label adalah monogami. ♥ ️
Nota: Terdapat satu pengecualian untuk peraturan ini: Apabila kami bekerja dengan sekumpulan input, katakan beberapa butang radio atau kotak semak. Dalam kes ini, elemen
Input dengan jenis = "Hantar" atau Type = "Button" tidak memerlukan label - Atribut nilai bertindak sebagai teks label yang boleh diakses sebaliknya. Input dengan jenis = "Tersembunyi" juga baik tanpa label. Tetapi semua input lain, termasuk
Kandungan yang masuk ke dalam label harus:
Satu perkara yang berguna yang boleh anda lakukan dengan kandungan dalam label ialah menambah petunjuk pemformatan. Sebagai contoh, label untuk akan
<label for="date"> start date </label> <span> (DD-MM-Yyyy): </span> <input type="date" aria-describedby="date-format" min="2021-03-01" max="2031-01-01">
Dengan cara ini, kami mendapat manfaat daripada label yang jelas yang menerangkan input apa itu, dan petunjuk bonus kepada pengguna bahawa input perlu dimasukkan dalam format tertentu.
Petua berikut melampaui asas -asas untuk menerangkan bagaimana untuk memastikan label dan input adalah gembira seperti yang boleh.
Terdapat kriteria kejayaan WCAG yang menyatakan susunan visual halaman harus mengikuti urutan di mana unsur -unsur muncul di DOM. Itu kerana:
Pengguna dengan penglihatan rendah yang menggunakan pembesar skrin dalam kombinasi dengan pembaca skrin mungkin keliru apabila pesanan bacaan muncul untuk melangkau di skrin. Pengguna papan kekunci mungkin menghadapi masalah meramalkan di mana fokus akan pergi seterusnya apabila pesanan sumber tidak sepadan dengan urutan visual.
Fikirkanlah. Jika kita mempunyai beberapa HTML standard di mana label datang sebelum input:
<label untuk="Orange"> Orange </label> <input type="checkbox" name="oren">
Itu meletakkan label sebelum input dalam DOM. Tetapi sekarang katakan label dan bentuk kami berada di dalam bekas yang fleksibel dan kami menggunakan perintah CSS untuk membalikkan perkara di mana input secara visual datang sebelum label:
label {order: 2; } input {order: 1; }
Pengguna pembaca skrin, yang menavigasi antara unsur -unsur, mungkin mengharapkan input mendapat tumpuan sebelum label kerana input datang secara visual. Tetapi apa yang sebenarnya berlaku ialah label menjadi tumpuan. Lihat di sini untuk perbezaan antara menavigasi dengan pembaca skrin dan papan kekunci.
Jadi, kita harus sedar tentang perkara itu. Ia adalah konvensional untuk meletakkan label di sebelah kanan input untuk kotak semak dan butang radio. Ini boleh dilakukan dengan meletakkan label selepas input dalam HTML, memastikan perlawanan DOM dan visual.
Sama ada input ditulis dari awal atau dihasilkan dengan perpustakaan, adalah idea yang baik untuk memeriksa kerja anda menggunakan pembaca skrin. Ini adalah untuk memastikan bahawa:
Sejak beberapa tahun kebelakangan ini, saya telah menggunakan perpustakaan JavaScript, seperti Downshift, untuk membina elemen bentuk kompleks seperti autocomplete atau comboboxes di atas yang asli HTML, seperti input atau pemilihan. Kebanyakan perpustakaan membuat unsur -unsur kompleks ini boleh diakses dengan menambahkan atribut ARIA dengan JavaScript.
Walau bagaimanapun, manfaat unsur -unsur HTML asli yang dipertingkatkan menggunakan JavaScript benar -benar hilang jika JavaScript dipecahkan atau dilumpuhkan, menjadikannya tidak dapat diakses. Oleh itu, semak ini dan berikan alternatif yang diberikan oleh pelayan, tanpa javascript sebagai sandaran yang selamat.
Semak ujian borang asas ini untuk menentukan bagaimana input dan label atau legenda sahabatnya harus ditulis dan diumumkan oleh pembaca skrin yang berbeza.
Menyambungkan label dan input adalah penting, tetapi sama pentingnya adalah menjaga label kelihatan. Mengklik atau mengetuk label yang kelihatan memfokuskan rakan inputnya. Ini adalah tingkah laku HTML asli yang memberi manfaat kepada sejumlah besar orang.
Bayangkan label yang ingin dengan bangga menunjukkan hubungannya dengan inputnya:
Yang mengatakan, akan ada masa apabila reka bentuk memerlukan label tersembunyi. Oleh itu, jika label mesti disembunyikan, adalah penting untuk melakukannya dengan cara yang boleh diakses. Kesilapan yang biasa adalah menggunakan paparan: Tiada atau penglihatan: Tersembunyi untuk menyembunyikan label. CSS ini memaparkan sifat sepenuhnya menyembunyikan elemen - bukan sahaja secara visual tetapi juga dari pembaca skrin.
Pertimbangkan menggunakan kod berikut untuk menyembunyikan label secara visual:
/* Untuk unsur-unsur yang tidak dapat difokuskan. Untuk elemen yang fokus secara asli */ / * Gunakan .visually tersembunyi: tidak (: fokus): tidak (: aktif) */ .visually tersembunyi { lebar sempadan: 0! Penting; klip: rect (1px, 1px, 1px, 1px)! Penting; Ketinggian: 1px! Penting; Limpahan: Tersembunyi! Penting; Padding: 0! Penting; Kedudukan: Mutlak! Penting; White-Space: Nowrap! Penting; lebar: 1px! Penting; }
Kitty Giraudel menerangkan secara mendalam bagaimana untuk menyembunyikan kandungan secara bertanggungjawab.
Untuk memelihara dan mengekalkan hubungan yang sihat antara input dan label, ada beberapa perkara yang tidak perlu dilakukan ketika memasangkannya. Mari kita masuk ke dalam apa dan bagaimana untuk mencegahnya.
Terdapat beberapa jenis input yang tidak disokong dalam beberapa pelayar desktop yang lebih tua. Sebagai contoh, input yang Type = "Tarikh" tidak disokong dalam Internet Explorer (IE) 11, atau bahkan di Safari 14 1 (dikeluarkan September 2020). Input seperti ini jatuh ke jenis = "teks". Jika input tarikh tidak mempunyai label yang jelas, dan ia secara automatik jatuh ke input teks dalam pelayar yang lebih tua, orang mungkin keliru.
Inilah sebab mengapa atribut tempat letak pada input tidak boleh digunakan sebagai pengganti label:
Pemegang letak adalah seperti kawan yang muncul apabila semuanya sempurna, tetapi hilang apabila anda memerlukannya. Sepasang input dengan label yang bagus dan kontras tinggi. Label tidak flaky dan setia kepada input 100% masa.
Kumpulan Nielsen Norman mempunyai artikel yang mendalam yang menjelaskan mengapa ruang letak dalam bidang bentuk berbahaya.
Apabila tiada label hadir, beberapa pembaca skrin akan mencari teks bersebelahan dan mengumumkannya. Ini adalah pendekatan hit-and-miss kerana mungkin pembaca skrin tidak akan menemui sebarang teks untuk diumumkan.
Sampel kod di bawah datang dari laman web sebenar. Label telah digantikan dengan elemen yang tidak disambungkan secara semantik ke input.
<dana> <span> nombor kad </span> <dana> <input type="text" value="" name="cardNumber" maxlength="40"> </dana></dana>
Kod di atas harus ditulis semula untuk memastikan kebolehcapaian dengan menggantikan rentang dengan label dengan untuk = "CardNumber" di atasnya. Ini adalah penyelesaian yang paling mudah dan mantap yang memberi manfaat kepada kebanyakan orang.
Walaupun label boleh digantikan dengan rentang yang mempunyai ID dengan nilai yang sepadan dengan atribut Aria-Labelledby input, orang tidak akan dapat mengklik rentang untuk memfokuskan input dengan cara yang sama label membenarkan. Ia adalah yang terbaik untuk memanfaatkan kuasa unsur-unsur HTML asli dan bukannya mencipta semula mereka. Kisah cinta antara input asli dan elemen label tidak perlu ditulis semula! Ia hebat seperti.
Hanya teks biasa yang perlu dimasukkan ke dalam label. Elakkan memasukkan perkara seperti tajuk, atau elemen interaktif seperti pautan. Tidak semua pembaca skrin akan mengumumkan label dengan betul jika ia mengandungi sesuatu selain teks biasa. Juga, jika seseorang mahu memfokuskan input dengan mengklik labelnya, tetapi label itu mengandungi pautan, mereka boleh mengklik pautan secara tidak sengaja.
Saya selalu mendapati bahawa contoh kehidupan sebenar membantu saya memahami sesuatu dengan betul. Saya mencari web dan mendapati contoh label dan input dari perpustakaan komponen dan laman web yang popular. Di bawah ini, saya menerangkan di mana unsur -unsur jatuh pendek dan bagaimana ia dapat diperbaiki untuk memastikan pasangan yang lebih baik.
MATTERUI adalah perpustakaan komponen React berdasarkan sistem reka bentuk Google. Ia termasuk komponen input teks dengan corak label terapung yang telah menjadi popular untuk banyak pereka dan pemaju:
Mengklik pada input terasa lancar dan kelihatan hebat. Tetapi itulah masalahnya. Kualitinya kebanyakannya kulit dalam.
Pada masa menulis jawatan ini, beberapa isu yang saya dapati dengan komponen ini termasuk:
Adam Silver juga menjelaskan mengapa label terapung bermasalah dan mendapat kritikan terperinci mengenai reka bentuk input teks bahan.
Laman web HuffPost mempunyai artikel yang mengandungi borang langganan surat berita:
Pada masa menulis postingan blog ini, input e -mel yang digunakan oleh HuffPost dapat mendapat manfaat daripada beberapa penambahbaikan:
Sebilangan orang yang mengejutkan berjuang untuk memasukkan maklumat ke dalam input yang tidak dibina dengan baik. Senarai itu termasuk orang yang mempunyai kecacatan kognitif, motor dan fizikal, gangguan spektrum autisme, kecederaan otak, dan penglihatan yang lemah. Orang lain yang berjuang termasuk mereka yang tergesa -gesa, pada sambungan yang buruk, pada peranti kecil, pada peranti lama, dan tidak dikenali dengan bentuk digital, antara yang lain.
Di samping itu, terdapat banyak sebab mengapa JavaScript mungkin memecahkan atau dimatikan dalam penyemak imbas, yang bermaksud input menjadi tidak berfungsi atau tidak boleh diakses sepenuhnya. Terdapat juga orang yang mampu melihat laman web tetapi yang boleh memilih untuk menggunakan papan kekunci bersama dengan pembaca skrin.
Mesej yang saya ingin dapatkan ialah label gembira dan pasangan input adalah penting . Tidak kira jika borang anda cantik jika tidak dapat digunakan. Saya boleh bertaruh bahawa hampir semua orang lebih suka mengisi bentuk yang hodoh tetapi mudah digunakan daripada yang cantik yang menyebabkan masalah.
Saya ingin mengucapkan terima kasih kepada orang -orang berikut kerana membantu saya dengan jawatan ini: Eric Eggert, Adam Silver, Dion Dajka, dan Kitty Giraudel. Pengetahuan kebolehcapaian gabungan mereka adalah kekuatan yang harus diperhitungkan!
Atas ialah kandungan terperinci Input dan Label HTML: Kisah Cinta. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!