cari
Rumahhujung hadapan webtutorial cssButang hantu dengan kesedaran arah dalam CSS

Butang hantu dengan kesedaran arah dalam CSS

Anda mungkin pernah melihat butang hantu? Mereka dicirikan oleh latar belakang telus dan latar belakang dipenuhi dengan warna pepejal apabila tetikus melayang. Majalah Smashing mempunyai artikel mengenai topik ini. Artikel ini akan membina butang hantu, tetapi bahagian ini agak mudah. Menariknya dan rumit, kami akan mempunyai animasi mengisi butang hantu bermula pada hover tetikus.

Berikut adalah contoh butang hantu asas:

Dalam kebanyakan kes, peralihan warna latar belakang ke warna pepejal. Sesetengah reka bentuk akan mengisi butang dari kiri ke kanan, atas ke bawah, dan lain -lain untuk meningkatkan kesan visual. Sebagai contoh, isi dari kiri ke kanan:

Berikut adalah masalah pengalaman pengguna yang kecil. Sekiranya tetikus melayang di pinggir kawasan yang diisi, ia akan merasakan sesuatu yang salah. Pertimbangkan contoh ini, butang mengisi dari kiri, semasa anda melayang dari kanan.

Adalah lebih baik untuk mempunyai butang mengisi dari titik hover awal.

Jadi, bagaimana kita memberikan persepsi arah butang? Intuisi awal anda mungkin menggunakan JavaScript, tetapi kami boleh melakukannya dengan CSS dan beberapa tag tambahan.

Bagi mereka yang ingin melihat hasilnya dengan cepat, berikut adalah beberapa butang hantu yang dilaksanakan di CSS tulen!

Mari kita bina langkah demi langkah. Semua kod boleh didapati dalam koleksi Codepen ini.

Buat asas

Mari kita mulakan dengan asas -asas membuat butang hantu. Penandaan adalah mudah.

 <button>Boo!</button>

Pelaksanaan CSS kami akan menggunakan sifat adat CSS. Ini menjadikan penyelenggaraan lebih mudah dan juga memudahkan penyesuaian melalui sifat sebaris.

 butang {
  --borderwidth: 5;
  --BoxShadowDepth: 8;
  -buttoncolor: #f00;
  --FONTSIZE: 3;
  --HorizontalPadding: 16;
  --verticalpadding: 8;

  Latar Belakang: Telus;
  Sempadan: calc (var (-borderWidth) * 1px) var pepejal (-ButtonColor);
  box-shadow: calc (var (-boxshadowdepth) * 1px) calc (var (-boxshadowdepth) * 1px) 0 #888;
  Warna: var (-ButtonColor);
  kursor: penunjuk;
  saiz font: calc (var (-fontsize) * 1rem);
  Font-Weight: Bold;
  garis besar: telus;
  padding: calc (var (-verticalpadding) * 1px) calc (var (-horizontalpadding) * 1px);
  Peralihan: Box-shadow 0.15s mudah;
}

butang: hover {
  box-shadow: calc (var (-boxshadowdepth) / 2 * 1px) calc (var (-boxshadowdepth) / 2 * 1px) 0 #888;
}

butang: aktif {
  box-shadow: 0 0 0 #888;
}

Letakkan bersama dan kami mendapat:

sangat bagus! Kami mempunyai butang dan kesan hover, tetapi belum ada kesan mengisi. Seterusnya mari tambahkan kesan mengisi.

Tambah isi

Untuk melakukan ini, kami membuat beberapa elemen untuk memaparkan keadaan mengisi butang hantu. Caranya ialah menggunakan clip-path untuk menanam unsur-unsur ini dan menyembunyikannya. Kita boleh memaparkannya pada hover dengan menukar clip-path .

Mereka mesti diselaraskan dengan butang induk. Pembolehubah CSS kami akan sangat membantu di sini.

Pada mulanya, kita mungkin mempertimbangkan menggunakan unsur-unsur pseudo. Walau bagaimanapun, untuk setiap arah, bilangan elemen pseudo tidak mencukupi. Mereka juga mempengaruhi akses ... lebih lanjut mengenai yang kemudian.

Mari kita mulakan dengan menambah padding kiri-ke-kanan. Pertama, mari tambahkan satu<span></span> elemen. Harus<span></span> Elemen perlu mempunyai kandungan teks yang sama seperti butang.

<button>
  <span>Boo!</span>
  Boo!
</button>

