FastComments.com

FastComments Image Chat 讓影像上的互動討論成為可能,使用者可以在影像上的任意位置點擊以建立討論點。使用者可以點選影像的特定部分以針對那些區域開始對話,建立顯示討論位置的視覺標記。

此功能非常適合設計回饋、產品評論、帶有示意圖的教學材料、附有評論的相片庫,以及任何需要將情境式討論錨定於特定影像位置的場合。

響應式設計 Internal Link

百分比定位

圖片聊天室使用基於百分比的座標,而不是像素座標,來在影像上定位聊天標記。當使用者點擊影像時,元件會將點擊的像素座標轉換為相對於影像寬度和高度的百分比。這種做法可確保標記無論圖像如何顯示都會保持在正確的位置。

例如,如果使用者在一張寬度為 1000px 的影像上從左邊緣向右點擊 250 像素,元件會將這個位置儲存為從左邊緣算起的 25%。當另一位使用者在行動裝置上以 500px 寬度查看相同影像時,標記會出現在從左邊緣 125 像素處,這仍然是寬度的 25%。

對響應式佈局的好處

這個百分比系統讓圖片聊天室能在所有裝置尺寸與方向上無縫運作。你的圖像可能會根據螢幕寬度、CSS 規則或容器限制而以不同大小顯示,但標記總是會與預期位置對齊。

使用大型螢幕的桌面電腦使用者會看到與使用小螢幕智慧型手機的使用者相同相對位置的標記。標記會隨著影像本身等比例縮放。

影像縮放與長寬比

只要你的影像在縮放時維持其長寬比(這是瀏覽器的預設行為),基於百分比的標記就會保持完美對齊。元件假設影像是等比例縮放,並基於此假設來計算位置。

如果你套用會扭曲影像長寬比的 CSS(例如使用 object-fit: cover 並搭配特定尺寸),標記位置可能無法正確對齊。為獲得最佳結果,讓影像自然縮放或使用 object-fit: contain 以維持長寬比。

聊天方塊大小

聊天標記的視覺大小也是基於百分比的。chatSquarePercentage 配置選項預設為 5%,表示每個方塊為影像寬度的 5%。這確保了不同影像尺寸間一致的視覺權重。

在寬度為 1000px 的影像上使用預設 5% 設定時,標記為 50px 的方形。在寬度為 500px 的影像上,相同的標記為 25px 的方形。它們會與影像尺寸保持比例。

行動裝置行為

在寬度小於 768px 的螢幕上,圖片聊天室會切換到行動優化的佈局。聊天視窗會以全螢幕方式開啟,而不是浮動在標記旁邊。這在小螢幕上提供更好的可用性,避免浮動視窗遮擋過多影像。

標記本身仍會在其百分比位置上可見且可點擊。使用者仍可看到所有討論的位置,並點選標記以開啟全螢幕聊天介面。

動態圖片載入

即使影像是非同步載入或在頁面載入後改變大小,基於百分比的系統仍會正常運作。元件會監控影像元素,並在影像尺寸改變時重新計算標記位置。

如果你使用延遲載入影像或在不同斷點實作具有不同尺寸的響應式影像,當影像尺寸改變時標記會自動調整。

跨裝置一致性

因為座標以百分比形式儲存在資料庫中,在桌面電腦建立的討論在平板或手機上查看時會出現在完全相同的相對位置。使用者可以跨裝置協作,而不會產生定位不一致的問題。

這個行為是雙向的。在行動裝置上點選特定位置建立的討論,在大型桌面顯示器上查看時會出現在相同的相對位置。

視口考量

元件計算百分比是相對於影像元素本身,而非視口。這表示捲動頁面或改變瀏覽器視窗大小不會影響標記位置。標記會固定在影像上的位置,不受視口變動影響。

未來相容性

基於百分比的方法讓你的影像討論能抵抗佈局、設計或裝置生態系的變化。隨著新螢幕尺寸與裝置的出現,既有的討論會持續正確顯示,而不需要任何更新或遷移。

自訂 Internal Link

Dark Mode Support

