国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

CSS螢火蟲按鈕特效,會有什么效果?

開發(fā) 前端
如果單純做一個跟隨鼠標移動的點很簡單,只需要監(jiān)聽鼠標事件獲取坐標實時更新到需要移動的元素上即可。但是仔細看這里的效果并不是這樣,圓點是跟隨在鼠標后面,鼠標移動停止后圓點才會和鼠標重合。
如圖所示,這是一個很炫酷的按鈕懸浮特效,鼠標懸停時,按鈕呈現(xiàn)發(fā)光的效果,周邊還出現(xiàn)類型螢火蟲的效果。本文將解析如何實現(xiàn)這個按鈕特效,基于這個動圖可以分析出需要實現(xiàn)的要點:
  • 有一個跟隨鼠標移動的圓點
  • 按鈕懸停時有高亮發(fā)光的效果
  • 懸停時按鈕周邊的螢火中效果

實現(xiàn)過程

跟隨鼠標移動的圓點

這個部分需要基于JS實現(xiàn),但不是最主要的實現(xiàn)代碼

如果單純做一個跟隨鼠標移動的點很簡單,只需要監(jiān)聽鼠標事件獲取坐標實時更新到需要移動的元素上即可。但是仔細看這里的效果并不是這樣,圓點是跟隨在鼠標后面,鼠標移動停止后圓點才會和鼠標重合。這里是使用了一個名為 Kinet 的庫來實現(xiàn)的這個鼠標移動動畫效果,具體實現(xiàn)如下:

  1. 創(chuàng)建 Kinet 實例,傳入了自定義設(shè)置:
  • acceleration: 加速度,控制動畫的加速程度。
  • friction: 摩擦力,控制動畫的減速程度。
  • names: 定義了兩個屬性 x 和 y,用于表示動畫的兩個維度。
var kinet = new Kinet({
   acceleration: 0.02,
   friction: 0.25,
   names: ["x", "y"],
 });
  1. 通過 document.getElementById 獲取頁面中 ID 為 circle 的元素,以便后續(xù)進行動畫處理。
var circle = document.getElementById('circle');
  1. 設(shè)置 Kinet 的 tick 事件處理:
  • 監(jiān)聽 tick 事件,每當 Kinet 更新時執(zhí)行該函數(shù)。
  • instances 參數(shù)包含當前的 x 和 y 值及其速度。
  • 使用 style.transform 屬性來更新圓形元素的位置和旋轉(zhuǎn):
  • translate3d 用于在 3D 空間中移動元素。
  • rotateX 和 rotateY 用于根據(jù)當前速度旋轉(zhuǎn)元素。
kinet.on('tick', function(instances) {
   circle.style.transform = `translate3d(${ (instances.x.current) }px, ${ (instances.y.current) }px, 0) rotateX(${ (instances.x.velocity/2) }deg) rotateY(${ (instances.y.velocity/2) }deg)`;
 });
  1. 聽 mousemove 事件,kinet.animate 方法用于更新 x 和 y 的目標值,計算方式是將鼠標的當前位置減去窗口的中心位置,使動畫圍繞窗口中心進行。
document.addEventListener('mousemove', function (event) {
     kinet.animate('x', event.clientX - window.innerWidth/2);
     kinet.animate('y', event.clientY - window.innerHeight/2);
   });

隨著鼠標的移動這個圓點元素將在頁面上進行平滑的動畫。通過 Kinet 庫的加速度和摩擦力設(shè)置,動畫效果顯得更加自然,用戶體驗更加生動。有興趣的可以嘗試調(diào)整參數(shù)解鎖其他玩法,此時我們的頁面效果如下:

圖片圖片

按鈕懸停時發(fā)光效果

這里主要通過懸停時設(shè)置transition過渡改變按鈕的內(nèi)外陰影效果,陰影效果通過偽元素實現(xiàn),默認透明度為0,按鈕樣式代碼如下:

