Konsiletoj sentas kiel la plej malgranda UI-problemo, kiun vi povas havi. Ili estas etaj kaj kutime kaŝitaj. Kiam iu demandas kiel konstrui unu, la tradicia respondo preskaŭ ĉiam revenas uzante iun JavaScript-bibliotekon. Kaj dum longa tempo, tio estis la prudenta konsilo. Ankaŭ mi sekvis ĝin. Sur la surfaco, konsileto estas simpla. Ŝvebi aŭ fokusigi elementon, montru skatolon kun iom da teksto, poste kaŝu ĝin kiam la uzanto malproksimiĝas. Sed post kiam vi sendas unu al realaj uzantoj, la randoj komencas montriĝi. Uzantoj de klavaro Alklaku la ellasilon, sed neniam vidu la konsileton. Ekranlegiloj anoncas ĝin dufoje, aŭ tute ne. La konsileto flagras kiam vi movas la muson tro rapide. Ĝi interkovras enhavon sur pli malgrandaj ekranoj. Premante Esc ne fermas ĝin. Fokuso perdiĝas. Kun la tempo, mia konsila kodo kreskis al io, kion mi vere ne volis posedi plu. Eventaj aŭskultantoj amasiĝis. Ŝvebi kaj fokuso devis esti pritraktitaj aparte. Eksteraj klakoj bezonis specialajn kazojn. ARIA-atributoj devis esti sinkronigitaj permane. Ĉiu eta riparo aldonis alian tavolon de logiko. Bibliotekoj helpis, sed ili estis ankaŭ pli kiel nigraj skatoloj, kiujn mi prilaboris, anstataŭ plene kompreni, kio okazis malantaŭ la kulisoj. Tio estis kio puŝis min rigardi la pli novan Popover API. Mi volis vidi kio okazus se mi rekonstruus ununuran konsileton uzante la denaskan modelon de la retumilo sen la helpo de biblioteko. Dum ni komencas, indas noti, ke, kiel kun iu ajn nova funkcio, ekzistas iuj aferoj kun ĝi, kiuj ankoraŭ estas gladitaj. Dirite, ĝi nuntempe ĝuas bonegan retumilon, kvankam ekzistas pluraj pecoj al la ĝenerala API, kiuj fluas. Intertempe valoras rigardi Caniuse. La "Malnova" Konsileto Antaŭ la Popover API, uzado de konsileto-biblioteko ne estis ŝparvojo. Ĝi estis la defaŭlta. Retumiloj ne havis indiĝenan koncepton de konsileto kiu funkciis trans muso, klavaro kaj helpteknologio. Se vi zorgis pri ĝusteco, via sola eblo estis uzi bibliotekon, kaj ĝuste tion mi faris. Je alta nivelo, la ŝablono ĉiam estis la sama: ellasilelemento, kaŝita ilotipelemento, kaj JavaScript por kunordigi la du.

La biblioteko pritraktis la drataron kiu permesis al la elemento montri sur ŝvebado aŭ fokuso, kaŝi sur malklariĝo aŭ musforiro, kaj repoziciigi/regrandigi sur rullibro.

Kun la tempo, la konsileto povus fariĝi delikata. Malgrandaj ŝanĝoj portis riskon. Malgrandaj korektoj kaŭzis regresojn. Pli malbone, aldoni novajn konsiletojn heredis la saman kompleksecon. Aferoj teknike funkciis, sed neniam sentiĝis aranĝitaj aŭ kompletaj. Tio estis la stato kiam mi decidis rekonstrui la konsileton per la denaska Popover API de la retumilo. La Momento Mi Provis La Popover API Mi ne ŝanĝis al uzado de la Popover API ĉar mi volis eksperimenti kun io nova. Mi ŝanĝis ĉar mi estis laca de konservi konsilan konduton, kiun mi kredis, ke la retumilo jam devus kompreni. Mi estis skeptika komence. La plej multaj novaj TTT-API-oj promesas simplecon, sed tamen postulas gluon, rando-kazan uzadon aŭ logikon, kiu trankvile rekreas la saman kompleksecon, kiun vi provis eskapi. Do, mi provis la Popover API en la plej malgranda maniero ebla. Jen kiel tio aspektis:

Ĉi tiu butono ekigas helpan konsileton.

