結果展示
HTML 程式碼
1 2 3 4 5 6 7 8
| <div class="tab-navigation flex space-x-2 md:space-x-4 my-6 overflow-x-auto"> </div>
<div class="mb-2"> <i class="fa-solid fa-arrow-right md:hidden relative left-0 text-gray-400 text-sm"> 可向右滑動</i> </div>
|
JS 程式碼
1 2 3 4 5 6 7 8 9 10 11
| const tabNavigation = document.querySelector(".tab-navigation"); const arrowIcon = document.querySelector(".fa-arrow-right"); tabNavigation.addEventListener("scroll", function () { const maxScrollLeft = tabNavigation.scrollWidth - tabNavigation.clientWidth; const scrollPercentage = tabNavigation.scrollLeft / maxScrollLeft;
const arrowMaxLeft = tabNavigation.clientWidth - arrowIcon.clientWidth; const arrowLeft = arrowMaxLeft * scrollPercentage; arrowIcon.style.left = `${arrowLeft}px`; });
|
數學公式
$$
\text{interpolated value} = (1 - t) \times A + t \times B
$$
在這個情況下, $A=0$ (最小left值),$B=arrowMaxLeft$,(最大left值),$t=scrollPercentage$。因此
$$
arrowLeft = (1-scrollPercentage) \times 0 + scrollPercentage \times arrowMaxLeft
$$
簡化為以下:
$$
arrowLeft = scrollPercentage \times arrowMaxLeft
$$
在線性插值(Linear Interpolation)的一般公式中,t 是一個插值參數,通常是一個介於 0 和 1 之間的數字。這個參數用來表示兩個端點 A 和 B 之間的相對位置。
- 當 $t=0$ 時,插值結果為 A (起始點)
- 當 $t=1$ 時,插值結果為 B (終點)
- 當 $0<t<1$ 時,插值結果會是 A 和 B 之間的某個值
若您覺得這篇文章對您有幫助,歡迎分享出去讓更多人看到⊂◉‿◉つ~
留言版