cari
Rumahhujung hadapan webtutorial cssJangan Bergantung pada Nilai Atribut Lalai Untuk Menggayakan Komponen Web

Jangan salah faham, saya tidak mempunyai apa-apa yang bertentangan dengan nilai lalai untuk API komponen web. Masalah saya dengan mereka ialah mereka tidak boleh dipercayai.

Masalahnya

Pendekatan biasa untuk menyediakan senarai pilihan yang tersedia untuk API adalah menggunakan jenis gabungan TypeScript.

/** The display variant for the button */
@property({reflect: true})
variant: 'default' | 'solid' | 'ghost' = 'default';

Berikut ialah beberapa CSS asas untuk membuat variasi berfungsi.

:host {
  --accent-color: #0265dc;
}

button {
  cursor: pointer;
  padding: 0.5rem;
}

:host([variant='default']) button {
  border: solid 1px var(--accent-color);
  background-color: white;
  color: var(--accent-color);
}

:host([variant='solid']) button {
  border: solid 1px var(--accent-color);
  background-color: var(--accent-color);
  color: white;
}

:host([variant='ghost']) button {
  border: solid 1px transparent;
  background-color: transparent;
  color: var(--accent-color);
}

NOTA: Contoh kod menggunakan Lit, tetapi prinsip yang dibincangkan di sini boleh digunakan dengan mudah pada perpustakaan dan rangka kerja lain.

Cabarannya ialah elemen tersuai/komponen web boleh digunakan di mana-mana sahaja. Ia boleh disisipkan dalam DOM dalam rentetan, dalam bahasa sebelah pelayan seperti PHP, ia boleh dibuat dalam fungsi createElement JavaScript, atau bahkan dalam HTML standard. Apa yang saya dapat ialah tidak selalu ada cara "jenis-selamat" untuk memastikan atribut elemen tersuai ditetapkan dengan tepat. Oleh sebab itu, salah satu item dalam senarai semak PR perpustakaan komponen kami ialah:

✅ Atribut dan sifat berfungsi apabila ditetapkan, dinyahtetapkan dan ditetapkan dengan buruk.

Menguji API Kami

Memandangkan garis panduan ini, mari kita uji persediaan API di atas.

  • Set - semuanya kelihatan baik.
<my-button variant="default">Default Button</my-button>
<my-button variant="solid">Solid Button</my-button>
<my-button variant="ghost">My Button</my-button>

Don

  • Nyahtetapkan
    • tanpa set atribut ia berfungsi dengan baik kerana kami mempunyai nilai lalai dan ia dikonfigurasikan untuk mencerminkan atribut pada elemen apabila ia ditetapkan.
    • jika kita menetapkan sifat varian kepada tidak ditentukan, ia memecahkan gaya.
<!-- No attribute set -->
<my-button>No Attribute Button</my-button>

<!-- JSX example -->
<my-button variant="{undefined}">Unset Button</my-button>

Don

  • Ditetapkan dengan buruk - apabila kami menetapkan atribut varian kepada "sampah" ia juga akan rosak.
<my-button variant="rubbish">Rubbish Button</my-button>

Don

Anda boleh menguji contoh ini di sini:

Don

Membetulkan API

Cara paling mudah untuk membetulkannya ialah menjadikan gaya elemen butang sepadan dengan gaya lalai.

button {
  border: solid 1px var(--accent-color);
  background-color: white;
  color: var(--accent-color);
  cursor: pointer;
  padding: 0.5rem;
}

Kini kita boleh mengalih keluar kod untuk variasi lalai.

/* We can remove this */
:host([variant='default']) button {
  border: solid 1px var(--accent-color);
  background-color: white;
  color: var(--accent-color);
}

Untuk mengelakkan kekeliruan, anda boleh meninggalkan gaya dan menambah ulasan.

/* Styles for this variant are under the `button` element */
:host([variant='default']) { }

Mari kita juga mengemas kini TypeScript API untuk menjadikannya pilihan dan mengalih keluar nilai lalai.

/** The display variant for the button */
@property({ reflect: true })
variant?: 'default' | 'solid' | 'ghost';

Elemen kini berkelakuan secara konsisten jika nilai ditetapkan, tidak ditetapkan atau ditetapkan dengan buruk!

Don

Anda boleh melihat kod akhir di sini:

Don

Kesimpulan

Dengan mengalih keluar pergantungan pada nilai lalai, anda boleh mencipta API komponen web yang lebih berdaya tahan. Jika anda mesti mempunyai nilai lalai untuk komponen anda berfungsi dengan baik, pastikan anda menyemak artikel ini untuk mencipta komponen web yang berfungsi secara konsisten.

Atas ialah kandungan terperinci Jangan Bergantung pada Nilai Atribut Lalai Untuk Menggayakan Komponen Web. 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
Draggin ' dan Droppin ' dalam ReactDraggin ' dan Droppin ' dalam ReactApr 17, 2025 am 11:52 AM

Ekosistem React menawarkan kita banyak perpustakaan yang semuanya memberi tumpuan kepada interaksi seret dan penurunan. Kami mempunyai React-Dnd, React-Beautiful-Dnd,

Perisian CepatPerisian CepatApr 17, 2025 am 11:49 AM

Terdapat beberapa perkara yang saling berkaitan dengan perisian cepat sejak kebelakangan ini.

Kecerunan bersarang dengan klip latar belakangKecerunan bersarang dengan klip latar belakangApr 17, 2025 am 11:47 AM

Saya tidak boleh mengatakan saya menggunakan klip latar belakang semua yang kerap. Saya ' Tetapi saya diingatkan dalam jawatan oleh Stefan Judis,

Menggunakan RequestAnimationFrame dengan cangkuk ReactMenggunakan RequestAnimationFrame dengan cangkuk ReactApr 17, 2025 am 11:46 AM

Animasi dengan RequestAnimationFrame semestinya mudah, tetapi jika anda belum membaca dokumentasi React dengan teliti maka anda mungkin akan mengalami beberapa perkara

Perlu tatal ke bahagian atas halaman?Perlu tatal ke bahagian atas halaman?Apr 17, 2025 am 11:45 AM

Mungkin cara paling mudah untuk menawarkan kepada pengguna adalah pautan yang mensasarkan ID pada elemen. Begitu seperti ...

API terbaik (graphql) adalah salah satu yang anda tulisAPI terbaik (graphql) adalah salah satu yang anda tulisApr 17, 2025 am 11:36 AM

Dengar, saya bukan pakar GraphQL tetapi saya suka bekerja dengannya. Cara ia mendedahkan data kepada saya sebagai pemaju front-end cukup sejuk. Ia seperti menu

Berita Platform Mingguan: Bookmarket Jarak Teks, Menunggu Tahap Teratas, Penunjuk Memuatkan AMP BaruBerita Platform Mingguan: Bookmarket Jarak Teks, Menunggu Tahap Teratas, Penunjuk Memuatkan AMP BaruApr 17, 2025 am 11:26 AM

Pada minggu ini, roundup, sebuah bookmarklet yang berguna untuk memeriksa tipografi, menggunakan menunggu untuk mengamuk dengan cara modul JavaScript mengimport satu sama lain, ditambah Facebook ' s

Pelbagai kaedah untuk mengembangkan kotak semasa memelihara jejari sempadanPelbagai kaedah untuk mengembangkan kotak semasa memelihara jejari sempadanApr 17, 2025 am 11:19 AM

Saya baru -baru ini melihat perubahan yang menarik pada Codepen: apabila melayang pena di laman web, ada persegi panjang dengan sudut bulat yang berkembang di belakang.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)