1. La Klavaro "Nur Funkcias" Klavarsubteno dependis de pluraj tavoloj viciĝantaj ĝuste: fokuso devis ekigi la konsileton, malklarigi devis kaŝi ĝin, Esc devis esti kabligita permane, kaj tempo gravis. Se vi maltrafis unu randan kazon, la konsileto aŭ restus malfermita tro longe aŭ malaperus antaŭ ol ĝi povus esti legita. Kun la popover-atributo agordita al aŭtomata aŭ manlibro, la retumilo transprenas la bazaĵojn: Tab kaj Shift+Tab kondutas normale, Esc fermas la konsileton ĉiufoje, kaj neniuj kromaj aŭskultantoj estas bezonataj.

Helpema klarigo

Kio malaperis de mia kodbazo estis tutmondaj klavsubtraktiloj, Esc-specifa puriglogiko, kaj ŝtatkontroloj dum klavarnavigado. La klavara sperto ĉesis esti io, kion mi devis konservi, kaj ĝi fariĝis retumila garantio. 2. Ekranlegilo Antaŭvidebleco Ĉi tio estis laplej granda plibonigo. Eĉ kun zorgema ARIA laboro, la konduto variis, kiel mi skizis antaŭe. Ĉiu eta ŝanĝo sentis riska. Uzi popover kun taŭga rolo aspektas kaj sentiĝas multe pli stabila kaj antaŭvidebla koncerne kio okazos: < div popover = " manlibro " rolo = " konsileto " > Helpema klarigo

Kaj jen alia venko: Post la ŝaltilo, Lighthouse ĉesis marki malĝustajn ARIA-ŝtatajn avertojn por la interagado, plejparte ĉar ne plu ekzistas kutimaj ARIA-ŝtatoj por ke mi hazarde malĝustiĝu.

3. Fokuso-Administrado Fokuso antaŭe estis delikata. Antaŭe, mi havis regulojn kiel: lasu fokusan ellasilon montri konsileton, movi fokuson en konsileton kaj ne fermu, malklarigu ellasilon kiam ĝi estas tro proksima, kaj fermu konsileton kaj restarigi fokuson permane. Ĉi tio funkciis ĝis ĝi ne faris. Kun la Popover API, la retumilo devigas pli simplan modelon kie fokuso povas pli nature moviĝi en la popover. Fermi la popover revenas fokuson al la ellasilo, kaj ne ekzistas nevideblaj fokuskaptiloj aŭ perditaj fokusmomentoj. Kaj mi ne aldonis fokusan restarigan kodon; Mi forigis ĝin.

Konkludo La Popover API signifas, ke konsiletoj ne plu estas io, kion vi simulas. Ili estas io, kion la retumilo komprenas. Malfermo, fermo, klavarkonduto, Eskap-traktado kaj granda parto de alirebleco nun venas de la platformo mem, ne de ad-hoc JavaScript. Tio ne signifas ke ilbibliotekoj estas malnoviĝintaj ĉar ili ankoraŭ havas sencon por kompleksaj dezajnaj sistemoj, peza personigo aŭ heredaj limoj, sed la defaŭlto ŝanĝiĝis. Por la unua fojo, la plej simpla konsileto ankaŭ povas esti la plej ĝusta. Se vi scivolas, provu ĉi tiun eksperimenton: Simple anstataŭigu nur unu konsileton en via produkto per la Popover API, ne reverku ĉion, ne migru tutan sistemon, kaj simple elektu unu kaj vidu, kio malaperas de via kodo. Kiam la platformo donas al vi pli bonan primitivon, la venko ne estas nur malpli da linioj de JavaScript, sed estas malpli da aferoj, pri kiuj vi devas zorgi. Rigardu la plenan fontkodon en mia GitHub-deponejo. Plia Legado Por pli profundaj plonĝoj en popovers kaj rilataj API-oj:

"Poppin' In", Geoff Graham "Klarigante la Rilaton Inter Popovers kaj Dialogoj", Zell Liew "Kio estas popover=sugesto?", Una Kravets "Alvokantoj-Komandoj", Daniel Schwarz "Kreante Aŭtomate-Ferman Sciigon kun HTML Popover", Preethi Malfermu UI Popover API Explainer "Frumu (super) la Balonojn", John Rhea "CSS Anchor Positioning", Juan Diego Rodríguez

MDN ankaŭ ofertas ampleksan teknikan dokumentaron por la Popover API.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free