Sekarang kita perlu<span></span> Unsur -unsur diselaraskan dengan butang. Pembolehubah CSS kami akan melakukan kebanyakan kerja.

 rentang butang {
  Latar Belakang: var (-ButtonColor);
  Sempadan: calc (var (-borderWidth) * 1px) var pepejal (-ButtonColor);
  bawah: calc (var (-borderWidth) * -1px);
  warna: var (-bg, #fafafa);
  kiri: calc (var (-borderWidth) * -1px);
  padding: calc (var (-verticalpadding) * 1px) calc (var (-horizontalpadding) * 1px);
  Kedudukan: Mutlak;
  kanan: calc (var (-borderWidth) * -1px);
  atas: calc (var (-borderWidth) * -1px);
}

Akhirnya, kami akan<span></span> Unsur ini dipotong di luar pandangan dan menambah peraturan untuk memaparkannya pada hover dengan mengemas kini tanaman. Menentukan peralihan akan menambah icing pada kek.

 rentang butang {
  --clip: inset (0 100% 0 0);
  -WebKit-klip-path: var (-klip);
  klip-laluan: var (-klip);
  Peralihan: Clip-Path 0.25s Ease, -WebKit-Clip-Path 0.25S Ease;
  / * ... gaya div yang tinggal */
}

butang: hover span {
  --clip: inset (0 0 0 0);
}

Tambah kesedaran arah

Jadi, bagaimana kita menambah kesedaran arah? Kami memerlukan empat elemen. Setiap elemen akan bertanggungjawab untuk mengesan titik kemasukan hover. Menggunakan clip-path , kita boleh membahagikan kawasan butang ke dalam empat bahagian.

Mari tambahkan empat ke butang<span></span> unsur -unsur dan kedudukan mereka untuk mengisi butang.

<button>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  Boo!
</button>
rentang butang {
  Latar Belakang: Var (-BG);
  bawah: calc (var (-borderWidth) * -1px);
  -WebKit-klip-path: var (-klip);
  klip-laluan: var (-klip);
  kiri: calc (var (-borderWidth) * -1px);
  Kelegapan: 0.5;
  Kedudukan: Mutlak;
  kanan: calc (var (-borderWidth) * -1px);
  atas: calc (var (-borderWidth) * -1px);
  Z-indeks: 1;
}

Kami boleh mencari setiap elemen dan menetapkan tanaman dan warna menggunakan pembolehubah CSS.

 Butang rentang: nth-of-type (1) {
  --bg: #00F;
  --LIP: Polygon (0 0, 100% 0, 50% 50%, 50% 50%);
}
Butang rentang: nth-of-type (2) {
  --bg: #f00;
  --LIP: Polygon (100% 0, 100% 100%, 50% 50%);
}
Butang rentang: nth-of-type (3) {
  --BG: #008000;
  --LIP: Polygon (0 100%, 100%100%, 50%50%);
}
Butang rentang: nth-of-type (4) {
  --BG: #800080;
  --LIP: Polygon (0 0, 0 100%, 50%50%);
}

Sangat sejuk. Untuk menguji ini, mari kita ubah kelegapan semasa melayang.

 Butang rentang: nth-of-type (1): hover,
Butang rentang: nth-of-type (2): hover,
Butang rentang: nth-of-type (3): hover,
Butang rentang: nth-of-type (4): hover {
  Kelegapan: 1;
}

Oh, ada soalan di sini. Jika kita masuk dan berlegar di atas satu bahagian dan kemudian hover ke atas yang lain, arah pengisian akan berubah. Ini tidak kelihatan betul. Untuk menyelesaikan masalah ini, kita boleh menetapkan z-index dan clip-path pada hover supaya sebahagian ruang diisi.

 Butang rentang: nth-of-type (1): hover,
Butang rentang: nth-of-type (2): hover,
Butang rentang: nth-of-type (3): hover,
Butang rentang: nth-of-type (4): hover {
  --LIP: Polygon (0 0, 100% 0, 100% 100%, 0 100%);
  Kelegapan: 1;
  Z-indeks: 2;
}

Menggabungkan bersama

Kami tahu bagaimana untuk membuat animasi mengisi, dan kami tahu bagaimana untuk mengesan arah. Bagaimana kita menggabungkan kedua -duanya? Gunakan kombo pada tahap yang sama!

Melakukan ini bermakna apabila kita melayang segmen, kita boleh memaparkan elemen pengisian tertentu.

Pertama, mari kita kemas kini tag.

<button>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <b>Boo!</b>
  <b>Boo!</b>
  <b>Boo!</b>
  <b>Boo!</b>
  Boo!
</button>

Sekarang, kita boleh mengemas kini CSS. Merujuk kepada padding kiri-ke kanan kami, kami boleh menggunakan semula gaya. Kami hanya perlu menetapkan clip-path khusus untuk setiap elemen. Saya mengendalikannya dalam susunan yang sama seperti beberapa nilai atribut. Unsur anak pertama adalah bahagian atas, yang kedua adalah hak, dan sebagainya.

 Butang B: Nth-of-Type (1) {
  --clip: inset (0 0 100% 0);
}
Button B: Nth-of-Type (2) {
  --clip: inset (0 0 0 100%);
}
Butang B: Nth-of-Type (3) {
  --clip: inset (100% 0 0 0);
}
Butang B: Nth-of-Type (4) {
  --clip: inset (0 100% 0 0);
}

Langkah terakhir ialah mengemas kini clip-path elemen yang berkaitan apabila melayang segmen pasangan.

 Butang rentang: nth-of-type (1): hover ~ b: nth-of-type (1),
Butang rentang: nth-of-type (2): hover ~ b: nth-of-type (2),
Butang rentang: nth-of-type (3): hover ~ b: nth-of-type (3),
Butang rentang: nth-of-type (4): hover ~ b: nth-of-type (4) {
  --clip: inset (0 0 0 0);
}

Baiklah! Kami mendapat butang hantu CSS tulen dengan kesedaran arah.

Kebolehcapaian

Dalam keadaan semasa, butang tidak boleh diakses.

Unsur -unsur tambahan ini tidak banyak membantu, kerana pembaca skrin mengulangi kandungan empat kali. Kita perlu menyembunyikan unsur -unsur ini dari pembaca skrin.

<button>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <b aria-hidden="true">Boo!</b>
  <b aria-hidden="true">Boo!</b>
  <b aria-hidden="true">Boo!</b>
  <b aria-hidden="true">Boo!</b>
  Boo!
</button>

Tiada lagi kandungan pendua.

Itu sahaja!

Dengan hanya beberapa penandaan tambahan dan beberapa helah CSS, kita boleh membuat butang hantu dengan kesedaran arah. Menggunakan preprocessor atau menggabungkan komponen dalam aplikasi anda, anda tidak perlu menulis semua HTML.

Ini adalah demonstrasi menggunakan pembolehubah CSS inline untuk mengawal warna butang.

Output yang disemak semula ini mengekalkan imej asal dan menggunakan ungkapan yang lebih ringkas dan bervariasi sambil mengekalkan makna teras teks asal. Ia juga menangani isu aksesibiliti yang disebutkan dalam artikel asal.

Atas ialah kandungan terperinci Butang hantu dengan kesedaran arah dalam CSS. 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
Di manakah 'Langgan Podcast' pautan ke?Di manakah 'Langgan Podcast' pautan ke?Apr 16, 2025 pm 12:04 PM

Untuk sementara waktu, iTunes adalah anjing besar dalam podcasting, jadi jika anda mengaitkan "Langgan Podcast" untuk suka:

Kepelbagaian enjin pelayarKepelbagaian enjin pelayarApr 16, 2025 pm 12:02 PM

Kami kehilangan opera ketika mereka pergi Chrome pada tahun 2013. Sama dengan Edge ketika ia juga menjadi Chrome awal tahun ini. Mike Taylor memanggil perubahan ini "menurun

Pertimbangan UX untuk Perkongsian WebPertimbangan UX untuk Perkongsian WebApr 16, 2025 am 11:59 AM

Dari laman web Trashy Clickbait hingga paling banyak penerbitan, butang saham telah lama di mana -mana di seluruh web. Namun ia boleh dikatakan bahawa ini

Berita Platform Mingguan: Apple Menggunakan Komponen Web, Rendering HTML Progresif, Sumber Kritikal SendiriBerita Platform Mingguan: Apple Menggunakan Komponen Web, Rendering HTML Progresif, Sumber Kritikal SendiriApr 16, 2025 am 11:55 AM

Dalam roundup minggu ini, Apple masuk ke dalam komponen web, bagaimana Instagram adalah skrip insta-loading, dan beberapa makanan untuk difikirkan untuk sumber kritikal sendiri.

Pathspec git dan cara menggunakannyaPathspec git dan cara menggunakannyaApr 16, 2025 am 11:53 AM

Apabila saya melihat melalui dokumentasi arahan git, saya perhatikan bahawa banyak daripada mereka mempunyai pilihan untuk. Saya pada mulanya berpendapat bahawa ini hanya

Pemetik warna untuk gambar produkPemetik warna untuk gambar produkApr 16, 2025 am 11:49 AM

Bunyi seperti masalah yang sukar tidak? Kami sering tidak mempunyai tembakan produk dalam beribu -ribu warna, supaya kita dapat membalikkannya. Kami juga tidak

Mod gelap bertukar -tukar dengan reaksi dan temaMod gelap bertukar -tukar dengan reaksi dan temaApr 16, 2025 am 11:46 AM

Saya suka apabila laman web mempunyai pilihan mod gelap. Mod gelap menjadikan laman web lebih mudah bagi saya untuk membaca dan membantu mata saya berasa lebih santai. Banyak laman web, termasuk

Beberapa tangan dengan elemen dialog HTMLBeberapa tangan dengan elemen dialog HTMLApr 16, 2025 am 11:33 AM

Ini saya melihat elemen HTML untuk kali pertama. Saya telah menyedarinya untuk seketika, tetapi Haven ' t mengambilnya untuk putaran lagi. Ia mempunyai cukup keren dan

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)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft