FastComments.com

Razgovor s slikama

FastComments Image Chat omogućuje interaktivne rasprave na slikama tako da korisnicima dopušta da kliknu bilo gdje na slici kako bi stvorili točke za raspravu. Korisnici mogu kliknuti na određene dijelove slika kako bi započeli razgovore o tim područjima, stvarajući vizualne oznake koje pokazuju gdje se rasprave nalaze.

Ova značajka je savršena za povratne informacije o dizajnu, recenzije proizvoda, obrazovne materijale s dijagramima, foto galerije s komentarima i bilo koji scenarij u kojem želite kontekstualne rasprave vezane uz određene lokacije na slici.

Responzivni dizajn Internal Link

Pozicioniranje na temelju postotaka

Image Chat koristi koordinate na temelju postotaka umjesto pikselnih koordinata za pozicioniranje oznaka razgovora na slikama. Kada korisnik klikne na sliku, widget pretvara pikselne koordinate klika u postotke širine i visine slike. Ovaj pristup osigurava da oznake ostaju na ispravnoj lokaciji bez obzira na to kako je slika prikazana.

Na primjer, ako korisnik klikne 250 piksela od lijevog ruba slike širine 1000px, widget to sprema kao 25% s lijeva. Kada drugi korisnik pregledava istu sliku širine 500px na mobilnom uređaju, oznaka se pojavljuje 125 piksela od lijevog ruba, što je i dalje 25% širine.

Prednosti za responzivne rasporede

Ovaj postotni sustav omogućuje da Image Chat besprijekorno radi na svim veličinama i orijentacijama uređaja. Vaše slike mogu biti prikazane u različitim veličinama ovisno o širini zaslona, CSS pravilima ili ograničenjima spremnika, ali se oznake uvijek ispravno poravnavaju s namijenjenim lokacijama.

Korisnici na stolnim računalima s velikim monitorima vide oznake u istim relativnim pozicijama kao korisnici na pametnim telefonima s malim zaslonima. Oznake se skaliraju proporcionalno sa samom slikom.

Skaliranje slika i omjer slike

Dok god vaša slika zadržava omjer pri skaliranju (što je zadano ponašanje preglednika), oznake na temelju postotaka ostat će savršeno poravnate. Widget pretpostavlja da se slike skaliraju proporcionalno i izračunava pozicije na temelju te pretpostavke.

Ako primijenite CSS koji iskrivljuje omjer slike (poput korištenja object-fit: cover s određenim dimenzijama), pozicije oznaka možda se neće ispravno poravnati. Za najbolje rezultate dopustite slikama da se prirodno skaliraju ili koristite object-fit: contain za očuvanje omjera slike.

Veličina kvadrata razgovora

Vizualna veličina oznaka razgovora također se temelji na postocima. Konfiguracijska opcija chatSquarePercentage ima zadanu vrijednost od 5%, što znači da je svaki kvadrat 5% širine slike. To osigurava dosljednu vizualnu težinu u različitim veličinama slika.

Na slici širine 1000px sa zadanom postavkom od 5%, oznake su kvadrati od 50px. Na slici širine 500px, iste oznake su kvadrati od 25px. Ostaju proporcionalne veličini slike.

Ponašanje na mobilnim uređajima

Na zaslonima širine manje od 768px, Image Chat prelazi na mobilno optimizirani raspored. Prozori razgovora otvaraju se preko cijelog zaslona umjesto da lebde uz oznaku. To pruža bolju upotrebljivost na malim zaslonima gdje bi leteći prozori prekrili previše slike.

Same oznake ostaju vidljive i klikabilne na svojim pozicijama temeljenim na postocima. Korisnici i dalje mogu vidjeti gdje se nalaze svi razgovori i dodirnuti oznake za otvaranje sučelja razgovora preko cijelog zaslona.

Dinamičko učitavanje slika

Postotni sustav ispravno radi čak i kada se slike učitavaju asinkrono ili mijenjaju veličinu nakon učitavanja stranice. Widget prati element slike i ponovno izračunava pozicije oznaka svaki put kada se dimenzije slike promijene.

Ako koristite lazy-loading slika ili implementirate responzivne slike s različitim veličinama na različitim prijelomnim točkama, oznake se automatski prilagođavaju kada se veličina slike promijeni.

