本篇文章在前一個初級的基礎上進行後續的體驗優化
1.win10原圖
2.進階實現圖css
進階篇使用的漸變範圍寫法:radial-gradient(63px at 63px 63px, #3c3c3c, #1a1a1a);html
解釋一點:兩種方法都是經過給九個元素設置不一樣的漸變原點,但思想不一樣git
圖解:github
方法一,九個紅點就是九個塊的漸變中心(右下,中下,坐下,右中,不設置漸變,左中,右上,中上,左上)dom
方法二,中心的綠點就是圓心,座標(63,63),九個黃點就是每一個塊的零點,算出黃點相對綠點的座標
[優化
(63,63), (21,63), (-21,63), (63,21), 不設置漸變 (-21,63), (63,-21), (21,-21), (-21,-21),
]
3.兩種方法都有一箇中心塊不設置漸變色,純背景色就能夠spa
使用第二種方法,目的不是爲了獲得另外一種實現方式,是由於在實現鼠標移動時,動態移動高光範圍,方法一很難計算移動的趨向和值,由於涉及到九個圓的圓心位置;而使用方法二,只要關心一個圓就行,及中心的圓,再經過中間值計算出對應九個塊的位置。
根據個人實現過程,移動的計算規則是這樣的:
計算倍數公式:中心原點/n+移動差值 = 樣式表中固定的位置
n算出來的結果就是在js中寫入的每一個塊的改變倍數即code
1.5就是計算出來的n 原點---origin 移動差值---num radial-gradient(${originX}px at ${originX/1.5+numX}px ${originY/1.5+numY}px, #3c3c3c, #1a1a1a)
是怎麼算出來不一樣的n?htm
不考慮動態js改變,先使用css寫出固定的像素,以第一個塊爲例:
小塊邊框是42px,九個塊拼成一個大正方形,內切圓就是咱們應該實現的高光,中心原點座標(63,63),則第一個塊的漸變中心就出來了對象
background-image: radial-gradient(63px at 63px 63px, #3c3c3c, #1a1a1a);
相關代碼點擊這裏查看吧
這個就是完整版的實現,講得很差,沒懂的能夠看源碼,再不懂就評論吧