.button {
  z-index: 1;
  position: relative;
  text-decoration: none;
  text-align: center;
  appearance: none;
  display: inline-block;
}

.button::before, .button::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  border-radius: 999px;
  opacity: 0;
  transition: opacity 0.3s;
}

.button::before {
  box-shadow: 0px 0px 24px 0px #FFEB3B;
}

.button::after {
  box-shadow: 0px 0px 23px 0px #FDFCA9 inset, 0px 0px 8px 0px #FFFFFF42;
}

當鼠標懸停在按鈕上時,通過改變偽元素的透明度,使發(fā)光效果在鼠標懸停時變得可見:

.button-wrapper:hover .button::before, 
.button-wrapper:hover .button::after {
  opacity: 1;
}

此時的按鈕效果如下:

圖片圖片

懸停時螢火中效果

如頭部圖片所展示,螢火蟲效果是有多個圓點散開,所以這里我們添加多個圓點元素。

<span class="dot dot-1"></span>
  <span class="dot dot-2"></span>
  <span class="dot dot-3"></span>
  <span class="dot dot-4"></span>
  <span class="dot dot-5"></span>
  <span class="dot dot-6"></span>
  <span class="dot dot-7"></span>

設(shè)置元素樣式,這里的CSS變量(如 --speed, --size, --starting-x, --starting-y, --rotatation)用于控制圓點的動畫速度、大小、起始位置和旋轉(zhuǎn)角度。

.dot {
  display: block;
  position: absolute;
  transition: transform calc(var(--speed) / 12) ease;
  width: var(--size);
  height: var(--size);
  transform: translate(var(--starting-x), var(--starting-y)) rotate(var(--rotatation));
}

給圓點設(shè)置動畫效果,使用 @keyframes 定義了兩個動畫:dimFirefly 和 hoverFirefly,為圓點添加了閃爍和移動效果:

@keyframes dimFirefly {
  0% { opacity: 1; }
  25% { opacity: 0.4; }
  50% { opacity: 0.8; }
  75% { opacity: 0.5; }
  100% { opacity: 1; }
}

@keyframes hoverFirefly {
  0% { transform: translate(0, 0); }
  12% { transform: translate(3px, 1px); }
  24% { transform: translate(-2px, 3px); }
  37% { transform: translate(2px, -2px); }
  55% { transform: translate(-1px, 0); }
  74% { transform: translate(0, 2px); }
  88% { transform: translate(-3px, -1px); }
  100% { transform: translate(0, 0); }
}

在圓點的偽元素上關(guān)聯(lián)動畫效果:

.dot::after {
  content: "";
  animation: hoverFirefly var(--speed) infinite, dimFirefly calc(var(--speed) / 2) infinite calc(var(--speed) / 3);
  animation-play-state: paused; 
  display: block;
  border-radius: 100%;
  background: yellow;
  width: 100%;
  height: 100%;
  box-shadow: 0px 0px 6px 0px #FFEB3B, 0px 0px 4px 0px #FDFCA9 inset, 0px 0px 2px 1px #FFFFFF42;
}

給每個圓點設(shè)置不同的動畫參數(shù),通過使用 CSS 變量,開發(fā)者可以靈活地控制每個 .dot 元素的旋轉(zhuǎn)角度,進一步豐富視覺效果。

.dot-1 {
  --rotatation: 0deg;
  --speed: 14s;
  --size: 6px;
  --starting-x: 30px;
  --starting-y: 20px;
  top: 2px;
  left: -16px;
  opacity: 0.7;
}

.dot-2 {
  --rotatation: 122deg;
  --speed: 16s;
  --size: 3px;
  --starting-x: 40px;
  --starting-y: 10px;
  top: 1px;
  left: 0px;
  opacity: 0.7;
}
...

此時只要在父元素.button-wrapper懸停時,則觸發(fā) .dot 元素的旋轉(zhuǎn)效果,并使其偽元素的動畫開始運行,此時螢火中懸停效果就會開始運行。

