精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

螺旋文字滾動(dòng)特效源碼解析,你學(xué)會(huì)了嗎?

開(kāi)發(fā) 前端
通過(guò)結(jié)合 JavaScript 和 CSS,我們成功實(shí)現(xiàn)了一個(gè)動(dòng)態(tài)的螺旋文字滾動(dòng)特效。該特效不僅展示了字符的動(dòng)態(tài)變化,還通過(guò)延遲時(shí)間結(jié)合動(dòng)畫效果增強(qiáng)了視覺(jué)吸引力。

圖片圖片

如圖所示,今天看到一個(gè)很炫酷的雙文字螺旋滾動(dòng)特效,兩行文字呈螺旋狀變化,在網(wǎng)站中這樣的效果對(duì)用戶很有吸引力。本文將基于原網(wǎng)站解析如何實(shí)現(xiàn)這個(gè)炫酷的效果,基于這個(gè)動(dòng)圖可以分析出需要實(shí)現(xiàn)的要點(diǎn):

  • 文字呈螺旋狀滾動(dòng)
  • 滾動(dòng)過(guò)程中文字大小變化
  • 動(dòng)畫過(guò)程無(wú)縫鏈接
  • 兩行文字滾動(dòng)

實(shí)現(xiàn)過(guò)程

文字展示

為了方便更改文案將文案定義變量,通過(guò)JS代碼動(dòng)態(tài)創(chuàng)建DOM,定義文案、螺旋的角度以及動(dòng)畫的持續(xù)時(shí)間:

const words = "螺旋文字滾動(dòng)特效";
const ANGLE = 360;
const ANIMATION_DURATION = 4000;

將文案創(chuàng)建元素添加到頁(yè)面中:

const characters = words.split("").forEach((char, i) => {
  const createElement = (offset) => {
    const div = document.createElement("div");
    div.innerText = char;
    div.classList.add("character");
    div.setAttribute("data-offset", offset);
    return div;
  };

  document.querySelector("#spiral").append(createElement(0));
  document
    .querySelector("#spiral2")
    .append(createElement(-1 * (ANIMATION_DURATION / 2)));
});

因?yàn)橛?行文字滾動(dòng),所以這里添加了2個(gè)spiral。

<div id="spiral" class="spiral"></div>
<div id="spiral2" class="spiral"></div>

給 spiral 設(shè)置flex布局,此時(shí)的頁(yè)面效果如下:

.spiral{
  display: flex;
  align-items: center;
  gap: 10px;
  position: absolute;
  color: #e0ecef;
  font-family: "sans-serif";
}

圖片圖片

讓文字動(dòng)起來(lái)

這里的動(dòng)畫基于CSS Houdini @property實(shí)現(xiàn),首先定義一個(gè)自定義屬性--angle,接受角度值,初始值為0度。

@property --angle {
    syntax: '<angle>';
    initial-value: 0deg;
    inherits: false;
}

設(shè)置關(guān)鍵幀動(dòng)畫,修改定義的--angle屬性從0度旋轉(zhuǎn)到360度。

@keyframes spiral {
    0% { --angle: 0deg; }
    100% { --angle: 360deg; }
}

給每個(gè)文字的增加animation動(dòng)畫關(guān)聯(lián)定義的關(guān)鍵幀動(dòng)畫spiral。

.character{
  transform: translateY(calc(sin(var(--angle)) * 100px)) scale(calc(cos(var(--angle)) * 0.5 + 0.5));
  animation: spiral 4s linear infinite;
}

重點(diǎn)代碼transform變換,使用transform屬性結(jié)合calc函數(shù)和三角函數(shù)來(lái)實(shí)現(xiàn)Y軸的正弦波形偏移和縮放效果。

同時(shí)在動(dòng)畫中應(yīng)用了前面定義的spiral動(dòng)畫。結(jié)合這兩個(gè)函數(shù),transform 屬性效果如下:

  • Y 軸位移: 元素根據(jù) --angle 的值在 Y 軸上上下移動(dòng),形成波動(dòng)效果。
  • 縮放效果: 元素的大小根據(jù) --angle 的值進(jìn)行動(dòng)態(tài)縮放,形成從小到大或從大到小的變化。

此時(shí)的動(dòng)畫效果:

圖片圖片

螺旋滾動(dòng)

