O le fa'aaliga e toetoe lava tutusa i taimi uma, o se laulau fa'amatalaga i totonu o se koneteina e mafai ona ta'ai. O laina uma e iai se lisi o gaioiga, o se laʻititi laʻititi i lalo ma nisi o filifiliga, pei o Faʻatonu, Faʻalua, ma Aveese. E te fauina, e foliga mai e galue atoatoa i le vavae ese, ona tuʻu lea e se tasi i totonu o lena div scrollable ma malepelepe mea. Ua ou vaai i lenei pusa saʻo i codebases eseese e tolu: o le atigipusa, le faaputuga, ma le auivi, eseese uma. O le bug, e ui i lea, e matua tutusa lava. O le pa'u i lalo e tipi i le pito o le koneteina. Pe faʻaalia i tua o mea e tatau ona i lalo ifo. Pe galue lelei se'ia o'o i le tagata fa'aoga e ta'ai, ona tafetafea ai lea. E te aapa mo le z-index: 9999. O nisi taimi e fesoasoani, ae o isi taimi e matua leai lava se mea. O lena le tutusa o le faailoga muamua lea o loo tupu se mea e loloto atu. O le mafuaʻaga e toe foʻi mai ai ona e tolu faiga suʻesuʻe eseese o loʻo aʻafia ai, ma o le tele o tagata atinaʻe e malamalama i mea taʻitasi ae e le mafaufau i le mea e tupu pe a fetoʻai uma e tolu: faʻafefe, faʻapipiʻi tulaga, ma aofia ai poloka.

O le taimi lava e te malamalama ai pe faʻafefea ona fegalegaleai uma e tolu, o le faʻaletonu faiga e taofi lagona faʻafuaseʻi. O le mea moni, e mafai ona latou valoia. O Mea e Tolu e Mafua ai Lenei Se'i o tatou va'ava'ai au'ili'ili ia mea ta'itasi. Le Fa'afitauli o le Sova A e setiina le taumasuasua: natia, lolomi: ta'avale, po'o le sosolo: ta'avale i luga o se elemene, o le su'esu'ega o le a fa'apipi'i so'o se mea e o'o atu i tua atu o ona tuaoi, e aofia ai suli matua fa'atulagaina. .tusi-tusi { taumasuasua: ta'avale; maualuga: 300px; /* Ole mea lea e kiti ai le pa'ū, tu atoa */ }

.pa'u i lalo { tulaga: atoatoa; /* E le afaina -- o loo tipiina pea e le .scroll-container */ }

Na faateia a'u i le taimi muamua na ou tau ai i ai. Sa ou manatu i le tulaga: o le a tuʻuina atu se elemene e sola ese mai se koneteina. E leai. I le faʻatinoga, o lona uiga o se lisi faʻatulagaina atoatoa e mafai ona tipi ese e soʻo se tuaa e iai se tau e le o vaʻaia, e tusa lava pe le o lena tuaa o le lisi o loʻo i ai poloka. O le kilipa ma le fa'atulagaina o faiga eseese. E fa'afuase'i ona feto'ai i ni auala e foliga fa'afuase'i se'ia e malamalama uma i ai.

O se faʻataʻitaʻiga React e faʻaaoga ai le createPortal:

fa'aulufale mai { createPortal } mai 'react-dom'; fa'aulufale mai {useState, useEffect, useRef} mai le 'react';

galuega Pa'u i lalo({ anchorRef, isOpen, tamaiti }) { const [tulaga, setiPosition] = useState({pito i luga: 0, agavale: 0 });

useEffect(() => { afai (isOpen && anchorRef.current) { const rect = anchorRef.current.getBoundingClientRect(); SetPosition({ pito i luga: rect.bottom + window.scrollY, agavale: rect.left + window.scrollX, }); } }, [Open, anchorRef]);

afai (! isOpen) toe faafoi null;

toe fo'i createPortal(

, pepa.tino ); }

Ma, ioe, e le mafai ona tatou le amanaiaina le avanoa. O elemene fa'amau e fa'aalia i luga o le anotusi e tatau lava ona a'afia i le keyboard. Afai o le fa'atonuga taula'i e le masani ona alu i totonu o le pa'u fa'amaumau, e tatau ona e pulea e fa'aaoga ai le code. E taua foi le siakiina e le o nofo i luga o isi mea fesoʻotaʻiga e aunoa ma se auala e faʻateʻaina ai. E utia oe e lena i le su'ega keyboard. CSS Taula Tulaga: O fea ou te manatu o loʻo faʻaulu CSS Anchor Positioning o le itu lea e sili ona ou fiafia i ai i le taimi nei. Ou te leʻi mautinoa pe o le a le tele o faʻamatalaga na faʻaaogaina i le taimi muamua na ou tilotilo ai i ai. E fa'atagaina oe e fa'ailoa le sootaga i le va o le pa'u i lalo ma lona fa'aoso sa'o i le CSS, ma fa'atautaia e le su'esu'e ia fa'amaopoopo. .fa'aoso { taula-igoa: --my-trigger; }

.dropdown-menu { tulaga: atoatoa; tulaga-taula: --la'u-fa'aoso; luga: taula(lalo); agavale: taula(agavale); tulaga-taumafai-fa'aletonu: poloka poloka, fa'asaga i totonu; }

O le tulaga-try-fallbacks meatotino o le mea lea e aoga ai le faʻaaogaina i luga o se faʻatusatusaga tusi. E su'e e le su'esu'e isi nofoaga a'o le'i fiu, o lea e otometi lava ona liliu i luga le pa'ū i lalo ole va'aiga va'ai nai lo le tipi. Ole lagolago ole su'esu'e e mautu ile su'esu'ega fa'avae Chromium ma fa'atupula'ia ile Safari. E manaʻomia e Firefox se polyfill. O le @oddbird/css-anchor-positioning package e aofia ai le vaega autu. Ua ou taia le faʻasologa o mataʻitusi ma ia e manaʻomia ai faʻafouga ou te leʻi faʻamoemoeina, ia faʻaogaina o se faʻaleleia atili pe faʻapipiʻi ma seJavaScript toe foʻi mo Firefox. I se faapuupuuga, folafola ae le o le lautele. Su'e i au su'esu'ega fa'atatau. Ma e tusa ai ma le faʻaogaina, o le faʻaalia o se vaʻaiga vaʻaia i le CSS e le taʻuina atu i le laau avanoa soʻo se mea. aria-controls, aria-expanded, aria-haspopup - o lena vaega o loʻo i luga o oe. O nisi taimi o le Fix Na'o le Fa'aosoina o le Elemene A'o le'i o'o atu i se faitoto'a po'o le faia o fa'atatauga fa'amaopoopo, ou te fesili muamua lava i se fesili se tasi: E mana'omia moni ea lenei pa'u i lalo i totonu o le koneteina ta'ai? Afai e leai, o le faʻanofoina o le faʻailoga i se afifi maualuga maualuga e faʻaumatia atoa ai le faʻafitauli, e aunoa ma se JavaScript ma leai se faʻatulagaina faʻatusatusaga. E le o taimi uma e mafai ai. Afai o le faamau ma le pa'ū o loʻo faʻapipiʻiina i le vaega lava e tasi, o le faʻanofoina o le tasi e aunoa ma le isi o lona uiga e toe mafaufau i le API atoa. Ae a mafai ona e faia, e leai se mea e faʻafefe. E le o iai lava le faafitauli. O le a le CSS fa'aonaponei e le'o fo'ia CSS ua o'o mai i se auala umi iinei, ae o loʻo i ai pea nofoaga e tuʻu ai oe i lalo. Le tulaga: o lo'o iai pea mataupu fa'amautu ma suiga. O loʻo i totonu o le faʻamatalaga ma le loto i ai, o lona uiga e leai se CSS workaround o iai. Afai o loʻo e faʻaogaina se faletusi faʻafiafia e afifi ai lau faʻatulagaga i se elemene suia, ua e toe foʻi i le manaʻomia o faitotoa poʻo le taula. CSS Anchor Positioning e folafola, ae fou. E pei ona taʻua muamua, e manaʻomia pea e Firefox se polyfill i le taimi o loʻo ou tusia ai lenei mea. Ua ou taia le faʻailoga pito i tua ma ia e manaʻomia ai faʻafouga ou te leʻi faʻamoemoeina. Afai e te manaʻomia amioga faifaipea i luga o suʻesuʻega uma i aso nei, o loʻo e aapa pea mo le JavaScript mo vaega taufaasese. O le faʻaopoopoga ua ou suia moni lava laʻu galuega o le HTML Popover API, lea ua avanoa nei i suʻesuʻega faʻaonapo nei. O elemene o loʻo iai le uiga faʻapipiʻi e tuʻuina atu i le pito i luga o le browser, i luga aʻe o mea uma, e aunoa ma se faʻatulagaina o le JavaScript e manaʻomia.

Fa'afeiloa'i sola, fa'ate'a-i-kiliki-i fafo, ma semantics mautu avanoa e maua fua mo mea e pei o meafaigaluega, fa'aaliga widget, ma fa'alava faigofie. O le meafaigaluega muamua lea ou te aapa i ai mo le taimi nei. Fai mai, e le foia le tulaga. E fo'ia le fa'a'ofuina. E te manaʻomia pea le faʻatulagaina o taula poʻo le JavaScript e faʻaoga ai se popover i lona faʻaoso. O le Popover API e faʻatautaia le faʻapipiʻiina. O le fa'atulagaina o taula e taulimaina le tu'uina. Fa'aoga fa'atasi, latou te aofia ai le tele o mea na e a'afia muamua mo se faletusi e fai. Se Fa'ai'uga Ta'iala Mo Lou Tulaga A uma ona uia nei mea uma i le auala faigata, o le auala lenei ou te mafaufau moni ai i le filifiliga i le taimi nei.

Fa'aoga se faitoto'a. Ou te fa'aogaina pe a ola le fa'aoso i totonu o pusa ta'ai fa'amoega. Na ou fa'aogaina lenei mamanu mo lisi o mea e fai i luga o le laulau ma fa'apipi'i fa'atasi ma le toe fa'afo'i taula'i ma siaki avanoa. O le filifiliga sili ona faʻatuatuaina, ae faʻaalu le taimi mo le faʻaopoopoga o uaea. Fa'aoga tulaga fa'amautu.E mo le taimi e te i ai i le vanilla JavaScript po'o se fa'avaa mama ma e mafai ona fa'amaonia e leai se tuaa e fa'aogaina suiga po'o filiga. E faigofie ona fa'atutu ma faigofie ona fa'aleaga, pe a iai le fa'agata e tasi. Fa'aoga le CSS Anchor Positioning.Aapa atu mo lenei mea pe a fa'atagaina e lau su'esu'ega. Afai e mana'omia le lagolago a Firefox, fa'atasi ma le @oddbird polyfill. O le mea tonu lea e agai i ai le tulaga ma o le a iu lava ina avea ma au auala e alu i ai. Toe fa'atulaga le DOM. Fa'aaoga le mea lea pe a fa'atagaina e le tusiata fale, ma e te mana'o e leai se lavelave ta'avale. Ou te talitonu e foliga mai o le filifiliga e sili ona maualalo. Fa'atasi mamanu. Faia lea pe a e mana'o i le fa'atūina o taula e fai ma au auala muamua, fa'atasi ma se fa'afouga JavaScript mo su'esu'ega le lagolagoina. Po'o se faitoto'a mo le tu'uina o le DOM fa'atasi ma le getBoundingClientRect() mo le fa'amaopoopo sa'o.

Fa'ai'uga Sa masani ona ou togafitia lenei pusa o se mataupu e tasi - o se mea e faʻapipiʻi ma alu ese mai ai. Ae o le taimi lava na ou nofo ai ma ia lava le umi e malamalama ai i faiga uma e tolu o loʻo aʻafia ai - o loʻo faʻafefeteina, faʻapipiʻi tulaga, ma faʻapipiʻi poloka - na taofia ai le lagona faʻafuaseʻi. Sa mafai ona ou tilotilo atu i se pa'ū malepe ma vave su'e po o ai tuaa na mafua ai. O lena suiga i le auala na ou faitau ai i le DOM o le mea moni na ave ese. E leai se tali sa'o e tasi. O le mea na ou aapa i ai e faalagolago i le mea e mafai ona ou pulea i le codebase: faitotoa pe a le taumateina le laau a tuaa; fa'atulagaina fa'atulagaina pe a mama ma faigofie; fa'aosoina le elemene pe a leai se mea na taofia a'u; ma le fa'atulagaina o taula nei,i le mea ou te mafaia. Po'o le a lava le mea e te filifilia, aua le fa'aogaina le avanoa e fai ma laasaga mulimuli. I loʻu poto masani, o le taimi tonu lava e faaseʻe ai. O mafutaga ARIA, o le faʻatonuga o le faʻatonuga, o le piano - e leʻo faʻalelei. O latou o se vaega o le mea e faʻatino moni ai le mea. Siaki le faʻailoga atoa i totonu o laʻu GitHub repo. Faitau atili O faʻamatalaga nei na ou toe foʻi mai ai aʻo galue i lenei mea:

Le Tulaga Fa'aputu (MDN) "CSS Taula Tulaga Taiala", Juan Diego Rodriguez "Amataina i le Popover API", Godstime Aburu Floating UI (floating-ui.com) CSS Ovave (MDN)

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