.button-wrapper:hover {
  .dot {
    transform: translate(0, 0) rotate(var(--rotatation));
  }
  
  .dot::after {
    animation-play-state: running;
  }
}

最后完成的懸停效果如下

圖片圖片

責任編輯:武曉燕 來源: 南城大前端
相關(guān)推薦

2023-04-18 14:59:40

Adobe視頻

2023-03-23 14:16:00

AIAdobe

2013-09-30 10:04:11

JavaScrip工具

2021-03-23 09:35:23

Inode文件Linux

2012-01-17 14:29:38

JavaSwing

2015-07-17 10:41:59

點贊按鈕

2010-09-14 20:02:14

2012-12-26 10:34:56

CSSWeb前端

2015-07-23 15:15:06

動態(tài)彈出

2020-09-01 08:43:48

特效庫javascript按鈕

2021-10-19 22:23:47

CSSBeautiful按鈕

2022-12-12 11:11:05

2022-02-21 07:02:16

CSSbeautiful按鈕

2013-08-07 10:47:58

Android特效ListView

2013-08-07 10:35:02

AndroidListView拖拽

2009-12-29 14:26:04

WPF按鈕

2012-07-05 09:56:04

千年蟲閏年蟲閏秒蟲

2023-02-24 08:32:50

CSS漸變屬性

2010-09-14 09:18:28

DIVCSS
點贊
收藏

51CTO技術(shù)棧公眾號

欧美成人一二三| 中文字幕日本一区| 免费在线观看麻豆视频| 三级a在线观看| 亚洲国产精品女人| 欧美美最猛性xxxxxx| 九九视频这里只有精品| 深夜成人在线观看| 亚洲精品视频在线播放| 日韩视频免费观看高清完整版在线观看 | 免费久久久久久| 亚洲xxx视频| 97热精品视频官网| 亚洲性线免费观看视频成熟| 国产精品综合一区二区三区| 国产精品久久久久久麻豆一区软件 | 日本一区二区三区精品视频| 日韩一级二级三级| 99色在线观看| www.国产精| 中文字幕免费高| 亚洲国产成人一区| 欧美性猛交xxxx富婆| 亚洲777理论| 欧美午夜精品一区| 精品欧美乱码久久久久久1区2区| 日韩三级电影网址| 99国产精品一区| 国产日韩欧美精品综合| 亚洲美女免费视频| 欧美伊人久久大香线蕉综合69 | 制服.丝袜.亚洲.另类.中文| 色综合天天综合狠狠| 亚洲天堂第一页| 午夜精品福利一区二区蜜股av| 国产伦精品一区二区三区免费迷| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | av一级久久| 免费涩涩18网站入口| 成人免费大片黄在线播放| 91在线免费网站| 国产99久久精品一区二区永久免费 | 青青久在线视频免费观看| 国产日韩欧美一二三区| 中文字幕不卡av| 日韩中文字幕精品| 国产精品扒开腿做爽爽爽男男 | 精品九九在线| 韩日精品在线| 国产一区二三区好的| 国产亚洲婷婷免费| 黄色一区二区在线观看| 亚洲国产精品大全| 97久草视频| 成人在线播放av| 亚洲国产日韩欧美在线图片| 久久久精品国产免费观看同学| 国产真实乱子伦精品视频| 日韩一区电影| 日本中文字幕一区二区| 成人在线电影网| 久草青青在线观看| 日韩欧美不卡在线| 国产精品xxxx| 欧美午夜精品久久久久免费视 | 精品亚洲一区二区三区在线观看| 成人国产精品免费观看动漫| 亚洲国产片色| 成人激情久久| 99热播精品免费| 男女视频在线| 性欧美猛交videos| 精品美女一区| 日本在线高清| 伊伊综合在线| 午夜视频一区二区在线观看| 欧美破处大片在线视频| 丁香婷婷深情五月亚洲| 欧美三级视频在线播放| 91精品国产91久久久久久久久| 天堂va久久久噜噜噜久久va| 国产视频一区二区三区在线播放| 欧美成年黄网站色视频| www.日韩| 日本不卡高清| 国产精品私人影院| 亚洲第一精品电影| 国产精品免费视频一区二区| 国产日韩av网站| 性欧美18xxxhd| 国产一区二区三区久久久久久久久| 亚洲婷婷国产精品电影人久久| 欧美xxxx做受欧美| 欧美视频在线播放一区| 三上悠亚亚洲一区| 亚洲国产专区| 欧美在线一区二区| 国产伦精品一区二区三区在线| 麻豆免费网站| 久久久久国产精品| 在线免费亚洲电影| 不卡一区二区三区视频| 宅男宅女性影片资源在线1| 精品国产乱码久久久久久果冻传媒 | 日韩欧美一区二区三区久久婷婷| 国产私拍精品| 天堂在线亚洲视频| 精品久久久久久久久久久久久久 | 国产三级在线免费| 亚洲茄子视频| 日韩免费视频一区| 在线播放 亚洲| av在线最新| 97久久久精品综合88久久| 日韩国产高清污视频在线观看| 日韩美女一区二区三区四区| 欧美日韩电影一区二区| 激情视频网站在线播放色| 国产一区二区在线观看免费 | 日韩制服丝袜av| 亚洲欧美电影院| 久久噜噜噜精品国产亚洲综合 | 日本一级理论片在线大全| 国产在线播放一区| 久久综合色影院| 三级在线观看| 麻豆精品久久久| 欧美日韩国产成人高清视频| 一级毛片免费看| 久久成人免费日本黄色| 欧美裸身视频免费观看| 外国精品视频在线观看| 精品一区二区av| 黄色免费网站在线| 日韩有码免费视频| 欧美日韩激情| 欧美日韩日日骚| 日韩精品一区二区免费| 免费视频亚洲| 在线观看一区不卡| www.日本xxxx| 欧美精品自拍| 久久免费精品日本久久中文字幕| 粉嫩一区二区三区国产精品| 国产999精品久久久久久绿帽| 国产欧美亚洲视频| 亚洲成人1区| 337p日本欧洲亚洲大胆精品| 久久久久欧美| 中文字幕精品影院| 亚洲精品久久久久久久久| 在线免费日韩| 成人精品小蝌蚪| 91色琪琪电影亚洲精品久久| 成人勉费视频| 国产欧美精品一区aⅴ影院| 亚洲xxxxx性| 免费看日本一区二区| 欧美区二区三区| 国际av在线| 亚洲同性gay激情无套| 鲁一鲁一鲁一鲁一澡| 麻豆精品视频在线| 久久久久久有精品国产| 国产精品扒开做爽爽爽的视频| 午夜欧美2019年伦理| 久久手机在线视频| 久久深夜福利| 老牛影视免费一区二区| 激情欧美一区二区三区| 国产精品夜间视频香蕉| 2021中文字幕在线| 日韩欧美成人网| 麻豆电影传媒二区| 中文字幕在线不卡| 黄色资源在线看| 久久亚洲精华国产精华液| 日本不卡在线观看视频| 精品影视av免费| 明星裸体视频一区二区| 国产精品啊啊啊| 国产日韩一区二区| 欧美午夜不卡影院在线观看完整版免费| 乱亲女秽乱长久久久| 欧美久久亚洲| 欧美疯狂做受xxxx高潮| 日韩免费大片| 韩国日本不卡在线| 国产伦精品一区二区三区视频 | 国产精品一区二区久久精品爱涩| 正在播放久久| 99re亚洲国产精品| 男人添女人下部视频免费| 成人午夜激情在线| 欧美做暖暖视频| 国产精品亚洲专一区二区三区| 日韩亚洲欧美视频| 亚洲人成网站在线| 青青在线免费观看视频| 午夜精品视频一区|