此時(shí)我們的文字已經(jīng)滾動(dòng)起來(lái)了,只需要最后一步關(guān)鍵的代碼就可以實(shí)現(xiàn)螺旋滾動(dòng)效果,仔細(xì)看原始效果就能發(fā)現(xiàn)其實(shí)每個(gè)文字滾動(dòng)的動(dòng)畫軌跡都是一樣的,唯一的區(qū)別就是執(zhí)行的動(dòng)畫延遲時(shí)間不同,形成了一個(gè)波動(dòng)起伏的效果。

增加延遲動(dòng)畫CSS,由于我們的文字是通過(guò)JS創(chuàng)建的,所以需要在 createElement 中增加以下代碼即可,根據(jù)動(dòng)畫持續(xù)時(shí)間和當(dāng)前文字索引計(jì)算延遲時(shí)間:

div.style.animationDelay = `-${i * (ANIMATION_DURATION / 16) - offset}ms`

由于 --angle 設(shè)置了關(guān)鍵幀動(dòng)畫,是一個(gè)動(dòng)態(tài)變化的變量,這段代碼會(huì)使得元素在頁(yè)面上呈現(xiàn)出螺旋或波動(dòng)的動(dòng)畫效果,增強(qiáng)視覺(jué)吸引力。

此時(shí)我們的動(dòng)畫效果基本就完成了,如下所示:

圖片圖片

兼容火狐

由于Firefox不支持@property動(dòng)畫,原作者寫了火狐兼容代碼,使用JavaScript來(lái)實(shí)現(xiàn)動(dòng)畫效果。

定義一個(gè)animation動(dòng)畫函數(shù),使用 requestAnimationFrame 方法實(shí)現(xiàn)平滑的動(dòng)畫效果。

const animation = () => {
  ANGLE -= 1; 
  //...
  requestAnimationFrame(animation);
};

在動(dòng)畫函數(shù)中遍歷所有文字元素來(lái)設(shè)置動(dòng)畫。

document.querySelectorAll(".spiral *").forEach((el, i) => {
  // ...
});

計(jì)算Y軸偏移和縮放,使用三角函數(shù)計(jì)算每個(gè)元素的Y軸偏移量和縮放比例:

const translateY = Math.sin(ANGLE * (Math.PI / 120)) * 100;
const scale = Math.cos(ANGLE * (Math.PI / 120)) * 0.5 + 0.5;

設(shè)置動(dòng)畫延遲,根據(jù)元素索引和數(shù)據(jù)屬性data-offset計(jì)算動(dòng)畫的延遲時(shí)間。

const offset = parseInt(el.dataset.offset);
const delay = i * (ANIMATION_DURATION / 16) - offset;

最后動(dòng)態(tài)設(shè)置CSS變換屬性transform來(lái)應(yīng)用Y軸偏移和縮放。在定時(shí)器中使用delay延遲時(shí)間執(zhí)行動(dòng)畫。

setTimeout(() => {
  el.style.transform = `translateY(${translateY}px) scale(${scale})`;
}, delay);

火狐瀏覽器執(zhí)行動(dòng)畫函數(shù)。

let isFirefox = typeof InstallTrigger !== 'undefined';

if(isFirefox){
  animation();
}

最后

通過(guò)結(jié)合 JavaScript 和 CSS,我們成功實(shí)現(xiàn)了一個(gè)動(dòng)態(tài)的螺旋文字滾動(dòng)特效。該特效不僅展示了字符的動(dòng)態(tài)變化,還通過(guò)延遲時(shí)間結(jié)合動(dòng)畫效果增強(qiáng)了視覺(jué)吸引力。本質(zhì)實(shí)現(xiàn)這個(gè)效果是不需要 JavaScript,為了兼容火狐和動(dòng)態(tài)創(chuàng)建文案DOM才使用了相關(guān) JavaScript。有興趣的可以嘗試使用純CSS實(shí)現(xiàn)這個(gè)炫酷的螺旋文字滾動(dòng)特效。

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

2023-08-26 21:34:28

Spring源碼自定義

2023-06-26 13:08:52

GraphQL服務(wù)數(shù)據(jù)

2023-02-24 08:32:50

CSS漸變屬性

2022-10-18 17:59:46

Bootstrap源碼父類

2025-01-02 10:02:44

2024-02-05 13:52:30

?Thread對(duì)象強(qiáng)引用

2023-12-27 07:31:45

