JS30 day22 - Follow Along Links
作業內容
為什麼不是繼續寫 21 而是跳到 22 呢? 因為作業 21 需要哀鳳支援,這可能要稍微去借一下XD
今天的內容是要讓網頁的連結被指到的時候,出現白色背景,跟 hover 不同的是這個邊匡會在超連結之間移動!如果不明白我的意思可以看 CodePen 連結XD
學到什麼
-
mouseenter
跟mouseover
這兩個事件的差異在於mouseenter
不支援事件冒泡
這個例子可以了解 -
getBoundingClientRect()
可以抓到綁定物件的 DOMRect 物件的長寬高座標等等資訊
所以我們現在先可以做到右上角的 span 元素長寬高,會隨著我們指到的超連結變換長寬
1 | function highlightLink(){ |
- 我們要怎麼移動這個 span 呢? 我們可以使用下面的方式
1 | `highlight.style.transform = `translate(${linkCoords.left}px, ${linkCoords.top}px)` |
所以整個 function 變成下面這樣子
1 | function highlightLink(){ |
但這會有一個問題,一旦我們捲動螢幕,他的座標會跑掉,像下面這樣
這是因為沒有把捲動的座標考慮進來,使用 window.scrollX
還有 window.scrollY
來得到這個座標
1 | function highlightLink(){ |
參考資料:
https://github.com/wesbos/JavaScript30
code 內容:
HTML:
1 | <nav> |
CSS:
1 | html { |
JS:
1 | const triggers = document.querySelectorAll('a') |