Mazingira karibu kila mara ni sawa, ambayo ni jedwali la data ndani ya kontena inayoweza kusongeshwa. Kila safu mlalo ina menyu ya vitendo, menyu kunjuzi ndogo iliyo na baadhi ya chaguo, kama vile Hariri, Rudufu na Futa. Unaijenga, inaonekana kufanya kazi kikamilifu katika kutengwa, na kisha mtu huiweka ndani ya div hiyo inayoweza kusongeshwa na mambo husambaratika. Nimeona mdudu huyu katika misingi tatu tofauti: kontena, safu, na mfumo, zote tofauti. mdudu, ingawa, ni sawa kabisa. Kunjuzi hukatwa kwenye ukingo wa chombo. Au inaonekana nyuma ya maudhui ambayo kimantiki yanapaswa kuwa chini yake. Au inafanya kazi vizuri hadi mtumiaji anasonga, na kisha inateleza. Unafikia z-index: 9999. Wakati mwingine inasaidia, lakini nyakati zingine haifanyi chochote. Ukosefu huo ni kidokezo cha kwanza kwamba kitu cha kina kinatokea. Sababu inayofanya iendelee kurudi ni kwamba mifumo mitatu tofauti ya kivinjari inahusika, na watengenezaji wengi wanaelewa kila moja kivyake lakini hawafikirii kinachotokea wakati zote tatu zinapogongana: kufurika, miktadha ya kutundika, na iliyo na vizuizi.

Mara tu unapoelewa jinsi zote tatu zinavyoingiliana, njia za kutofaulu huacha kuhisi bila mpangilio. Kwa kweli, huwa zinatabirika. Mambo Matatu Halisi Yanayosababisha Hili Hebu tuangalie kila moja ya vitu hivyo kwa undani. Tatizo la Kufurika Unapoweka kufurika: kufichwa, kufurika: kusogeza, au kufurika: kiotomatiki kwenye kipengele, kivinjari kitanakili chochote kinachovuka mipaka yake, ikijumuisha vizazi vilivyowekwa kabisa. .chombo cha kusogeza { kufurika: auto; urefu: 300px; /* Hii itapunguza kushuka, kuacha kamili */ }

.kunjuzi { nafasi: kabisa; /* Haijalishi -- bado imekatwa na .scroll-container */ }

Hilo lilinishangaza kwa mara ya kwanza nilipokutana nalo. Ningechukua msimamo: kabisa ingeruhusu kitu kiepuke kukatwa kwa kontena. Haifai. Kwa mazoezi, hiyo inamaanisha kuwa menyu iliyowekwa kabisa inaweza kukatwa na babu yoyote ambayo ina thamani isiyoonekana ya kufurika, hata kama babu huyo si menyu iliyo na kizuizi. Kukata na kuweka ni mifumo tofauti. Zinatokea tu kugongana kwa njia ambazo zinaonekana nasibu hadi uelewe zote mbili.

Hapa kuna mfano wa React kwa kutumia createPortal:

agiza { createPortal } kutoka 'react-dom'; agiza {useState, useEffect, useRef } kutoka 'react';

kazi Kunjuzi ({ anchorRef, isOpen, watoto }) { const [position, setPosition] = useState({juu: 0, kushoto: 0});

useEffect(() => { ikiwa (isOpen && anchorRef.current) { const rect = anchorRef.current.getBoundingClientRect(); kuwekaPosition({ juu: rect.bottom + window.scrollY, kushoto: rect.left + window.scrollX, }); } }, [isOpen, anchorRef]);

ikiwa (!isOpen) inarudi null;

rudisha undaPortal(

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