Image Chat 包含內建的深色模式支援。當您在設定中將 hasDarkBackground: true 設定時,聊天視窗與 UI 元素會自動調整,以便在深色背景上良好顯示。

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

深色模式樣式會套用到聊天視窗、標記方塊,以及所有互動元素。如果您的網站有深色模式切換,您可以在模式改變時重新初始化 widget,或使用下方描述的 body class 方法。

Dynamic Dark Mode

如果您網站的深色模式是透過在 body 元素新增 .dark 類別來控制,Image Chat 的 UI 會自動配合此類別,無需重新初始化。該 widget 的樣式設計會回應此類別的存在。

/* 您的深色模式 CSS */
body.dark {
    background: #1a1a1a;
    color: #ffffff;
}

Custom Styling with CSS

您可以使用 CSS 自訂標記、聊天視窗和其他元素的外觀。widget 會新增特定的類別,您可以在樣式表中針對這些類別進行調整。

聊天方塊與視窗使用 FastComments 的評論氣泡樣式系統,因此您對標準評論 widget 所做的任何自訂也會影響 Image Chat。

Chat Square Sizing

chatSquarePercentage 選項控制可點擊標記的大小。預設為影像寬度的 5%:

FastCommentsImageChat(imageElement, {
    tenantId: 'demo',
    chatSquarePercentage: 7  // 較大、更醒目的方塊
});

較小的數值會產生較不突出的標記,能與影像更好地融合。較大的數值則會讓標記更顯眼、也更容易點擊,尤其是在行動裝置或為了無障礙性考量時。

Mobile Behavior

在寬度小於 768px 的螢幕上,Image Chat 會自動切換為行動裝置最佳化的版面配置。聊天視窗會以全螢幕方式顯示,而非在標記旁浮動,以在小螢幕上提供更好的可用性。

標記仍會保留在影像上其回應式的位置。使用者可以點擊任何標記以開啟全螢幕聊天介面。此行為為內建功能,無需任何額外設定。

Chat Window Appearance

桌面上聊天視窗寬度為 300px,並有一個指向標記的 16px 箭頭。視窗會根據可用的視窗空間自動定位,使用像是 to-rightto-leftto-topto-bottom 的定位類別。

您可以加入自訂 CSS 以調整這些視窗的顏色、字型、間距或其他視覺屬性。聊天視窗使用與標準 FastComments widget 相同的元件結構,因此會繼承您所套用的任何全域自訂。

Lazy Initialization

聊天視窗會在桌面使用者滑鼠懸停時初始化,或在建立時立即初始化。這降低了初始載入的開銷,因為只有在使用者與標記互動時才會渲染聊天介面。

延遲初始化發生得很透明。使用者不會察覺到任何延遲,但如果影像上有許多標記,瀏覽器也不需要渲染數十個隱藏的聊天視窗。

Localization

Image Chat 支援與標準 FastComments widget 相同的所有在地化選項。設定 locale 選項以在不同語言中顯示 UI 文字:

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

FastComments 支援數十種語言。locale 設定會影響所有 UI 文字,包括提示、按鈕和佔位文字。

Inherited Customization Options

由於 Image Chat 擴充了標準評論 widget,它會繼承來自基礎 widget 的所有自訂選項。這包括自訂 CSS 類別、自訂翻譯、頭像自訂、日期格式化等等。

請參閱主要的 FastComments 自訂文件以取得可用自訂選項的完整清單。

Working with Custom Fonts

如果您的網站使用自訂字型,Image Chat 的 UI 會從您頁面的 CSS 繼承這些字型。聊天視窗會在您的頁面 DOM 中渲染並遵循您現有的排版設定。

為取得最佳效果,請確保在初始化 Image Chat 之前載入自訂字型,或接受在字型載入期間可能出現的短暫無樣式文字閃爍。

Marker Visual Design

方形標記具有細緻的視覺設計,使其在不搶走影像焦點的情況下仍然顯眼。如果您想要不同的視覺處理,可以使用 CSS 自訂它們的外觀。

標記包含滑鼠懸停狀態,在使用者將滑鼠移到標記上時提供回饋。在觸控裝置上,點擊互動會透過開啟聊天視窗立即提供回饋。

即時同步 Internal Link

