發表文章

有時候可以用matchMedia當resize的替代方案

圖片
matchMedia 的易用性 JavaScript 語法中的 matchMedia 瀏覽器相容性很高,IE10 以上都支援,所以基本上不用擔心什麼 polyfill。 而 matchMedia 的用法就像寫 CSS 的 media query 或 HTML 的 picture 一樣: var xsMQ = window.matchMedia('(min-width: 480px)'); var mdMQ = window.matchMedia('(min-width: 992px)'); 變數 xsMQ 和 mdMQ 是 boolean 值 ,因此,可以用判斷式來做想做的事。 matchMedia 與 change 事件結合 我們都知道 resize 有效能問題,需要用 debounce 或 throttle 解決,而如果把上述的 matchMedia 判斷式寫成 function,更可以用 change 事件 做到 resize 可以做的事! function mediaQueryStep(){ if(xsMQ.matches){ if(mdMQ.matches){ // big size:do something... }else{ // between big and small size:do something... } }else{ // small size:do something... } } xsMQ.addEventListener('change', mediaQueryStep); mdMQ.addEventListener('change', mediaQueryStep); mediaQueryStep(); 所以,在一些media query 沒有每改變 1 pixel 就會觸發某事件的情況下,matchMedia 也不失為一個好選擇。

Chrome和Edge在網址列打上網域加空格,會觸發站內搜尋功能

圖片
最近才在上方的網址列發現站內搜尋這個功能…… 網址列站內搜尋功能展示 操作方法 只要在網址列輸入該網域後,再空一格就會出現站內搜尋的功能;而且,就算是使用 Google CSE 的站內搜尋網站也會出現。但是,並不是每個網站都能這麼順利出現這個功能。 輸入後出現的搜尋結果頁面 網站實裝猜測 我自己原本猜測是跟 WebSite 這個結構化資訊或使用者本身常不常去有關,但就算有設定也常去了,也不見得百分之百會出現這個功能,所以 chrome 的依據到底是什麼其實沒那麼肯定。 站內搜尋結構化資料 站內搜尋的結構化資料範例如下,其本上每個網站只有 url 和 target 欄位值不一樣而已,但要注意只需加在網站首頁就好了,不要每一頁都加。 { "@context": "https://schema.org", "@type": "WebSite", "url": "https://test.example.com", "potentialAction": [{ "@type": "SearchAction", "target": "https://test.example.com/search?q={search_term_string}", "query-input": "required name=search_term_string" }] } 你也可以看 Google 寫的 網站連結搜尋框 ,基本上大同小異。 有了這個設定,說不定還能在 SERP 出現搜尋欄,雖然一樣是不一定會出現,但怎麼想都賺。 Firefox 的建議網頁 順帶一提,如果使用一樣的方式在 Firefox 網址列操作的話,跟 Chrome 不同,會出現「建議網頁」。 Firefox 網址列的建議網頁

「提供 next-gen 格式的圖片」是什麼意思

圖片
如果你在改善網站速度,對這句話想必一定很眼熟(沒錯,就是 PageSpeed Insights),但到底什麼是 next-gen?簡單來說就是 WebP、AVIF、JPEG2000、JPEG XR 等格式的圖片。 WebP WebP 目前是這四種格式中支援度最廣的格式,且支援去背和透明度。 它除了 IE11 之外,基本上都支援;而 safari 則要看版本夠不夠新(macOS 11)。 WebP 的瀏覽器支援度 另外,它有一個很像的名詞叫 WebM 影片格式: WebM 是一個由 Google 資助的專案(WebP 也和 Google 有關),目標是構建一個開放的、免著作權費用的影片格式檔。該影片格式能提供高品質的影片壓縮以配合 HTML5 使用。( wiki )用途基本上一樣是為了改善網頁載入速度。 AVIF Netflix 聲稱 AVIF 將會是下一代的圖像編碼演算法,並稱它對於他們的影音串流媒體網站而言,是取代 JPEG 格式的最佳選擇。 不過,相較於 2010 年就出現的 WebP,2019 年才誕生的 AVIF 支援度在2023年之後才追趕上來。 AVIF的瀏覽器支援度 JPEG 2000 JPEG 2000 比前兩者更早出現,副檔名是 .jp2 或 .j2c,跟 AVIF 一樣在當年被吹捧成下一代圖像的壓縮標準,但至今幾乎沒有網站在用,也只有 safari 有支援,其它瀏覽器完全不想理它。 JPEG2000 的瀏覽器支援度 JPEG XR、JPEG XL JPEG XR(JPEG extended range)是基於由 Microsoft 所開發的 HD Photo 的圖像格式,所以……基本上只有 IE9~IE11 和舊版本的 Edge 支援。 IE 專屬的 JPEG XR JPEG XL 則發表於 2017 年,但就目前為止的支援度是慘不忍賭,完全沒有瀏覽器支援。 實際運用 基本上,還是要靠 HTML 的 picture 來使用最安全,或者是寫程式判斷瀏覽器支援度,然後載入相對應的圖片格式。個人認為,目前使用 WebP + jpg/png/gif 的應對方式就夠了,頂多再加個 AVIF,但效益如何就自己判斷了。 再來就是 server 端有沒有設定宣告的問題。舉例來說,如果你是用 web.config 設定網站的話...

網站 Favicon 使用 SVG 檔的好處

圖片
什麼是 favicon? favicon 是 favorites icon 的縮寫,中文通常稱為頁面圖示(page icon)或網站圖標(website icon);簡單一點來說,就是瀏覽器最上面各分頁會出現的圖案。 像我這個網站的favicon 是位可愛的吸血鬼 favicon 除了可以用傳統的 ico 檔,也可以用 png 檔,甚至可以用 SVG 檔。 為何要特地用 SVG 檔? 用一般圖檔就好了,何必要再創作一個 SVG 檔呢?因為 瀏覽器有 dark mode 的存在 ,這個模式可能會讓網頁的 favicon 看不清楚,這就是我推薦使用 SVG 檔的原因,因為我們可以很輕易地在 SVG 檔中塞 CSS 語法進去調色,別的檔案格式沒有這種能力。 看到一看就知道沒去背的白底 icon 會讓我很焦慮, 以下為簡單的例子: <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve"> <style> path{fill:#2858aa;} @media (prefers-color-scheme: dark) {path{fill: #23A6DE;}} </style> <path d="example"/> </svg> 「 prefers-color-scheme : dark」就是在 dark mode 下呈現的樣貌,寫法跟 media query 一樣。我們可以在括號範圍內設定一個比較亮的顏色(fill: #23A6DE)才不會讓使用者看不清楚。 favicon HTML 設定 在 HTML 的 head 標籤裡照這樣設...

Google搜尋結果出現縮排網頁(indented),造成排名變動

圖片
在搜尋結果中,某些網頁下面會附帶一個前方空一格的網頁(Indented Results)。這種「縮排」會造成什麼情況?因為它與排名第一才可能會出現的目錄(Sitelinks)不同,也算在搜尋結果排名之中,就把原本排名 9、10 名的網頁擠到第 2 頁去了(預設一頁只有十個搜尋結果)。 什麼情況會產生縮排網頁 多語系且不同網址的相同內容。 與使用者意圖相關的內容。 同網域且在講同一件事的文章。 PDF 其它相關內容? 下面簡單找幾個例子來看: 這2篇文章都在說同一件事,可能因此才附加縮排網頁 sitelinks 和 縮排同時出現 不同子網域出現在縮排的情況,研判是相關內容且對使用者更方便的網頁(一頁式 eDM) 依我的理解,這可能與「搜尋旅程」有關。但是搜尋「mes廠商」的使用者,還需要理解什麼是mes嗎?(在我寫完這篇文章後2天,Google就把它拿掉了) 另外,中文使用者一定較容易看到,繁中或簡中雙語系其一出現在縮排的搜尋結果,例如 wiki、facebook 或其它多語系網站。 還有一種是相同內容,但不同媒介的文章,例如網頁版和 pdf 版。曾遇過 title 與內文一模一樣的 pdf 縮排。 就目前看到的情況是這樣,可能還有其它狀況。 初步實驗 我拿出現不同子網域 B 的縮排網頁當受試者(上面不是縮排的子網域為 A):做一個幾乎跟縮排網頁一模一樣內容的網頁,但放在相同的子網域 A 中,並把原本在 B 的縮排網頁 301 轉址到這個新網頁。 得到的結果是:搜尋結果的縮排網頁消失。 但若搜尋結果本身是首頁的話,縮排網頁會先消失幾天,之後又出現變成 sitelinks 的一份子,然後又消失。 我的看法 所以,Google 對自己在 SERP 選上的網頁沒有自信嗎?居然用這種方式幫本來排名就較強勢的網頁多佔一個名次。 又或者,是在幫重覆內容的網頁解套?雖然 Google 說過重覆內容不會被懲罰,但同個母網域最多只會出現 2 個網頁在搜尋結果的規則,就讓擁有重覆內容的網站管理者傷透腦筋;這種「縮排」一出現反而幫了這些網站大忙, 這讓盡力保持沒有重覆內容的網站情何以堪? 無論如何,會附帶縮排的搜尋結果,或許是 Google 認為該區塊可以讓 使用者的搜尋旅程 短一點。 附上 John Mueller 在 202...

網頁標題在Google搜尋結果會被如何更改?

圖片
有些網頁在 SERP 的標題 <title> 會被 Google 大幅度改寫,而實際的運作機制又是什麼呢?SEO 又是否會被影響? Google 如何生成新的網頁標題: 我們已經知道 Google 會改寫標題的頭尾(把產品或企業名稱加在標題結尾或開頭),但這次的改動比起前者更進一步,可能整句都會被重寫或刪除。 根據 Google 公開的說明頁面 和他們之後提供的 補充說明 可以得知,他們確實在 8 月 16 日推出了新的網頁標題生成系統,並會從該網頁的主視覺標題、一般標題、h1 或 h2 h3 之類的標籤內容,或者使用樣式而變得大而突出的內容,進而產生新的網頁標題文案。 更甚者,可能還會參考頁面中的其他文字、使用指向該頁面連結中的文字,或是自己改年份加項次來「改善」該頁面原本的標題。 但實際上改變不止侷限於 Google 公開的方式,還包含 直接截短 、 刪除句中的某些關鍵字 。用這個網誌來舉例的話,〈簡單理解LCP、FID、CLS三個網站使用體驗核心指標是什麼、對SEO的影響、改善案例〉這篇的標題因為太長了,便會被 Google 截短只剩下〈簡單理解LCP、FID、CLS三個網站使用體驗核心指標是什麼〉。 所以,我們可以簡單歸納出原本和現今的標題改動方式: 在前面或後面加上品牌名。 直接截斷。 截取網頁內容資訊(通常是大標)。 增加搜尋相關關鍵字在標題中。 刪除不必要的關鍵字或行銷術語後重新排列。 改年份或加項次(第1季 第2季)來區別重覆標題。 使用指向該頁面連結中的文字(極少)。 上述情況有時候會同時出現。 順帶一提,Google 認定「品牌名」的方式,經過我自己的實驗是和首頁的 title 大有關聯,另外還會參考各網頁 title 像產品名的重覆字詞。而 title 整體太長的話,除了常見的「...」結尾之外,也可能會直接把品牌名刪除;而比較特別在結尾有「雙品牌」的標題,也見過其中一個品牌名被移到最前面的情況。所以請小心命名,避免關鍵字被當成品牌名的一部分而遭 Google 刪改或移動。 另外,Google 對於品牌名的區隔符號比較偏好「-」而不是「|」,括號也有高機率會被更改。 ...

最大公因數和最小公倍數計算機(多數字)

最大公因數、最小公倍數計算機 請輸入數字 1 和數字 2 之後,按下「計算」按鈕,或新增數字 3、4…,看要計算幾個數字, 就可以得到最大公因數(1,2,...) 和最小公倍數[1,2,...]。 數字 1: 數字 2: 增加輸入框 刪除輸入框 計算

如何產生醒目顯示文字的連結?讓使用者一目瞭然的功能(Scroll to Text Fragment)

圖片
若你在優化任何非網站的網址(Office文件、PDF、留言、Email、Google 我的商家、SERP結構化資料如 FAQ 中的網址),除了在網址使用 #id (錨點)之外,Scroll to Text Fragment 或許是另一個可以考慮的方式。 URL Scroll to Text Fragment 是什麼? 它的功能是在網址中設定文字,使用者點擊網址進入網頁後,可能看到被強調的文字,並將畫面移動到該文字處,文字高度在畫面中間。這並不是什麼新功能,早在 chrome 80 以後就出現在以 chrome 為核心的瀏覽器之中了。 如何創建? 複製醒目顯示文字連結 在 chrome 90 之後的版本,網頁上選取(反白)文字之後按右鍵,就會出現「 複製醒目顯示文字的連結 」的功能,點擊該功能產生的連結,貼到任何除了該連結頁面之外的地方,被點擊後就可以產生上一段文字提到的效果。如果沒有該功能,可能是被設定成關閉,網址列輸入 chrome://flags 並按下enter後,找到 Copy Link To Text 後就能開啟該功能(enabled)。 如何關閉? 但是,在最新版本的 chrome 中, chrome://flags 已經找不到 Copy Link To Text 這個指令了,換句話說就是沒辦法關閉這個功能,還請注意。 文字反白之後右鍵即可看見該功能   連結的架構與DIY 若不想透過 chrome 附加的功能直接設定使用的話,自己也可以設計出這種特殊網址,方法與錨點類似,不過是加上「 #:~:text= 」 完整結構: https://example.com#:~:text=[prefix-,]textStart[,textEnd][,-suffix] 方法1 整段文字: 只使用 textStart 的話是最簡單的使用方式: #:~:text=文字 ,它會當成要 highlight 的所有文字,就像 {這個連接} 的範例一樣。 方法2 文字區段: 你也可以打上兩段文字: #:~:text=文字1,文字2 ,分別代表開頭和結尾,它會找尋這一區段的文字 highlight,這裡也用 {這個連接} 示範一次。 方法3 多段文字: 可以使用「&」區隔: #:~:text=文字1&text=文字2 。但是個人不建議這樣做,畫...

UX = User Exploitation (利用使用者)

圖片
看到一篇 談論1997年至今的 UX 發展 的翻譯文章,原文的作者是Mark Hurst,看完之後心有戚戚焉,推薦給大家一起看,力道雖然沒有「 真正發生過的恐怖IT故事 」強,但也一樣是很無奈的現況。 KORONE FALCON PUNCH 文章從1997年至今分成3個10年去描述 UX 產業的變遷。 UX 的定義已經從原本的 user experience,漸漸被 user exploitation 取代,網站不再以便利性為目標,而是網站擁有者的目的為目標:試圖以各種方式誘導或阻止使用者在網站上做某些事情。 就像中文的「設計」一樣,英文可以翻譯成 design,也可以翻成 calculating。 真實案例 該文用 Amazon Prime 和紐約市疫苗網站為例子: The cancellation procedure is long, and consists of six separate pages. On each separate page, the consumer is nudged toward keeping their Prime membership, even though they have began a procedure to end the agreement. ...This uncertainty is further strengthened by having to scroll through the page, which is full of text and graphics to show how cancelling the membership will mean the loss of many benefits. In the single biggest public health crisis in the world, New York can't build a usable vaccine website. The telephone - 1950s technology - is our best option, after 25 years of web development. Shameful. 從 UX 設計領導者 Amazon 帶頭墮落,默默道...

用CSS的 min max與vw cqi,設計有極限值的RWD響應式文字

圖片
你是否有想過,max/min font size 的解法?能不能單靠 CSS 設計出會自動調整大小的 Responsive Font Size?答案是可以的! 文章目錄: vw 基本運用 極限問題 max()、min()、clamp() container-type與cqi 為何使用 vw? 在編寫 CSS 的時候,你可能習慣將網頁上的字體大小(font-size)使用 rem、em、px 等單位設定,但在講究 RWD 的情況下,甚至是 Google SEO 著重在手機介面的現在,總是會遇到桌機看起來很舒適,但畫面一變小,標題類的字就又太佔版面。 而使用 viewport width (vw) 當作字體大小的單位,就可以讓字體隨著視窗寬度的不同自動縮放其大小。 各瀏覽器支援 vw 的情況 vw 基本運用: vw 是視窗寬度的百分比,所以 1vw = 1%的視窗寬度。舉例來說,當視窗寬度為 1000px 且 font-size: 1.5vw 的時候,字體的大小就是 1000*1.5% = 15px。 h1,.h1{ font-size: 1.5vw; } 除了直接運用之外,也能搭配 calc 使用: h1,.h1{ font-size: calc(10px + 1.5vw); } 極限問題(max or min font size) 這是不管設計什麼東西都存在且必需要考慮的事情,vw 也不例外。 設計網頁一定會設一個網頁寬度,以此寬度設定做為最大值;而人的視力有限,以 16px 當作最小值。所以,當視窗被拉到極大或極小的時候,以 vw 為單位的字體勢必會變成你不想要的樣子,這時候我們就必需設定最大值和最小值,讓字體在合理的區間變動,而 media query 和 min()、max()就出現在解決辦法的清單之中: 以前的做法:Media Query 下面為使用的例子: h1,.h1{ font-size: 3.5vw; } @media (min-width: 1600px) { h1,.h1{ font-size: 40px; } } @media (max-width: 480px) { h1,.h1{ font-size: 16px; } } 這樣子設定...

Google Search Console 網頁發現方式多了「參照網頁」

圖片
在檢查網址中的「涵蓋範圍」,發現方式新增了參照網頁(Referring page),讓網站管理者知道Google是用哪些方式得知這個頁面。 數據說明 參照網頁可能直接連到該URL,或者是連到該頁面的上一層或更上層。如果不存在任何值,並不意味著不存在任何引用頁面,只是此訊息可能此時對 網址檢查工具 不可用。 也就是說,對於較新的頁面,參照網頁可能不會有數據,這是很正常的。Google 新增這個欄位也顯示出他們是用多種方式來得知網頁的存在並抓取。 什麼是參照網頁? 其實就是 GA 中的「 參照連結網址 」,意思是使用者進到你的網頁的來源網址,search console 會自動辦識這些流量來自哪裡。通常是連結,當然也有可能會是瀏覽器書籤、最愛、email 或手機app等,這大概也是為什麼不一定會有數據的原因之一吧。 頻繁更新 近期 Google Search Console 一直在更新,說不定是受到 Bing 更新的打擊(x),例如「涵蓋範圍」也更新成只剩下近3個月的資料、新增「檢索統計資料」等等功能,以及對於 CWVs 的相關更新 ,我們可以期待它的功能和數據將越來越豐富與完整。

2021年SEO努力的方向

圖片
之前,通常都是知識頁面獨霸的情況比較多,所以才會看到許多B2B的網站會寫一些「什麼是xxx」之類的知識型內容企圖攻佔排名。 而在9月20日之後,產品介紹或網站首頁出現在搜尋結果中的機率變得越來越高,原因其實很簡單: 使用者意圖 。 使用者需求排名(Needs Met rating) 回去看 Google guideline 的修改記錄,的確有修改過部分的 頁面品質 和 需求滿足 (Needs Met)之間的關係說明。(guideline包含Page Quality、Understanding Mobile User Needs、Needs Met) 再加上之前 Google Search on 宣布的那些東西,未來的SEO並不像過去讓內容完整、有用,讓網頁速度快速那麼簡單。 使用者意圖 如同一開始提到的,可能沒什麼內容可言的登陸頁面(landing page),也會出現在搜尋結果第一頁,只因為它對使用者而言是有用的。 使用者搜尋某個關鍵字是想要求知、購買、前往、求職或其它意圖,網站管理員搞錯方向的話,可能再努力也不會讓公司獲利提升。 重覆內容的取捨 自從2019年Google為了搜尋結果多樣性,讓同網域的網頁最多(通常)只顯示2筆,讓重覆內容的問題更被放大。 重覆內容的網頁有許多解決辦法,像是從軟到硬性的方式: 群組化:網頁互連、製造相關性、網址階層化 映射:利用 canonical 標籤,讓頁面權重只給單一頁面 合併:內容集中到同一頁 群組化 利用超連結或階層讓爬蟲了解這些內容的相關性,由Google自己去判斷。像是在內文中加上某個詞的說明連結,或是把某個相關事物加上連結在另外一頁討論,可以吃到子目錄的好處。 映射(canonical) 可以將權重無痛交付給某一頁,但Google未必會如你的意只把指向的那頁顯示在搜尋結果中,它還是有可能會把其它頁面顯示在SERP中。 合併 合併勢必可以吃到「段落排名」的好處,甚至有人試圖把使用者搜尋旅程縮短至1~3頁。 這三種方法各有好壞,但最終仍要回到使用者意圖,填滿使用者不需要的內容用處不大,不是用了之後排名就一定會提升。 網站速度 其實一直都是SEO指標,只是會再看得更仔細。2021年5月之後,Google會將新的 Core Web Vitals納入網頁排名因素。 簡單理解 Core Web Vitals 的 LC...

GA4基本設定:GTM 自訂事件、內部 IP、跨網域設定

圖片
你已經熟悉這個以消費者為觀察核心的 Google Analytics 4 介面了嗎? 相信不少人應該跟我一樣,在導入 GA4 之後,第一件事就是想辦法趕快把自訂事件和轉換設定好,但要怎麼設定?事件標籤、事件動作怎麼都不見了? 從 GTM 介面直接新增自訂事件 在beta版消失之後,GTM的自訂事件介面變得比較簡單。首先,代碼設定選擇「Google Analytics (分析)」裡面的「GA4 事件」。 接著,在評估 ID 欄位填寫你的GA4評估 ID。 如果你不知道「評估 ID」在哪裡,你可以在GA4介面的「管理」→「串流」→「網頁串流詳情」找到它。 之後,自己想一個「事件名稱」填入欄位中,這裡我們取名為「edm_link_click」,並在下方的參數欄位填入要追蹤的參數(參數名稱隨便取,這裡取名「link_text」是為了讓大家知道,如果已經有同名的GA4參數,旁邊會出現一個勾勾)。 我想要寫在網頁上 如果想要把事件寫在網頁上,跟以前的GA有點像,在要觸發的地方將事件名稱push進dataLayer: window.dataLayer.push({'event': 'edm_link_click'}); 接著,到GTM介面的觸發條件區域先建立「自訂事件」,事件名稱要跟上面的code一樣填寫「edm_link_click」,接著一樣在代碼設定裡新增GA4事件,「觸發條件」就是前面建立的自訂事件。 當然,dataLayer.push 跟以前一樣能push其它參數,官方的 例子 也有提到。 回到 GA4 介面 待 GA4 收到資料之後,點擊「報表」→「參與」→「事件」,查看自己在 GTM 設定的「edm_link_click」有沒有出現在資料當中。 點擊該事件進去看相關的詳細資料,這樣子一個基本的自訂事件就算大功告成了。(自訂維度出現在資料中的時間並不固定,有可能數小時,也有可能一週之後才出現) 而詳細的數據必需到左列的「探索」或是到 Looker Studio(舊稱Google Data Studio)自己拉維度和指標才行。 定義內部流量 進到「資料串流」,選擇你要設定的串流名稱。 點擊「更多代碼設定」。 點擊「定義內部流量」,設定你的IP。traffic_type 值用預...