json產(chǎn)品場(chǎng)景

2024-10-11 09:15:33

2024-09-06 07:29:05

2022-12-22 08:14:54

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機(jī)器學(xué)習(xí)模型

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺(tái)工具

2024-04-01 08:29:09

Git核心實(shí)例

2025-01-14 08:32:55

JWT令牌.NET

2022-07-13 08:16:49

RocketMQRPC日志

2023-03-26 22:31:29

點(diǎn)贊
收藏

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

97色在线观看免费视频| 亚洲国产精品美女| 国产一二三四五| www黄色网址| 美女爽到呻吟久久久久| 日韩在线中文字幕| 中文字幕一区二区人妻电影丶| 精精国产xxxx视频在线播放| 中文字幕不卡的av| 国产精品久久久对白| 欧美精品韩国精品| 国产一级免费在线观看| 久久99精品久久只有精品| 高清一区二区三区四区五区 | 国产成人综合网站| 日韩激情av在线免费观看| av免费网站观看| 91精品久久久| 国产精品欧美极品| 国模一区二区三区私拍视频| 欧美日韩免费做爰视频| 免费久久精品| 精品国产亚洲一区二区三区在线观看| 国产l精品国产亚洲区久久| 黄色av电影在线观看| 久久久久久久精| 国产精品果冻传媒潘| 国产又黄又猛又爽| 石原莉奈在线亚洲二区| 亚洲日本aⅴ片在线观看香蕉| www.污网站| 国产91欧美| 日韩欧美中文免费| 欧洲一区二区在线观看| 蜜桃91麻豆精品一二三区| 捆绑紧缚一区二区三区视频| 国产成人精品视频| 国产成人啪精品午夜在线观看| 99精品电影| 911国产精品| 男人舔女人下面高潮视频| 天堂a中文在线| 粉嫩久久99精品久久久久久夜| 国产美女主播一区| 特级西西444www高清大视频| 丝袜美腿亚洲色图| 茄子视频成人在线| 六月丁香在线视频| 99国产精品99久久久久久粉嫩| 欧美精品一区三区| 日本高清一二三区| 99久久婷婷这里只有精品| 最近的2019中文字幕免费一页| 人人妻人人藻人人爽欧美一区| 秋霞在线一区| 日韩大片免费观看视频播放| 老熟妇精品一区二区三区| 久本草在线中文字幕亚洲| 一本色道久久综合精品竹菊| 日本免费不卡一区二区| 在线观看v片| 欧美性猛交xxxx乱大交蜜桃| 一本大道熟女人妻中文字幕在线| 亚洲国产欧美日本视频| 精品日韩中文字幕| 免费午夜视频在线观看| 毛片无码国产| 欧美在线视频全部完| 中文字幕av专区| 日本一区二区中文字幕| 欧美一区二区视频在线观看2020| 成人亚洲免费视频| 国产丝袜精品丝袜| 亚洲6080在线| 日本黄网站免费| 涩涩涩久久久成人精品| 日韩欧美国产不卡| 黄色录像a级片| 韩日一区二区三区| 日韩视频亚洲视频| 日韩免费高清一区二区| 丝袜美腿综合| 日韩中文字幕av| www.99re7| 国产欧美日本| 国产女精品视频网站免费| av免费在线不卡| 日韩黄色片在线观看| 亚洲a∨日韩av高清在线观看| 亚洲国产精品国自产拍久久| 久久综合九色综合欧美98| 亚洲国产成人不卡| 高清电影在线观看免费| 色综合天天综合网天天狠天天 | 黄色资源网久久资源365| 亚洲字幕一区二区| 四虎电影院在线观看| 国产精品久久久久久久第一福利| 99久久久精品视频| 日韩高清不卡| 欧美精品一区二区久久久| 一区二区三区久久久久| 你懂的国产精品| 欧美性在线视频| va视频在线观看| 久久人人超碰精品| 国产又粗又猛又爽又黄的网站 | 欧美色电影在线| 精品一区二区三区四区五区六区| 欧美特黄一级大片| 午夜精品在线视频| 国产情侣自拍小视频| 欧美aaaaa成人免费观看视频| av一区二区在线看| av午夜在线| 欧美性猛交xxxx免费看久久久| 亚洲成人激情小说| 久久在线视频免费观看| 欧洲成人在线观看| 亚洲奶汁xxxx哺乳期| 国产精品灌醉下药二区| 欧美成人黑人猛交| 美女午夜精品| 欧美日韩成人黄色| 91国内精品视频| 国产午夜精品在线观看| 欧美日韩成人免费视频| 午夜日韩影院| 久久综合国产精品台湾中文娱乐网 | 国产精品嫩模av在线| 午夜精品久久久久久99热| av中文字幕免费在线观看| 国产精品三级av| 我看黄色一级片| 欧洲三级视频| 国产成人短视频| 欧美精品久久久久久久久久丰满| 成人白浆超碰人人人人| 亚洲第一页在线视频| 99久久久国产精品免费调教网站| 国产丝袜一区视频在线观看 | 岛国成人毛片| 欧美精品一卡两卡| 中国1级黄色片| 欧美aⅴ一区二区三区视频| 日韩精品福利视频| √新版天堂资源在线资源| 欧美日韩亚洲成人| 日本xxxx裸体xxxx| 国产精品美女| 欧美一进一出视频| 成人日韩在线观看| 在线观看国产精品91| 波多野结衣爱爱| 中文字幕巨乱亚洲| 国产传媒免费观看| 亚洲欧洲美洲一区二区三区| 91视频-88av| 亚洲综合影视| 精品国产成人在线影院| 国产一区二区三区影院| 久久久精品免费网站| 亚洲 欧美 日韩系列| 91精品综合久久久久久久久久久| 91久久久久久国产精品| 91高清在线观看视频| 亚洲第一页在线| 四虎成人永久免费视频| 国产欧美一区二区精品忘忧草| wwwwxxxx日韩| 91精品一区二区三区综合| 99久久精品无码一区二区毛片| hd国产人妖ts另类视频| 精品在线观看国产| 亚洲午夜无码久久久久| 亚洲免费毛片网站| 久久无码专区国产精品s| 亚洲中午字幕| 最新不卡av| 国产乱人伦丫前精品视频| 日本一欧美一欧美一亚洲视频 | 欧美日产国产成人免费图片| 手机在线不卡av| 国产精品水嫩水嫩| 人人爽人人爽av| 亚洲人成久久| 亚洲国产午夜伦理片大全在线观看网站 | 亚洲国产欧美在线| 亚洲一级中文字幕| 国产乱码精品一品二品| 男人操女人免费软件| 天天综合一区| 精品国产一区二区三区麻豆小说 | 另类一区二区三区| 久久久久久中文字幕| 国产精品久久久久一区二区国产| 在线91免费看| 在线永久看片免费的视频| 亚洲欧美日韩成人高清在线一区| 国产精品麻豆入口| 久久精品国产成人一区二区三区| 国产一二三区在线播放| 日韩av密桃| 久久一区二区精品| 蜜桃在线一区| 国产精品九九九| 第一av在线| 精品久久久999| 国产在线视频网站| 亚洲国产精品免费| 国产欧美日韩综合精品一区二区三区| 欧美色播在线播放| 免费在线一区二区三区| 国产精品国产自产拍高清av| 一本色道综合久久欧美日韩精品| 国产高清不卡一区二区| 亚洲36d大奶网| 久久精品一区| 91丨porny丨探花| 欧美ab在线视频| 亚洲一二三区精品| av一区二区高清| 久久亚洲综合网| 欧美天堂社区| 国产欧美日韩一区二区三区| 秋霞一区二区| 成人午夜在线观看| 欧洲精品久久久久毛片完整版| 57pao精品| 日本免费一区二区六区| 久久久久久国产精品美女| 黄色免费在线看| 精品国产一区二区在线| 成黄免费在线| 一区三区二区视频| 成人在线免费看| 在线日韩av观看| 91欧美在线视频| 中文字幕在线看视频国产欧美| 波多野结衣视频免费观看| 亚洲福利视频三区| 日本一区二区不卡在线| 亚洲一区欧美一区| 久青草视频在线观看| 夜夜精品浪潮av一区二区三区| 成人免费毛片xxx| 亚洲欧美国产77777| 精品国产欧美日韩不卡在线观看| 最新中文字幕一区二区三区| 午夜精品福利在线视频| 综合婷婷亚洲小说| www.99re7| 亚洲国产一区视频| 国产极品在线播放| 久久精品人人爽人人爽| 蜜桃精品一区二区| 久久老女人爱爱| 国产一区二区三区四区在线| 国产精品免费免费| 朝桐光av在线| 五月天激情综合| 香蕉污视频在线观看| 欧美丝袜自拍制服另类| av在线资源观看| 亚洲国产毛片完整版| 国产综合视频一区二区三区免费| 一区二区三区四区精品| 国产精品实拍| 午夜精品久久久久久99热| 亚洲1234区| 成人精品一区二区三区| 老司机亚洲精品一区二区| 国产日韩在线一区二区三区| 九九综合在线| a级网站在线观看| 国产亚洲福利| 男生操女生视频在线观看 | 国产精品手机在线观看| 久久在线免费观看| 任我爽在线视频| 亚洲午夜激情网站| 波多野结衣大片| 欧美哺乳videos| 中文字幕 亚洲视频| 在线播放视频一区| 天天摸天天干天天操| 中文在线不卡视频| 欧美videosex性欧美黑吊| 国产一区二区三区18| 成人video亚洲精品| 97超视频免费观看| 伊人国产精品| 免费成人在线观看av| 国产精品成人a在线观看| www.爱色av.com| 国产在线播精品第三| 加勒比一区二区| 一区二区三区四区激情| 人人妻人人爽人人澡人人精品| 91精品免费观看| 男人的天堂在线| 性金发美女69hd大尺寸| 国产美女久久| 欧美日韩国产一二| 国产精品大片| 国内精品国产三级国产99| 国产亚洲亚洲| 性高潮久久久久久| 国产精品色呦呦| 久久久久久久久黄色| 日韩精品一区二区三区在线播放| 番号集在线观看| 欧美一区二区三区艳史| 一区二区亚洲视频| 一区二区冒白浆视频| 首页欧美精品中文字幕| 国产a级黄色片| 亚洲女与黑人做爰| 中文亚洲av片在线观看| 亚洲美女性生活视频| av中文资源在线资源免费观看| 91网在线免费观看| 久久亚洲国产| 一本久道中文无码字幕av| youjizz国产精品| 久久精品视频免费在线观看| 欧美军同video69gay| av中文资源在线| 国产成人激情小视频| 日韩有码av| 国产老熟妇精品观看| k8久久久一区二区三区 | 欧美网站在线| 国产大片一区二区三区| 国产精品二三区| 中文字幕1区2区3区| 国产一区二区三区久久精品| 成人爽a毛片免费啪啪| 久久成人资源| 免费亚洲婷婷| 国产男女猛烈无遮挡a片漫画 | 日本黄色免费视频| 色综合视频一区中文字幕| 精品国产鲁一鲁****| 天天爱天天做天天操| 国产一区二区剧情av在线| 日韩成人短视频| 日韩欧美国产一区在线观看| av文字幕在线观看| 91福利入口| 黄色精品免费| 亚洲男人在线天堂| 欧美视频在线免费| 国模吧精品人体gogo| 国产精品主播视频| 911精品美国片911久久久| 在线视频日韩欧美| 亚洲一区二区欧美日韩| 无码国产精品一区二区色情男同| 欧美一级免费看| 激情五月色综合国产精品| 亚洲 欧美 另类人妖| 亚洲日本va在线观看| 肥臀熟女一区二区三区| 538国产精品一区二区免费视频 | 99国产精品久久久久久久久久 | 精品一区二区在线观看| 永久久久久久久| 亚洲精品二三区| 视频精品导航| 国产日产欧美一区二区| 99久久99久久综合| 亚洲第一区av| 欧美日韩xxxxx| 久久不见久久见免费视频7| 日韩一级理论片| 亚洲黄色小视频| 欧洲免费在线视频| 国产拍精品一二三| 99国产精品久久久久久久| 香蕉视频久久久| 精品奇米国产一区二区三区| 中文字幕在线官网| 久久久国产精华液999999| 99re这里只有精品视频首页| 91麻豆精品在线| 欧美国产在线电影| 精品国产一区探花在线观看| 精品人妻一区二区乱码| 色久综合一二码| 香蕉久久aⅴ一区二区三区| 欧美一区二区综合| 国产精品一品二品| www.日韩一区| 久久人人爽国产| 亚洲精品二区三区| 成人片黄网站色大片免费毛片| 欧美一区二区三区四区在线观看| 在线能看的av网址| 中文精品无码中文字幕无码专区 |