Anenge makore 15 apfuura, ndaishanda pane imwe kambani kwataigadzira mapurogiramu evashandi vekufambisa, vashandi vepanhandare dzendege, nemakambani endege. Isu takavakawo yedu mu-mumba chimiro cheUI zvikamu uye imwe peji-peji app kugona. Isu takanga tine zvikamu zvezvese: minda, mabhatani, matabo, nhanho, datatable, menyu, datepickers, anosarudza, uye akawandaselects. Taitova ne div component. Yedu div chikamu chaive chikuru nenzira, yaititendera kuita makona akatenderedzwa pamabrowser ese, izvo, zvitende kana kwete, chaive chisiri chinhu chiri nyore kuita panguva iyoyo.
Basa redu rakaitika pane imwe nguva munhoroondo yedu apo JS, Ajax, uye HTML ine simba zvakaonekwa sechimurenga chakatiunza mune ramangwana. Kamwe kamwe, taigona kugadzirisa peji zvine simba, kuwana data kubva kune sevha, uye kudzivirira kuenda kune mamwe mapeji, ayo aionekwa seanononoka uye akapenya hombe chena rectangle pachiratidziro pakati pemapeji maviri. Paive nemutsara, wakaitwa mukurumbira naJeff Atwood (muvambi weStackOverflow), waiti: “Chero application inogona kunyorwa muJavaScript pakupedzisira inozonyorwa muJavaScript.”— Jeff Atwood
Kwatiri panguva iyoyo, izvi zvaiita senge kushinga kuenda kunogadzira iwo maapplication. Zvaiita semvumo yegumbeze kuita zvese neJS. Saka takaita zvese neJS, uye hatina kunyatsotora nguva yekutsvaga dzimwe nzira dzekuita zvinhu. Hatina kunyatsonzwa kurudziro yekudzidza nemazvo izvo HTML neCSS zvingaite. Isu hatina kunyatsoona iyo webhu senge inoshanduka app chikuva chakazara. Isu tainyanya kuzviona sechimwe chinhu chatinofanira kushanda nacho, kunyanya kana zvasvika pakutsigirwa kwebrowser. Tinogona kungokanda yakawanda JS pairi kuti zvinhu zviitwe. Kutora nguva yekudzidza zvakawanda nezve mashandiro ewebhu uye izvo zvaivepo pachikuva kwakandibatsira here? Chokwadi, ndingadai ndakaveura boka rekodhi rakanga risingadiwi zvechokwadi. Asi, panguva iyoyo, pamwe kwete zvakanyanya. Iwe unoona, misiyano yebrowser yaive yakakosha kare ikako. Iyi yaive nguva iyo Internet Explorer yaive ichiri bhurawuza rine mukurumbira, Firefox ichive yechipiri yepedyo, asi ichitanga kurasikirwa nemusika nekuda kweChrome nekukurumidza kuwana mukurumbira. Kunyangwe Chrome neFirefox zvaive zvakanaka pakubvumirana pamawebhusaiti, nharaunda umo maapplication edu aimhanya aireva kuti taifanira kutsigira IE6 kwenguva yakareba. Kunyangwe patakatenderwa kutsigira IE8, takanga tichiri kutarisana nekusiyana kwakawanda pakati pemabhurawuza. Kwete izvozvo chete, asi iyo webhu yenguva iyoyo yakanga isina hunyanzvi hwakawanda hwakavakirwa pachikuva.
Kurumidza kusvika nhasi. Zvinhu zvachinja zvikuru. Kwete chete isu tine akawanda ezvikwanisiro izvi kupfuura nakare kose, asi mwero wavanowanikwa nawo wakawedzera zvakare. Rega ndibvunze mubvunzo zvakare, zvino: Kutora nguva yekudzidza zvakawanda nezve mashandiro anoita webhu uye chii chiripo pachikuva chinokubatsira nhasi? Hongu zvachose. Kudzidza kunzwisisa nekushandisa iyo webhu puratifomu nhasi inokuisa iwe pamukana wakakura kupfuura vamwe vanogadzira. Kunyangwe iwe uchishanda pakuita, kuwanikwa, kupindura, zvese pamwe chete, kana kungotumira maUI maficha, kana iwe uchida kuzviita seinjiniya ane mutoro, kuziva maturusi anowanikwa kwauri kunobatsira iwe kuzadzisa zvinangwa zvako nekukurumidza uye zvirinani. Zvimwe Zvinhu Zvaungasazoda Raibhurari Yezve Kuziva izvo mabhurawuza anotsigira nhasi, mubvunzo, saka, ndewekuti: Chii chatingasiya? Isu tinoda div chikamu kuti tiite makona akatenderedzwa muna 2025? Zvechokwadi, hatidaro. Iyo bhodha-radius pfuma yakatsigirwa nemabhurawuza ese anoshandiswa parizvino kweanopfuura makore gumi nemashanu panguva ino. Uye chimiro chekona chiri kuuya zvakare munguva pfupi, kune kunyange makona efancier. Ngatitarisei zvinhu zvichangoburwa izvo zvave kuwanikwa mumabhurawuza makuru ese, uye zvaunogona kushandisa kutsiva zviripo zvinotsamira mucodebase yako. Iyo poindi haisi yekusiya nekukasira maraibhurari ako ese anodiwa uye kunyorazve yako codebase. Kana zviri zvimwe zvese, iwe uchafanirwa kutora bhurawuza rutsigiro kutanga uye sarudza zvichibva pane zvimwe zvinhu zvakanangana nepurojekiti yako. Izvi zvinotevera zvinoshandiswa mumainjini matatu makuru ebrowser (Chromium, WebKit, uye Gecko), asi unogona kunge uine zvakasiyana siyana zvekutsigira browser zvinokutadzisa kuishandisa ipapo ipapo. Iye zvino ichiri nguva yakanaka yekudzidza nezvezvinhu izvi, kunyange zvakadaro, uye zvichida kuronga kuashandisa pane imwe nguva. Popovers Uye Dialogs Iyo Popover API, iyo
Chokwadi, yako internet yekubatanidza kumhanya yakawedzera, zvakare, asi hazvisizvo kune wese munhu. Uye havasi vese vane zvakafanana mudziyo kugona kana. Kudhonza mune yechitatu-bato kodhi yezvinhu zvaunogona kuita nepuratifomu, pachinzvimbo, kazhinji zvinoreva kuti iwe unotumira yakawanda kodhi, uye nekudaro svika vashoma vatengi kupfuura zvawaiwanzoita. Pawebhu, kuita kwakashata kwekurodha kunotungamira kumazinga makuru ekusiya uye kukuvadza mukurumbira wemhando. Kumhanya Zvishoma Code Pamidziyo Uyezve, iyo kodhi yaunotumira pamidziyo yevatengi vako inogona kumhanya nekukurumidza kana ikashandisa mashoma JavaScript abstractions pamusoro pepuratifomu. Iyo zvakare ingangove yakawanda inopindura uye inowanikwa zvakanyanya neiyo default. Zvose izvi zvinotungamirira kune vatengi vakawanda uye vanofara. Tarisa wandaishanda naye Alex Russell gore negore kusaenzana gap blog, iyo inoratidza kuti premium zvishandiso hazvipo pamisika ine mabhiriyoni evashandisi nekuda kwehupfumi kusaenzana. Uye gaka iri riri kukura nekufamba kwenguva.
Yakavakwa-mukati Masonry Layout Imwe yewebhu papuratifomu chimiro chiri kuuya munguva pfupi uye chandiri kufara nacho ndeye CSS Masonry.
Rega nditange nekutsanangura kuti Masonry chii. Chii Chinonzi Masonry Masonry imhando yemagadzirirwo akaitwa mukurumbira nePinterest makore apfuura. Iyo inogadzira yakazvimiririra mateki emukati mukati meiyo zvinhu zvinozvirongedza padyo nekutanga kweiyo track sezvavanogona.
Vanhu vazhinji vanoona Masonry seyakanakisa sarudzo yemapotifolio uye mapikicha emifananidzo, izvo zvaanogona kuita. Asi Masonry inoshanduka-shanduka kupfuura izvo zvaunoona paPinterest, uye haina kugumira kumapopoma-senge marongero. Muchimiro cheMasonry:
Matumbo anogona kuve makoramu kana mitsetse:
Mateki ezvinyorwa haafanire kunge akaenzana saizi:
Zvinhu zvinogona kutenderera matiraki akawanda:
Zvinhu zvinogona kuiswa pamakwara chaiwo; havafanirwe kugara vachitevera otomatiki yekuisa algorithm:
Demos Heano mashoma mademosi akareruka andakaita nekushandisa kuri kuuya kweCSS Masonry muChromium. Demo remafoto gallery, rinoratidza kuti zvinhu (zita mune ino kesi) zvinogona kutenderera akati wandei:
Imwe foto gallery inoratidza matiraki ehukuru hwakasiyana:
Rondedzero yesaiti yenhau ine mamwe matiraki akakura kupfuura mamwe, uye zvimwe zvinhu zvinotora hupamhi hwese hwehurongwa:
Kanban board inoratidza kuti zvinhu zvinogona kuiswa pane chaiyo tracks:
Cherechedza: Themadhemo apfuura akagadzirwa neshanduro yeChromium iyo haisati yawanikwa kune vazhinji vashandisi vewebhu, nekuti CSS Masonry ichangotanga kuitwa mumabhurawuza. Nekudaro, vanogadzira webhu vanga vachishandisa nemufaro maraibhurari kugadzira Masonry marongero kwemakore atove. MaSaiti Anoshandisa Masonry Nhasi Chokwadi, Masonry yakajairika pawebhu nhasi. Heano mimwe mienzaniso yandakawana kunze kwePinterest:
Uye mimwe mishoma, isinganyanyi kuoneka, mienzaniso:
Saka, magadzirirwo aya akagadzirwa sei? Workarounds Imwe yehunyengeri yandaona yakashandiswa kushandisa Flexbox marongero pachinzvimbo, ichichinja nzira yayo kuita koramu, uye kuimisa kuti iputire. Nenzira iyi, unogona kuisa zvinhu zvehurefu hwakasiyana mumakoramu akawanda, akazvimiririra, achipa fungidziro yeMasonry dhizaini:
Pane, zvisinei, zvipingamupinyi zviviri neiyi workaround:
Kurongeka kwezvinhu kwakasiyana nekwaizove neiyo chaiyo Masonry marongero. NeFlexbox, zvinhu zvinozadza koramu yekutanga uye, kana yazara, wobva waenda kune inotevera koramu. NeMasonry, zvinhu zvaizomira mune chero track (kana koramu mune iyi kesi) ine yakawanda nzvimbo iripo. Asi zvakare, uye pamwe zvakanyanya kukosha, iyi workaround inoda kuti iwe uise yakatarwa kureba kune Flexbox mudziyo; kana zvisina kudaro, hapana kuputira kwaizoitika.
Wechitatu-bato Masonry Libraries Kune mamwe makesi epamberi, vagadziri vanga vachishandisa maraibhurari. Raibhurari inonyanya kuzivikanwa uye yakakurumbira yeiyi inongonzi Masonry, uye inotorwa kanosvika mazana maviri ezviuru pasvondo maererano neNPM. Squarespace inopawo chikamu chekumisikidza chinopa iyo Masonry dhizaini, kune isina-kodhi imwe nzira, uye akawanda masayiti anoishandisa. Idzi sarudzo mbiri dzinoshandisa JavaScript kodhi kuisa zvinhu muhurongwa. Yakavakwa-mukati Masonry Ndiri kufara chaizvo kuti Masonry yave kutanga kuoneka mumabrowser seyakavakirwa-mukati CSS chimiro. Nekufamba kwenguva, iwe unozogona kushandisa Masonry sezvaunoita Grid kana Flexbox, ndiko kuti, usingade chero workaround kana yechitatu-bato kodhi. Chikwata changu kuMicrosoft chave kuita yakavakirwa-muMasonry rutsigiro muChromium yakavhurika sosi purojekiti, iyo Edge, Chrome, uye mamwe akawanda mabhurawuza akavakirwa pairi. Mozilla yaive chaiyo yekutanga bhurawuza mutengesi kupa zano rekuyedza kuitiswa kweMasonry kumashure muna 2020. Uye Apple yanga ichifarira zvikuru kuita iyi webhu dhizaini yechinyakare kuitika. Iro basa rekumisa chimiro riri kuenderera mberi, nechibvumirano mukati meboka rekushanda reCSS nezve gwara uye kunyangwe mhando nyowani yekuratidzira: grid-nzira. Kana iwe uchida kudzidza zvakawanda nezve Masonry uye kuteedzera kufambira mberi, tarisa yangu CSS Masonry zviwanikwa peji. Nekufamba kwenguva, kana Masonry ikava yeBaseline ficha, seGrid kana Flexbox, isu tichakwanisa kuishandisa nekubatsirwa kubva:
Kuita kurinani, Kupindura kuri nani, Kureruka kwekushandisa uye nyore kodhi.
Ngatinyatsoongororai izvi. Kuita Nani Kugadzira yako Masonry-yakaita sedhizaini sisitimu, kana kushandisa yechitatu-bato raibhurari panzvimbo, zvinoreva kuti uchafanirwa kumhanyisa JavaScript kodhi kuisa zvinhu pachiratidziri. Izvi zvinoreva zvakare kuti iyi kodhi ichaita kuvharira. Chokwadi, hapana chinozoonekwa, kana zvinhu zvinenge zvisiri munzvimbo chaidzo kana hukuru chaihwo, kudzamara iyo JavaScript kodhi yapera. Masonry marongerwo anowanzo shandiswa kuchikamu chikuru chepeji rewebhu, zvinoreva kuti kodhi inenge ichiita kuti zvinyorwa zvako zvionekwe gare gare pane zvazvaigona, kusvibisa LCP yako, kana Largest Contentful Paint metric, iyo inoita basa guru mukuonekwa kwekuita uye kutsvaga injini optimization. Ndakaedza raibhurari yeMasonry JS ine dhizaini yakapusa uye nekutevedzera inononoka 4G yekubatanidza muDevTools. Raibhurari haina kunyanyokura (24KB, 7.8KB gzipped), asi zvakatora 600ms kurodha pasi pemamiriro angu ebvunzo. Heino kurekodha kwekuita kunoratidza iyo yakareba 600ms kurodha nguva yeraibhurari yeMasonry, uye kuti hapana chimwe chiitiko chekupa chakaitika pazvanga zvichiitika:
Pamusoro pezvo, mushure menguva yekutanga yekuremerwa, script yakarodha yaifanira kupepetwa, kuunganidzwa, uye kumhanyisa. Izvo zvese, sezvambotaurwa, zvaive zvichivharira kuburitswa kwepeji. Iine yakavakirwa-mukati Masonry kuita mubrowser, isu hatizove ne script yekurodha nekumhanya. Iyo bhurawuza injini inongoita chinhu chayo panguva yekutanga peji rekupa nhanho. Zvirinani Kuteerera Zvakafanana neapo peji rinotanga kurodha, kudzoreredza hwindo rebrowser kunotungamira kupa dhizaini mune iro peji zvakare. Panguva ino, zvakadaro, kana peji iri kushandisa raibhurari yeMasonry JS, hapana chikonzero chekuisa script zvakare, nekuti yatove.here. Nekudaro, iyo kodhi inofambisa zvinhu munzvimbo dzakakodzera inoda kumhanya. Ikozvino raibhurari iyi inoita kunge iri kukurumidza kuita izvi kana peji ichiremerwa. Nekudaro, inoraramisa zvinhu pavanenge vachida kuenda kune imwe nzvimbo pahwindo resize, uye izvi zvinoita mutsauko mukuru. Ehe, vashandisi havapedzi nguva vachichinjanisa browser yavo windows sezvatinoita isu vanogadzira. Asi iyi animated resizi chiitiko inogona kunakidza uye inowedzera kune inofungidzirwa nguva inotora kuti peji ienderane nehukuru hwayo hutsva. Kureruka Kwekushandisa uye Nyore Kodhi Zviri nyore sei kushandisa webhu ficha uye kuti yakapusa kodhi inotaridzika zvinhu zvakakosha zvinogona kuita mutsauko mukuru kuchikwata chako. Ivo havagone kuve yakakosha seyekupedzisira mushandisi ruzivo, hongu, asi ruzivo rwemugadzirirwo runokanganisa kuchengetedza. Kushandisa yakavakirwa-mukati webhu ficha kunouya nezvakakosha mabhenefiti pane iyo kumberi:
Vagadziri vanotoziva HTML, CSS, uye JS vangangokwanisa kushandisa iyo ficha zviri nyore nekuti yakagadzirwa kuti ibatane zvakanaka uye ienderane neyasara yewebhu chikuva. Iko hakuna njodzi yekutyora shanduko inounzwa mumashandisirwo ayo chimiro chinoshandiswa. Pane kanenge zero ngozi yekuti chinhu ichocho chiregererwe kana kusachengetedzwa.
Panyaya yeakavakirwa-mukati Masonry, nekuti iri dhizaini yekutanga, unoishandisa kubva kuCSS, seGrid kana Flexbox, hapana JS inobatanidzwa. Zvakare, zvimwe zvimiro zvine chekuita neCSS zvivakwa, senge gap, zvinoshanda sezvaungatarisira kuti vaite. Iko hakuna matipi kana maworkaround ekuziva nezvazvo, uye zvinhu zvaunodzidza zvakanyorwa paMDN. Kune iyo Masonry JS lib, kutanga kwakaoma zvishoma: zvinoda data hunhu neyakajeka syntax, pamwe neakavanzika HTML zvinhu kuseta koramu uye gap saizi. Uyezve, kana iwe uchida kutenderera makoramu, iwe unofanirwa kusanganisira iyo gap size iwe pachako kudzivirira matambudziko: