Rumah >hujung hadapan web >tutorial css >Tweak akhir gaya pengesahan

Tweak akhir gaya pengesahan

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-17 18:07:08703semak imbas

Untuk memaksimumkan kefungsian sambil menambah gaya yang tiada, ingat prinsip utama ini: Jangan anggap.

Ini bermakna kami boleh menggunakan pembolehubah CSS untuk pelapik relatif, jidar, jidar dan warna, tetapi kami tidak akan menentukan rupa kotak pilihan. Itu keputusan penggayaan peringkat projek, bukan keputusan khusus elemen. (Sesetengah sistem reka bentuk, seperti Reka Bentuk Bahan, sangat menggayakan setiap elemen, menghalang penggunaan semula komponen individu.)

Penggayaan Kotak Semak

Untuk kotak pilihan, hanya tukar kotak pilihan dan labelkan kedudukan. Biarkan reka bentuk projek keseluruhan mengendalikan penampilan kotak pilihan. Terdapat dua pendekatan: kaedah yang mudah dan yang lebih kompleks. Pendekatan kompleks menggunakan CSS seperti ini:

<code class="language-css">.cr-field {
  /* Target previous sibling */
  .cr-label:has(~ [type="checkbox"]) {
    /* Crucial: remove transform in all cases */
    transform: none !important;
    inset-block-start: 0;
    inset-inline-start: 0;
    padding-inline-start: 1.8rem;
    position: relative;
    display: inline-block;
    background: none;
    cursor: pointer;
  }

  .cr-input[type="checkbox"] {
    position: absolute;
    inset-inline-start: 0;
  }
}</code>

Penyelesaian yang lebih mudah melibatkan secara eksplisit memberikan sifat jenis baharu kepada cr-field:

<code class="language-html"><!-- input.partial -->
<div class="cr-field cr-checkbox">
  <!-- ... -->
</div></code>

Kemudian, gunakan CSS yang kurang kompleks ini:

<code class="language-css">.cr-field.cr-checkbox {
  .cr-label {
    /* Same as above */
  }
  .cr-input {
    /* Same as above */
  }
  .cr-feedback {
    margin-block-start: 0;
    float: none;
  }
  .cr-required {
    position: static;
  }
}</code>

Pemilih yang lebih ringkas ini memberikan lebih fleksibiliti untuk menggayakan elemen lain seperti asterisk yang diperlukan, teks bantuan dan mesej maklum balas. Kadangkala, pendekatan yang kurang rumit adalah lebih baik.

Validation style final tweaks

Mengatasi Kes Edge

Satu senario melibatkan asterisk yang diperlukan yang dikaburkan, diposisikan paling kanan. Tanpa mengubah komponen pustaka atau CSS dikongsi, kami boleh meningkatkan keterlihatannya dengan menggayakan bekasnya:

<code class="language-css">/* Set container width to c-5 and display as block */</code>

Validation style final tweaks

Ini melibatkan:

  1. Menetapkan lebar bekas kepada peratusan yang diingini dan menukar paparannya kepada block (Komponen sudut lalai kepada contents).
  2. Melaraskan lebar komponen dalam kepada 50% setiap satu.
  3. Mengemas kini mesej ralat kepada "Tambah tarikh pada masa hadapan", merangkumi kedua-dua tarikh tamat tempoh dan peraturan nilai yang diperlukan.

Penggayaan Kotak Semak Tersuai

Projek selalunya mempunyai gaya kotak pilihan yang unik. Menggunakan CSS sedia ada, mari kita gayakan kotak pilihan menggunakan contoh MDN:

<code class="language-css">.gr-something .cr-field.cr-checkbox {
  .cr-input {
    /* Remove default appearance */
    appearance: none;
    width: 44px;
    height: 24px;
    border-radius: 12px;
    transition: all 0.4s;
  }
  /* ...rest of MDN-based styles... */
}</code>

Validation style final tweaks

Ini menunjukkan bahawa mengelakkan pemilih yang terlalu kompleks menghalang konflik CSS.

Medan Tersembunyi dan Auto-isi

Input tersembunyi memudahkan pengesahan. Jika dalam cr-field, pengesahan adalah mudah. Untuk input tersembunyi di luar konteks ini, kami memperkenalkan atribut dan gaya type="hidden" dengan sewajarnya:

<code class="language-css">.cr-field.cr-hidden {
  .cr-label {
    display: none;
  }
  .cr-input[required] ~ .cr-required {
    display: none;
  }
  .cr-feedback {
    float: none;
    margin-block-start: 0;
    margin-inline-start: 0;
  }
}</code>

Validation style final tweaks

Untuk medan yang diisi secara automatik, kami menggunakan type="static" untuk mengelakkan pertindihan label pemegang tempat:

<code class="language-css">.cr-field {
  /* Target previous sibling */
  .cr-label:has(~ [type="checkbox"]) {
    /* Crucial: remove transform in all cases */
    transform: none !important;
    inset-block-start: 0;
    inset-inline-start: 0;
    padding-inline-start: 1.8rem;
    position: relative;
    display: inline-block;
    background: none;
    cursor: pointer;
  }

  .cr-input[type="checkbox"] {
    position: absolute;
    inset-inline-start: 0;
  }
}</code>

Validation style final tweaks

Kesimpulan

Matlamat kami ialah: input HTML asli, peraturan pengesahan minimum, bentuk Sudut yang fleksibel, penggayaan berasaskan atribut, penyerahan borang longgar dan penggayaan minimum yang boleh diganti. Kami percaya kami telah mencapai objektif ini.

Validation style final tweaks

Atas ialah kandungan terperinci Tweak akhir gaya pengesahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn