Escenarioqa yaqa sapa kuti kaqllam, chaymi huk desplazamiento waqaychana ukhupi willakuy tabla. Sapa filaqa ruwana menú nisqayuqmi, huk huch'uy urayk'aq wakin akllanakunayuq, llamk'apuy, Iskay kuti ruway, qulluy hina. Chayta ruwanki, sapanchasqapi allinta llamk’achkanmanjina, chaymantataq pipas chay desplazamiento div ukhuman churan chaymanta imakuna urmapun. Kay chiqan pantayta kimsa chikan codigo basekunapi rikurqani: waqaychana, pila, chaymanta marco, llapanku hukniray. Chay bug ichaqa llapanpi kaqlla. Chay urayk’aqqa waqaychana kantupi k’utusqa kan. Utaq rikuchikun contenido qhipanpi, chaytaq lógicamente urayninpi kanan tiyan. Utaq allinta llamkan user desplazanankama, chaymanta drift. Z-index nisqaman chayanki: 9999. Wakin kutiqa yanapanmi, ichaqa wakin kutipiqa manam imatapas ruwanchu. Chay mana tupaqmi ñawpaq kaq pista aswan ukhunchasqa imapas pasakusqanmanta. Razón kutimuq sapa kuti kimsa sapaq navegador sistemakuna involucrasqa kasqan, chaymanta aswan paqarichiqkuna sapa hukta sapallankumanta hamut'anku ichaqa mana hayk'aqpas yuyaykunkuchu imachus ruwakun kimsantin tupanakuptinku: desbordamiento, contextokuna pila, chaymanta bloquekuna hap'iy.
Huk kuti imayna kimsantin tinkinku chayta entiendenki, mana allin ruway modokuna manaña random sientekunkuchu. Aswanpas, ñawpaqmantaraq yachanapaq hinamanmi tukupunku. Kimsa Imakuna Chiqapmanta Kayta Ruwachiq Chaykunamanta sapankankuta allinta qhawarisun. Desbordamiento nisqa Sasachakuy Mayk'aq huk elemento kaqpi desbordamiento: pakasqa, desbordamiento: desplazamiento utaq desbordamiento: auto kaqpi churanki, maskaq imapas limitekunamanta aswan mast'arisqa kaqta k'utunqa, chaymanta chiqamanta churasqa miraykunata. .scroll-contenedor { . desbordamiento: auto; sayaynin: 300px; /* Kayqa urayk'achiqta, hunt'asqa sayayta k'utunqa */ } .
.urquy { . posición: absoluto nisqa; /* Mana imapaschu -- .scroll-container nisqawan kuchusqaraq */ } .
Chayqa admirachiwarqanmi primera vez chaywan tupasqaypi. Posicionta hap’irqani: absoluto huk elementota huk contenedorpa kuchusqanmanta ayqinanta saqinman. Manan. Ruwaypi, chay niyta munan huk chiqamanta churasqa menú mayqin ñawpaq taytawanpas kuchusqa kanman mana rikukuq desbordamiento chaninniyuq, chay ñawpaq tayta mana menúpa bloqueyuq kaptinpas. Clipping nisqapas, posición nisqapas sapaq sistemakunam. Chaykunaqa pasaqllamantan tupanakunku, chaymi iskayninta entiendenaykikamaqa mana allintachu qhawarikun.
Kaypi huk React ejemplo createPortal kaqwan:
{ createPortal } 'react-dom' nisqamanta apamuy; import { Estadota llamk'achiy, Efecto llamk'achiy,Ref llamk'achiy } 'react' nisqamanta;
ruway Uray ({ anchorRef, isOpen, wawakuna }) { const [posición, setPosition] = Estadota llamk'achiy ({ pata: 0, lluq'i: 0 });
llamk'achiyta Efecto (() => { . sichus (isKichasqa && anclaRef.kunan) { const rect = anclaRef.kunan.getBoundingClientRect (); churayPosición({ pata: rect.ura + ventana.scrollY, . lluq'i: rect.ichuq + ventana.scrollX, . }); } . }, [kichasqa kachkan, anclaRef]);
sichus (!isOpen) kutichiy null;
kutichiy kamayPortal( .
Hinaspapas, cheqaqmi, manan mana qhawariyta atisunmanchu haykuy atiytaqa. Contenido patapi rikuriq allichasqa elementokunaqa tecladowan chayanapaqraqmi kananku. Sichus enfoque orden mana naturalmentechu kuyun takyasqa urayk’aqman, chayta kamachinayki tiyan código llamk’achispa. Chantapas allinmi qhaway mana huk interactivo contenidokuna patapi tiyasqanmanta mana imaynamanta qarqunapaq. Chayqa teclado pruebapi kanisunki. CSS Anchor Positioning: Maymanchus Kay Umaman richkaqta yuyani CSS Anchor Positioning nisqaqa kunanpacha aswan munasqay ñanmi. Manam segurochu karqani hayk’a especificación chiqapmanta llamk’anapaq kasqanmanta ñawpaq kutita qhawachkaptiy. Saqisunki willayta huk urayk'aqwan chaymanta llamk'achiqninwan chiqamanta CSS kaqpi, chaymanta maskaq coordenadas kaqwan ruwan. .gatillo { . ancla-sutin: --mi-trigger; } .
.uray-uray-menú { . posición: absoluto nisqa; posición-ancla: --mi-gatillo; pata: ancla(ura); lluq'i: ancla(ichuq); posición-prueba-fallbacks: flip-block, flip-inline; } .
Posición-try-fallbacks kaqninqa kayta ruwan huk makiwan yupaymanta aswan llamk'achiyta. Navegador huk churaykunata pruebakun manaraq quchkaspa, chayrayku huk urayk'achiq qhawana urapi kikillanmanta wichayman tikran mana kuchusqa kananmanta. Navegador yanapakuyqa Chromium kaqpi ruwasqa navegadorkunapi sinchi kachkan chaymanta Safari kaqpi wiñachkan. Firefox huk polyfill nisqatam necesitan. @oddbird/css-anchor-positioning paqueteqa core spec nisqatam qatakun. Ñuqaqa chaywan layout edge casokunata tupachirqani mayqinkunachus mana anticipasqay fallbacks nisqakunata mañarqanku, chayrayku huk progresivo mejoramiento hina qhaway utaq hukwan tupachiyJavaScript fallback Firefox kaqpaq. Pisi rimayllapi, prometedor ichaqa manaraqmi universalchu. Prueba maskanakunaykipi. Hinallataq maykamachus yaykuy atiymanta, CSS kaqpi huk rikuy tinkiyta willayqa mana chayayta sach’aman imatapas willanchu. aria-controls, aria-mast'arisqa, aria-haspopup — chay parteqa qanpiraqmi kachkan. Wakin kutiqa Allchayqa Elementota Kuyuchiylla kachkan Manaraq huk portalman chayaspa utaq coordenadas yupaykunata ruwachkaspa, sapa kuti huk tapuyta ñawpaqta ruwani: ¿Chiqaptachu kay urayk'aqqa kuyurichiy waqaychana ukhupi kawsanan tiyan? Mana chayta ruwanchu chayqa, marcata aswan hatun pata p’istuman kuyuchiyqa sasachakuyta tukuyninpi chinkachin, mana JavaScript kaqwan chaymanta mana coordenada yupaykunawan. Kayqa manan sapa kutichu atikun. Sichus botón chaymanta urayk'aq kikin componente kaqpi encapsulasqa kanku, hukta mana hukninwan kuyuchiyqa tukuy API kaqmanta yuyayta munan. Ichaqa ruwayta atispaqa manan imapas kanchu pantaykunata allichanaykipaq. Chay sasachakuyqa manan kanchu. Imakunatachus Kunan pacha CSS Kunankamapas Mana Allichanchu CSS kaypi karuta hamun, ichaqa kanraqmi maykunapichus hukmanyachisunki. Chay posición: allichasqa hinaspa tikray asuntokuna kunankamapas kachkanraqmi. spec kaqpi intencionalmente kachkan, chaymanta niyta munan mana CSS llamkana kanchu. Sichus huk animación bibliotecata llamk’achkanki mayqinchus churasqaykita huk tikrasqa elementopi p’istuykuchkan, kutimunki portales utaq ancla churayta necesitasqaykiman. CSS Anchor Positioning nisqaqa sumaqmi, ichaqa musuq. Ñawpaqta nisqa hina, Firefox huk polyfill nisqatapas necesitanraq kayta qillqachkaptiy. Chaywanmi layout edge casokunata tupachirqani, chaymi mana anticipasqay fallbacks nisqakunata necesitarqani. Sichus kunan p’unchaw llapa maskaqkunapi sapa kuti ruwayta necesitanki, JavaScript kaqman chayachkankiraq chay tricky partes kaqpaq. Yapayqa chiqamanta llamk’ayniyta tikrarqani HTML Popover API kaq, kunan llapa kunan pacha maskaqkunapi tarikun. Popover atributoyuq elementokuna maskaqpa pata qatanpi ruwanku, tukuy imamanta aswan pataman, mana JavaScript churayta necesitaspa.
Ayqikuy hapiy, hawa ñit'iypi qarquy, chaymanta takyasqa yaykuy semántica mana qullqiyuq hamun imakuna ruwanapaq yanapakuypa yuyaychayninkuna, willakuy widgetkuna chaymanta sasan llanthukuna hina. Kunankamaqa ñawpaq kaq yanapakuymi chayasqay. Chayta nispaqa manan posición nisqataqa allichanchu. Chayqa capas nisqakunatam allichan. Ancla churayta utaq JavaScript nisqatapas necesitankiraqmi huk popoverta gatillonman tupachinaykipaq. Popover API nisqa qatata llamk'achin. Ancla posición nisqa churayta hap’in. Kuska llamk’achisqa, yaqa llapan imakunatachus ñawpaqta biblioteca ruwanaykipaq chayasqaykita qhawanku. Situacionniykipaq Decidinapaq Guía Tukuy kaykunata sasa ñanninta pasaspa, kaypi imaynatachus chiqamanta kunan akllanamanta yuyaykuni.
Huk portalta llamk’achiy.Kayta llamk’achisaq mayk’aqchus gatillo ukhupi kawsan anidado desplazamiento waqaychanakunapi. Kay patrón tabla ruway menús kaqpaq llamk'achirqani chaymanta enfoque kutichiywan chaymanta accesibilidad qhawaykunawan tupachirqani. Aswan atiyniyuq akllana, ichaqa presupuesto pacha yapasqa cableado kaqpaq. Allin takyasqa churayta llamk’achiy.Kayqa mayk’aqchus vainilla JavaScript kaqpi kanki utaq huk llañu marco kaqpi kanki chaymanta chiqaqchayta atin mana mayqin ñawpaq taytapas tikraykunata utaq filtrokunata churanchu. Sasan churanapaq chaymanta sasan pantaykunata allichaypaq, chay huk hark’ay hap’iptinkama. CSS Anchor Positioning llamk'achiy.Kaypaq chayay mayk'aq maskaq yanapakuyniyki saqin. Firefox yanapakuy mañasqa kaptinqa, @oddbird polyfill kaqwan tupachiy. Kaymi maymanchus plataforma qhipaman richkan chaymanta qhipaman riy-riq ruwayniykiman tukunqa. DOM kaqmanta ruway.Kayta llamk'achiy mayk'aq arquitectura saqillan, chaymanta cero puriy pacha sasachakuyniyuq kayta munanki. Creeni yaqapaschá aswan pisi chaninchasqa akllana kanman. Patrones huñuy.Kayta ruway mayk'aq ancla churayta munanki ñawpaq ruwayniyki hina, huk JavaScript fallback kaqwan tupachisqa mana yanapasqa maskaqkunapaq. Utaq huk portal DOM churanapaq getBoundingClientRect() kaqwan tupachisqa, kuskanchasqa chiqan kananpaq.
Tukuchina Kay pantayta huk kutilla sasachakuy hina qhawaq kani — imapas allichaypaq chaymanta ñawpaqman purinapaq. Ichaqa huk kuti chaywan unayta tiyarqani kimsantin sistemakuna involucrasqa kaqta entiendenaypaq — desbordamiento clipping, contextos apilamiento, chaymanta bloquekuna contenedor — manaña random sientekurqachu. Huk pakisqa uraykachiyta qawaspaymi chaylla qatipayman karqa mayqin ñawpaq taytam responsable kasqanmanta. Chay cambio imayna DOM leesqaypi karqan cheqaq apakuy. Manan huklla allin kutichiyqa kanchu. Imamanchus chayasqayqa imakunatachus código base nisqapi kamachiyta atiyman chaymanta karqa: portales mayk'aqchus ñawpaq sach'a mana willay atiy karqa; chuya hinaspa mana sasa kaptin takyasqa posición; mana imapas harkawachkaptin elementota kuyuchispa; hinaspa kunan ancla churay, .maypichus atiyman chaypi. Ima akllaspa tukunki chaypas, ama yaykuy atiyta qhipa ruway hinachu qhaway. Experienciaypi, chaypachapuni saltakun. ARIA tinkiykuna, enfoque kamachiy, teclado ruway — chaykuna mana llimp’ichu. Paykunaqa parten kanku imakunachus chay cosa cheqaqtapuni llank’ananpaq. GitHub repo nisqapi hunt'asqa pukyuta qhaway. Astawan Ñawinchay Kaymi kaypi llamkachkaspay kutimuq referenciakuna:
Contexto de Apilamiento (MDN) nisqamanta. “CSS Anclakuna churanapaq yanapakuy”, Juan Diego Rodríguez “Popover API nisqawan qallariy”, Godstime Aburu UI yakupi puriq (floating-ui.com) . CSS nisqamanta lluqsiy (MDN) .