即時更新

Image Chat 使用 WebSocket 連線來即時同步所有已連線使用者之間的對話。當有人建立新的標記、加入留言或刪除討論時,所有正在檢視相同圖片的其他使用者會立即看到更新而不需重新整理。

WebSocket 同步如何運作

當您初始化 Image Chat 時,這個小工具會與 FastComments 伺服器建立一個 WebSocket 連線。此連線在使用者的會話期間保持開啟,並監聽與當前圖片相關的更新。

WebSocket 系統為 Image Chat 使用三種類型的廣播訊息。new-image-chat 事件在有人於圖片上建立新標記時觸發。image-chat-updated 事件在有人更新既有對話時觸發。deleted-image-chat 事件在有人刪除標記時觸發。

廣播 ID 系統

為防止回音效應(使用者看到自己執行的動作又被廣播回來),每次更新都包含唯一的 broadcastId。當使用者建立或更新標記時,他們的用戶端會為該操作產生一個 UUID。當 WebSocket 將更新廣播回所有用戶端時,原始用戶端會忽略該更新,因為它與自己的 broadcastId 相符。

這確保了順暢的互動體驗:使用者能立即在 UI 中看到他們的變更,而不必等伺服器往返的回應,同時也確保所有其他使用者會收到該更新。

連線復原能力

如果 WebSocket 連線因網路問題或伺服器維護而中斷,該小工具會自動嘗試重新連線。在重新連線期間,使用者仍可與現有標記互動,但在連線重新建立之前,他們不會看到其他使用者的即時更新。

一旦重新連線,小工具會重新同步以確保沒有遺漏的更新。這個過程是透明的,不需要使用者介入。

頻寬考量

WebSocket 訊息輕量,只包含同步狀態所需的必要資訊。建立新標記通常使用不到 1KB 的頻寬。系統亦包含智慧批次處理,以在高活動期間減少訊息頻率。

您在 FastComments 儀表板中的使用量指標會追蹤 pubSubMessageCountpubSubBandwidth,以便您監控跨網站的即時同步活動。

跨分頁同步

如果使用者在多個瀏覽器分頁開啟相同頁面,一個分頁的更新會立即出現在其他分頁。這是透過相同的 WebSocket 同步機制運作,且不需要任何額外設定。

使用者也可以在多個裝置同時開啟您的網站,所有裝置都會保持同步。若在桌機上建立標記,且平板也在檢視相同圖片,該標記會立即出現在平板上。

安全性

WebSocket 訊息經由安全連線(WSS)傳輸,並包含租戶驗證以確保使用者僅收到其有權檢視的對話更新。伺服器在廣播前會驗證所有操作,以防止未授權的存取或操控。

離線行為

當使用者完全離線時,他們仍可檢視既有標記,但無法建立新標記或看到其他人的更新。小工具會偵測離線狀態並顯示適當的訊息。

如果使用者在離線時嘗試建立標記,之後回到線上時該操作會失敗而非排隊,這可確保資料一致性。使用者應在連線恢復後重試該操作。

效能影響

WebSocket 連線對效能的影響極小。當沒有更新發生時,連線處於閒置狀態,僅在有活動時處理訊息。在標記活動適中的一般圖片上,WebSocket 使用的 CPU 通常少於渲染圖片本身所需的 CPU。

對於有數百名同時使用者且標記建立活動頻繁的頁面,系統會橫向擴展以維持效能,同時不影響單一用戶端的連線。

協作使用情境

即時同步使 Image Chat 對協作工作流程特別有用。設計團隊可以一起檢閱模型,所有人會即時看到標記位置。客戶支援團隊可以共同註解截圖以找出問題。教學群組可以討論圖表,所有參與者在標記建立時即時看到彼此的標記。

即時回饋相較於需要重新整理才能看到更新的傳統留言系統,能提供更具互動性與生產力的協作體驗。

有問題嗎?

以上就是 FastComments Image Chat!如果您有任何問題、需要實作上的協助,或有功能建議,請在下方告訴我們或聯絡我們的支援團隊。

請到我們的 示範頁面 查看即時示範,以觀賞 Image Chat 的實際運作。