Je, umewahi kuweka z-index: 99999 kwenye kipengele katika CSS yako, na haitoki juu ya vipengele vingine? Thamani kubwa inapaswa kuweka kipengele hicho kwa urahisi juu ya kitu kingine chochote, ikizingatiwa kwamba vipengele vyote tofauti vimewekwa katika thamani ya chini au haijawekwa kabisa. Ukurasa wa wavuti kawaida huwakilishwa katika nafasi ya pande mbili; hata hivyo, kwa kutumia sifa mahususi za CSS, ndege ya kufikirika ya z-axis inaletwa ili kuwasilisha kina. Ndege hii ni ya kawaida kwa skrini, na kutoka kwayo, mtumiaji huona mpangilio wa vipengee, moja juu ya nyingine. Wazo la mhimili wa z-wazi, mtazamo wa mtumiaji wa vipengele vilivyopangwa, ni kwamba sifa za CSS zinazoiunda huchanganyika na kuunda kile tunachokiita muktadha wa kuweka mrundikano. Tutazungumza kuhusu jinsi vipengee "vinavyopangwa" kwenye ukurasa wa tovuti, ni nini kinachodhibiti mpangilio, na mbinu za vitendo za "kuondoa" vipengele vinapohitajika. Kuhusu Kuweka Muktadha Fikiria ukurasa wako wa wavuti kama dawati. Unapoongeza vipengele vya HTML, unaweka vipande vya karatasi, moja baada ya nyingine, kwenye dawati. Kipande cha mwisho cha karatasi kilichowekwa ni sawa na kipengee cha HTML kilichoongezwa hivi karibuni, na kinakaa juu ya karatasi zingine zote zilizowekwa mbele yake. Huu ndio mtiririko wa hati wa kawaida, hata kwa vipengele vilivyowekwa. Dawati lenyewe linawakilisha muktadha wa kuweka mzizi, unaoundwa na kipengele cha , ambacho kina folda zingine zote. Sasa, sifa mahususi za CSS zinatumika. Sifa kama vile nafasi (iliyo na z-index), uwazi, kubadilisha, na vyenye) hufanya kama folda. Folda hii huchukua kipengee na watoto wake wote, kuvitoa kutoka kwa rafu kuu, na kuvipanga katika rundo ndogo tofauti, na kuunda kile tunachokiita muktadha wa kutundika. Kwa vipengele vilivyowekwa, hii hutokea tunapotangaza thamani ya z-index isipokuwa otomatiki. Kwa sifa kama vile uwazi, kubadilisha na kuchuja, muktadha wa kuweka rafu huundwa kiotomatiki thamani mahususi zinapotumika.
Jaribu kuelewa hili: Pindi kipande cha karatasi (yaani, kipengele cha mtoto) kikiwa ndani ya folda (yaani, muktadha wa mrundikano wa mzazi), hakiwezi kamwe kutoka kwenye folda hiyo au kuwekwa kati ya karatasi kwenye folda tofauti. z-index yake sasa inafaa tu ndani ya folda yake mwenyewe.
Katika mchoro ulio hapa chini, Karatasi B sasa iko ndani ya muktadha wa kupangwa kwa Folda B, na inaweza tu kuagizwa na karatasi zingine kwenye folda.
Fikiria, ikiwa ungependa, kuwa una folda mbili kwenye dawati lako:
.folda-a { z-index: 1; } .folda-b { z-index: 2; }
Hebu tusasishe markup kidogo. Ndani ya Folda A kuna ukurasa maalum, z-index: 9999. Ndani ya Folda B kuna ukurasa wazi, z-index: 5.
. ukurasa maalum { z-index: 9999; } .ukurasa wa wazi { z-index: 5; }
Ni ukurasa gani ulio juu? Ni ukurasa wa .plain katika Folda B. Kivinjari hupuuza karatasi za watoto na kuweka folda mbili kwanza. Inaona Folda B (z-index: 2) na kuiweka juu ya Folda A (z-index: 1) kwa sababu tunajua kwamba mbili ni kubwa kuliko moja. Wakati huo huo, ukurasa wa .special-set uliowekwa kuwa z-index: ukurasa wa 9999 uko chini ya rafu ingawa faharasa yake ya z imewekwa kwa thamani ya juu zaidi iwezekanayo. Miktadha ya kupanga pia inaweza kuwekwa (folda ndani ya folda), kuunda "mti wa familia." Kanuni hiyo hiyo inatumika: mtoto hawezi kamwe kuepuka folda ya wazazi wake. Sasa kwa kuwa unapata jinsi miktadha ya kuweka mrundikano inavyofanya kazi kama folda zinazopanga na kupanga upya tabaka, inafaa kuuliza: kwa nini sifa fulani - kama vile kubadilisha na uwazi - huunda miktadha mipya ya kutundika? Hapa ni jambo: mali hizi hazitengenezi mazingira ya stacking kwa sababu ya jinsi yanavyoonekana; wanafanya hivyo kwa sababu ya jinsi kivinjari kinavyofanya kazi chini ya kofia. Unapotuma mabadiliko, uwazi, kichujio, au mtazamo, unaambia kivinjari, "Halo, kipengele hiki kinaweza kusogea, kuzunguka, au kufifia, kwa hivyo uwe tayari!"
Unapotumia vipengele hivi, kivinjari huunda muktadha mpya wa kuweka rafu ili kudhibiti uwasilishaji kwa ufanisi zaidi. Hii huruhusu kivinjari kushughulikia uhuishaji, kubadilisha na madoido ya kuona kwa kujitegemea, na hivyo kupunguza hitaji la kukokotoa upya jinsi vipengele hivi huingiliana na ukurasa wote. Ifikirie kama kivinjari kikisema, "Nitashughulikia folda hii kando ili sihitaji kubadilisha dawati zima kila wakati kitu ndani yake kinapobadilika." Lakini kunaathari ya upande. Mara baada ya kivinjari kuinua kipengele kwenye safu yake mwenyewe, ni lazima "itafishe" kila kitu ndani yake, na kuunda muktadha mpya wa stacking. Ni kama kuondoa folda kwenye dawati ili kuishughulikia kando; kila kitu ndani ya folda hiyo huwekwa katika vikundi, na kivinjari sasa kinaichukulia kama kitengo kimoja wakati wa kuamua ni nini kiko juu ya nini. Kwa hivyo ingawa sifa za ugeuzaji na uwazi zinaweza zisionekane kuathiri jinsi vipengee vinavyojipanga kimwonekano, hufanya, na ni kwa ajili ya uboreshaji wa utendaji. Tabia zingine kadhaa za CSS pia zinaweza kuunda miktadha ya kuweka kwa sababu sawa. MDN hutoa orodha kamili ikiwa unataka kuchimba zaidi. Kuna machache, ambayo yanaonyesha tu jinsi ilivyo rahisi kuunda muktadha wa kuweka bila kujua bila kujua. Tatizo la "Unstacking". Masuala ya kuweka safu yanaweza kutokea kwa sababu nyingi, lakini zingine ni za kawaida zaidi kuliko zingine. Vipengee vya modali ni muundo wa kawaida kwa sababu vinahitaji kugeuza kijenzi "kufungua" kwenye safu ya juu juu ya vitu vingine vyote, kisha kukiondoa kutoka safu ya juu "kimefungwa." Nina hakika kwamba sisi sote tumeingia katika hali ambapo tunafungua modal na, kwa sababu yoyote, haionekani. Sio kwamba haikufungua vizuri, lakini haionekani katika safu ya chini ya muktadha wa stacking. Hii inakuacha ujiulize "vipi?" tangu umeweka:
.wekelea { msimamo: fasta; /* huunda muktadha wa kuweka mrundikano */ z-index: 1; /* huweka kipengee kwenye safu juu ya kila kitu kingine */ kuingiza: 0; upana: 100%; urefu: 100vh; kufurika: siri; rangi ya asili: #00000080; }
Hili linaonekana kuwa sawa, lakini ikiwa kipengele cha mzazi kilicho na kichochezi cha modali ni kipengele cha mtoto ndani ya kipengele kingine cha mzazi ambacho pia kimewekwa kuwa z-index: 1, ambacho kitaalam kinaweka modali katika safu ndogo iliyofichwa na folda kuu. Wacha tuangalie hali hiyo maalum na mitego mingine kadhaa ya kawaida ya muktadha. Nadhani utaona sio tu jinsi ilivyo rahisi kuunda miktadha ya kuweka bila kukusudia, lakini pia jinsi ya kuisimamia vibaya. Pia, jinsi ya kurudi kwenye hali iliyosimamiwa inategemea hali hiyo. Tukio la 1: Njia Iliyonaswa
Mara moja unaweza kuona modali yako ikiwa imenaswa katika safu ya kiwango cha chini na kutambua mzazi. Viendelezi vya Kivinjari Wasanidi mahiri wameunda viendelezi vya kusaidia. Zana kama vile "Kikaguzi cha Muktadha wa Kuweka Rafu kwa CSS" kiendelezi cha Chrome huongeza kichupo cha ziada cha z-index kwenye DevTools yako ili kukuonyesha maelezo kuhusu vipengele vinavyounda muktadha wa kupangwa.
Viendelezi vya IDE Unaweza hata kutambua masuala wakati wa utayarishaji kwa kutumia kiendelezi kama hiki cha Msimbo wa VS, ambacho huangazia masuala yanayoweza kutokea ya kuweka mrundikano moja kwa moja kwenye kihariri chako.
Kuondoa na Kurejesha Udhibiti Baada ya kutambua sababu kuu, hatua inayofuata ni kukabiliana nayo. Kuna mbinu kadhaa ambazo unaweza kuchukua ili kukabiliana na tatizo hili, na nitaziorodhesha kwa utaratibu. Unaweza kuchagua mtu yeyote katika ngazi yoyote, ingawa; hakuna anayeweza kulalamika au kumzuia mwingine. Badilisha Muundo wa HTML Hii inachukuliwa kuwa suluhisho bora. Ili ukabiliane na suala la muktadha wa kuweka mrundikano, lazima uwe umeweka baadhi ya vipengele katika nafasi za kuchekesha ndani ya HTML yako. Kurekebisha ukurasa kutakusaidia kuunda upya DOM na kuondoa tatizo la muktadha wa kutundika. Pata kipengee chenye matatizo na ukiondoe kwenye kipengee cha kunasa kwenye markup ya HTML. Kwa mfano, tunaweza kutatua hali ya kwanza, "Njia Iliyonaswa," kwa kuhamisha kontena ya .modal kutoka kwenye kichwa na kukiweka katika kipengele cha
peke yake.Maudhui haya yana faharasa ya z ya 2 na bado hayatashughulikia modali.Kijajuu
kichwa>
Maudhui Kuu
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.