Dosljednost među uređajima

Budući da se koordinate spremaju kao postoci u bazi podataka, razgovor stvoren na stolnom računalu pojavljuje se na potpuno istoj relativnoj lokaciji kada se pregledava na tabletu ili telefonu. Korisnici mogu surađivati na različitim uređajima bez ikakvih nekonzistentnosti u pozicioniranju.

Ovo radi u oba smjera. Razgovor stvoren dodirivanjem određene točke na mobilnom uređaju pojavljuje se na istoj relativnoj poziciji kada se pregledava na velikom monitoru stolnog računala.

Razmatranja o vidljivom području

Widget izračunava postotke u odnosu na sam element slike, a ne na vidljivo područje (viewport). To znači da pomicanje stranice ili promjena veličine prozora preglednika ne utječe na pozicije oznaka. Oznake ostaju usidrene na svojim lokacijama na slici bez obzira na promjene vidljivog područja.

Buduća otpornost sadržaja

Pristup temeljen na postocima čini vaše slikovne razgovore otpornima na promjene u rasporedu, dizajnu ili ekosustavu uređaja. Kako se pojavljuju nove veličine zaslona i uređaji, postojeći razgovori nastavit će se ispravno prikazivati bez potrebe za bilo kakvim ažuriranjima ili migracijama.

Prilagodba Internal Link

Podrška za tamni način

Image Chat uključuje ugrađenu podršku za tamni način. Kada postavite hasDarkBackground: true u svojoj konfiguraciji, prozori chata i UI elementi automatski se prilagođavaju kako bi dobro funkcionirali na tamnim pozadinama.

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    hasDarkBackground: true
});

Stilizacija tamnog načina primjenjuje se na prozore chata, kvadratiće markera i sve interaktivne elemente. Ako vaša stranica ima prekidač za tamni način, možete ponovo inicijalizirati widget kada se način promijeni, ili koristiti pristup s klasom body opisan u nastavku.

Dinamički tamni način

Ako je tamni način na vašoj stranici kontroliran dodavanjem klase .dark na element body, Image Chat UI će automatski poštovati to bez potrebe za ponovnom inicijalizacijom. Stilovi widgeta su dizajnirani da reagiraju na prisutnost te klase.

/* Vaš CSS za tamni način */
body.dark {
    background: #1a1a1a;
    color: #ffffff;
}

Prilagođavanje stila pomoću CSS-a

Možete prilagoditi izgled markera, prozora chata i drugih elemenata pomoću CSS-a. Widget dodaje posebne klase koje možete ciljati u svom stylesheetu.

Chat kvadratići i prozori koriste FastComments sustav stiliziranja komentarskih oblačića, pa će sve prilagodbe koje ste primijenili na standardni widget za komentiranje također utjecati na Image Chat.

Veličina chat kvadratića

Opcija chatSquarePercentage kontrolira veličinu klikabilnih markera. Zadana vrijednost je 5% širine slike:

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    chatSquarePercentage: 7  // Veće, vidljivije kvadratiće
});

Manje vrijednosti stvaraju diskretnije markere koji se bolje uklapaju u sliku. Veće vrijednosti čine markere istaknutijima i lakšima za klik, posebno na mobilnim uređajima ili iz pristupačnih razloga.

Ponašanje na mobilnim uređajima

Na ekranima širim manje od 768px, Image Chat se automatski prebacuje na layout optimiziran za mobilne uređaje. Prozori chata se prikazuju preko cijelog zaslona umjesto da plutaju pored markera, što poboljšava upotrebljivost na malim ekranima.

Markeri ostaju vidljivi na svojim responzivnim pozicijama na slici. Korisnici mogu dodirnuti bilo koji marker da otvore fullscreen sučelje chata. Ovo ponašanje je ugrađeno i ne zahtijeva konfiguraciju.

Izgled prozora chata

Prozori chata imaju širinu od 300px na desktopu s 16px strelicom koja pokazuje na marker. Prozori se automatski pozicioniraju na temelju dostupnog prostora u viewportu, koristeći klase pozicioniranja poput to-right, to-left, to-top i to-bottom.

Možete dodati prilagođeni CSS za podešavanje boja, fontova, razmaka ili drugih vizualnih svojstava ovih prozora. Prozori chata koriste istu strukturu komponenti kao standardni FastComments widget, pa nasljeđuju sve globalne prilagodbe koje ste primijenili.

Lenja inicijalizacija

Prozori chata se inicijaliziraju pri hoveru za desktop korisnike ili odmah kada su stvoreni. Time se smanjuje početno opterećenje učitavanja jer se sučelje chata renderira samo kada korisnici zapravo komuniciraju s markerom.

Lenja inicijalizacija se odvija transparentno. Korisnici ne primjećuju kašnjenje, ali pregledniku nije potrebno renderirati desetke skrivenih prozora chata ako imate mnogo markera na slici.

Lokalizacija

Image Chat podržava sve iste opcije lokalizacije kao standardni FastComments widget. Postavite opciju locale za prikaz UI teksta na različitim jezicima:

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    locale: 'fr'  // Francuski
});

FastComments podržava desetke jezika. Postavka lokaliteta utječe na sav UI tekst uključujući upite, gumbe i tekst mjesta za unos.

Naslijeđene opcije prilagodbe

Budući da Image Chat proširuje standardni widget za komentiranje, nasljeđuje sve opcije prilagodbe iz osnovnog widgeta. To uključuje prilagođene CSS klase, prilagođene prijevode, prilagodbu avatara, formatiranje datuma i mnogo više.

Pogledajte glavnu FastComments dokumentaciju o prilagodbi za potpuni popis dostupnih opcija prilagodbe.

Rad s prilagođenim fontovima

Ako vaša stranica koristi prilagođene fontove, Image Chat UI će naslijediti te fontove iz CSS-a vaše stranice. Prozori chata renderiraju unutar DOM-a vaše stranice i poštuju postojeća tipografska podešavanja.

Za najbolje rezultate, osigurajte da su vaši prilagođeni fontovi učitani prije inicijalizacije Image Chat-a, ili prihvatite da može doći do kratkog treptaja nestiliziranog teksta dok se fontovi učitavaju.

Vizualni dizajn markera

Kvadratni marker ima suptilan vizualni dizajn koji ga čini uočljivim bez preplavljivanja slike. Možete prilagoditi njihov izgled pomoću CSS-a ako želite drugačiji vizualni pristup.

Markeri sadrže hover stanja koja daju povratnu informaciju kada korisnici pomaknu miš preko njih. Na uređajima na dodir, interakcija dodirom daje neposrednu povratnu informaciju otvaranjem prozora chata.

Sinkronizacija uživo Internal Link

Ažuriranja u stvarnom vremenu

Image Chat koristi WebSocket veze za sinkronizaciju svih razgovora u stvarnom vremenu među svim povezanim korisnicima. Kada netko stvori novi marker, doda komentar ili izbriše raspravu, svi ostali korisnici koji gledaju istu sliku odmah vide ažuriranje bez osvježavanja.

Kako funkcionira WebSocket sinkronizacija

Kada inicijalizirate Image Chat, widget uspostavlja WebSocket vezu s FastComments poslužiteljima. Ova veza ostaje otvorena tijekom trajanja korisničke sesije i sluša ažuriranja povezana s trenutnom slikom.

WebSocket sustav koristi tri vrste broadcast poruka za Image Chat. Događaj new-image-chat aktivira se kada netko stvori novi marker na slici. Događaj image-chat-updated aktivira se kada netko ažurira postojeći razgovor. Događaj deleted-image-chat aktivira se kada netko izbriše marker.

Sustav broadcast ID-jeva

Kako bi se spriječili efekti odjeka gdje korisnici vide vlastite akcije vraćene natrag njima, svako ažuriranje uključuje jedinstveni broadcastId. Kada korisnik stvori ili ažurira marker, njegov klijent generira UUID za tu operaciju. Kada WebSocket emitira ažuriranje natrag svim klijentima, izvorni klijent ignorira ažuriranje jer se podudara s vlastitim broadcastId.

To osigurava glatku interakciju gdje korisnici odmah vide svoje promjene u sučelju bez čekanja na povratni put kroz poslužitelj, dok se istovremeno osigurava da svi ostali korisnici dobiju ažuriranje.

Otpornost veze

Ako se WebSocket veza prekine zbog mrežnih problema ili održavanja poslužitelja, widget automatski pokušava ponovno uspostaviti vezu. Tijekom razdoblja ponovnog povezivanja, korisnici i dalje mogu komunicirati s postojećim markerima, ali neće vidjeti ažuriranja u stvarnom vremenu od drugih korisnika dok se veza ne uspostavi ponovno.

Nakon ponovnog povezivanja, widget se resinkronizira kako bi osigurao da nije propušteno nijedno ažuriranje. To se događa transparentno bez potrebe za intervencijom korisnika.

Razmatranja propusnosti

WebSocket poruke su lagane i sadrže samo bitne informacije potrebne za sinkronizaciju stanja. Stvaranje novog markera obično koristi manje od 1KB propusnosti. Sustav također uključuje inteligentno grupiranje kako bi se smanjila učestalost poruka tijekom razdoblja visoke aktivnosti.

Vaše metrike korištenja u FastComments nadzornoj ploči prate pubSubMessageCount i pubSubBandwidth kako biste mogli pratiti aktivnost sinkronizacije u stvarnom vremenu na svojim stranicama.

Sinkronizacija između kartica

Ako korisnik ima istu stranicu otvorenu u više kartica preglednika, ažuriranja u jednoj kartici odmah se pojavljuju u ostalim karticama. To funkcionira kroz isti mehanizam WebSocket sinkronizacije i ne zahtijeva nikakvu dodatnu konfiguraciju.

Korisnici mogu imati vašu stranicu otvorenu na više uređaja istovremeno, i svi će ostati sinkronizirani. Marker stvoren na računalu odmah se pojavljuje na korisnikovom tabletu ako oba uređaja gledaju istu sliku.

Sigurnost

WebSocket poruke se prenose preko sigurnih veza (WSS) i uključuju validaciju stanara (tenant) kako bi se osiguralo da korisnici primaju samo ažuriranja za razgovore koje su ovlašteni vidjeti. Poslužitelj validira sve operacije prije nego što ih emitira kako bi spriječio neovlašteni pristup ili manipulaciju.

Ponašanje izvan mreže

Kada su korisnici potpuno izvan mreže, i dalje mogu vidjeti postojeće markere, ali ne mogu stvarati nove niti vidjeti ažuriranja drugih. Widget otkriva stanje izvan mreže i prikazuje odgovarajuću poruku.

Ako korisnik pokuša stvoriti marker dok je izvan mreže, a zatim se vrati na mrežu, operacija će propasti umjesto da se stavi u red čekanja, čime se osigurava konzistentnost podataka. Korisnici trebaju ponoviti operaciju nakon što se veza obnovi.

Utjecaj na performanse

WebSocket veza ima minimalan utjecaj na performanse. Veza ostaje neaktivna kada nema ažuriranja i obrađuje poruke samo kada se dogodi aktivnost. Na tipičnoj slici s umjerenom aktivnošću markera, WebSocket koristi manje CPU-a nego samo renderiranje slike.

Za stranice sa stotinama istovremenih korisnika i visokom aktivnošću stvaranja markera, sustav se horizontalno skalira kako bi održao performanse bez utjecaja na pojedinačne klijentske veze.

Suradnički primjeri upotrebe

Sinkronizacija u stvarnom vremenu čini Image Chat posebno moćnim za suradničke tijekove rada. Dizajnerski timovi mogu zajedno pregledavati mockupove dok svi u stvarnom vremenu vide postavljanje markera. Timovi za korisničku podršku mogu suradnički označavati snimke zaslona kako bi identificirali probleme. Obrazovne skupine mogu raspravljati o dijagramima dok svi sudionici vide markere jedni drugih čim se stvore.

Trenutna povratna informacija stvara angažiranije i produktivnije suradničko iskustvo u usporedbi s tradicionalnim sustavima komentara gdje korisnici trebaju osvježiti stranicu da vide ažuriranja.

Imate pitanja?

To je sve za FastComments Image Chat! Ako imate bilo kakvih pitanja, trebate pomoć pri implementaciji ili imate prijedloge za značajke, javite nam u nastavku ili se obratite našem timu za podršku.

Pogledajte živi demo na našoj demo stranici da biste vidjeli Image Chat u akciji.