国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaScript實現(xiàn)背景圖像切換3D動畫效果

這篇具有很好參考價值的文章主要介紹了JavaScript實現(xiàn)背景圖像切換3D動畫效果。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?? 個人主頁:不叫貓先生
???♂? 作者簡介:2022年度博客之星前端領(lǐng)域TOP 2,前端領(lǐng)域優(yōu)質(zhì)作者、阿里云專家博主,專注于前端各領(lǐng)域技術(shù),共同學(xué)習(xí)共同進(jìn)步,一起加油呀!
??優(yōu)質(zhì)專欄:vue3從入門到精通、TypeScript從入門到實踐
?? 資料領(lǐng)?。呵岸诉M(jìn)階資料以及文中源碼可以找我免費領(lǐng)取
?? 前端學(xué)習(xí)交流:博主建立了一個前端交流群,匯集了各路大神,一起交流學(xué)習(xí),期待你的加入!(文末有我wx或者私信)。

一、項目需求

給一張長圖,長圖中有好多個圖像,圖像的動作是連續(xù)的,當(dāng)鼠標(biāo)在容器內(nèi)移動時,背景圖像會隨之切換,呈現(xiàn)出連續(xù)的動畫效果,實現(xiàn)效果類似于3D動畫,用JS怎么實現(xiàn)?以下是實現(xiàn)效果。
JavaScript實現(xiàn)背景圖像切換3D動畫效果
示例圖片如下,可拿去自己測試:

JavaScript實現(xiàn)背景圖像切換3D動畫效果

二、代碼實現(xiàn)

<body>
	<div id="container"></div>
	<style>
		#container {
			width: 462.99px;//單個圖像的寬度
			height: 260.433px;//單個圖像高度
			background-image: url('https://media.sketchfab.com/models/01877de881c440cb9ba52b872dac85dc/fallbacks/5ca749dcb2e74dc4be85bcf8b0599a9b/a7e56f02d1004f59bdf9aae9d6cf5e70.jpeg');
			background-repeat: no-repeat;
			background-size: 6944.88px 260.433px;//參數(shù)講解在最后
		}
	</style>
	<script>
		const container = document.getElementById('container');
		let currentIndex = 0;
		container.addEventListener('mousemove', (event) => {
			const containerRect = container.getBoundingClientRect();
			const mouseOffsetX = event.clientX - containerRect.left;
			const imageCount = 15; // 圖像的數(shù)量
			const imageWidth = 462.99; // 單個圖像的寬度
			const index = Math.floor(mouseOffsetX / (containerRect.width / imageCount));
			currentIndex = Math.min(Math.max(index, 0), imageCount - 1);
			const positionX = currentIndex * imageWidth;
			container.style.backgroundPosition = `-${positionX}px 0`;
		});
	</script>
</body>
  • 1.先獲取container

  • currentIndex
    用于存儲當(dāng)前背景圖像的索引值,初始值為 0。
    如果鼠標(biāo)在容器的左邊緣,則索引為 0;如果鼠標(biāo)在容器的右邊緣,則索引為圖像數(shù)量減 1。
    Math.min(Math.max(index, 0), imageCount - 1)將計算出來的索引值限制在 0 到 imageCount - 1 的范圍,防止出現(xiàn)索引越界。如果計算出所以為imageCount,那么最終計算出的索引是imageCount-1

  • mousemove
    mousemove 事件監(jiān)聽器,鼠標(biāo)在某元素上移動時觸發(fā),在事件處理函數(shù)中實現(xiàn)了圖像切換的邏輯。

  • getBoundingClientRect(點擊查看MDN詳細(xì)講解)
    用于獲得頁面中某個元素的左,上,右和下分別相對瀏覽器視窗的位置。提供了元素的大小及其相對于視口的位置,具體如下所示:

    • top: 元素上邊距離頁面上邊的距離
    • left: 元素右邊距離頁面左邊的距離
    • right: 元素右邊距離頁面左邊的距離
    • bottom: 元素下邊距離頁面上邊的距離
    • width: 元素寬度
    • height: 元素高度
      JavaScript實現(xiàn)背景圖像切換3D動畫效果
  • mouseOffsetX
    獲取鼠標(biāo)偏移量。在事件處理函數(shù)中,首先獲取了容器元素相對于視口的位置(containerRect.left;)和鼠標(biāo)移動處到瀏覽器窗口的橫距離(clientX)來計算鼠標(biāo)偏移量。
    JavaScript實現(xiàn)背景圖像切換3D動畫效果

  • imageCount
    長圖中圖像的數(shù)量,示例圖片中是15個圖像

  • imageWidth
    單個圖片的寬度

  • index
    當(dāng)前顯示的圖像索引。containerRect.width / imageCount意思是將容器的寬度除以圖像數(shù)量,從而得到每個圖像的寬度。Math.floor(mouseOffsetX / (containerRect.width / imageCount))將鼠標(biāo)偏移量除以每個圖像的寬度,從而得到應(yīng)該顯示的圖像的索引。

  • positionX
    當(dāng)前圖像應(yīng)該顯示的位置。 currentIndex * imageWidth當(dāng)前圖像索引和單個圖像寬度計算得出。

最后通過修改容器元素的 backgroundPosition 樣式屬性實現(xiàn)了背景圖像的切換效果。文章來源地址http://www.zghlxwxcb.cn/news/detail-419059.html

三、問題

  • 為什么background-size設(shè)置為6944.88px 260.433px?
    background-size 屬性用于設(shè)置背景圖像的大小。將長圖分割成了 15 個等寬的部分,每個部分都代表了不同的狀態(tài)或者場景。background-size屬性被設(shè)置為 6944.88px 260.433px,意味著圖像被縮放成了水平方向的 6944.88px 和垂直方向的 260.433px。這個值的計算方法是將單個圖像的寬度(462.99px)乘以圖像的數(shù)量(15)得到的。
    因此,background-size 屬性的值被設(shè)置為 6944.88px 260.433px,使得圖像在容器內(nèi)能夠按照原本的寬高比例進(jìn)行縮放,同時也確保了每個圖像都能夠完整地顯示在容器中。

到了這里,關(guān)于JavaScript實現(xiàn)背景圖像切換3D動畫效果的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C# WPF實現(xiàn)動畫漸入暗黑明亮主題切換效果

    C# WPF實現(xiàn)動畫漸入暗黑明亮主題切換效果

    最近在Bilibili的桌面端看到一個黑白主題切換的效果感覺,挺有意思。于是我使用WPF嘗試實現(xiàn)該效果。 主要的切換效果,基本實現(xiàn)不過還存在一些小瑕疵,比如字體等筆刷不能跟隨動畫進(jìn)入進(jìn)行切換。因為Bilibili的客戶端是用electron寫的,前端使用的html,css確實太強了,這咱只

    2024年02月16日
    瀏覽(19)
  • CSS 實現(xiàn) Turbo 官網(wǎng) 3D 網(wǎng)格線背景動畫

    CSS 實現(xiàn) Turbo 官網(wǎng) 3D 網(wǎng)格線背景動畫

    轉(zhuǎn)載請注明出處,點擊此處 查看更多精彩內(nèi)容 查看 Turbo 官網(wǎng) 時發(fā)現(xiàn)它的背景動畫挺有意思,就自己動手實現(xiàn)了一下。下面對關(guān)鍵點進(jìn)行解釋說明,查看完整代碼及預(yù)覽效果請 點擊這里。 簡單說明原理:使用 mask-image 遮罩繪制網(wǎng)格,使用 perspective 及 rotate 動畫設(shè)置 3D 縱深效

    2024年02月17日
    瀏覽(17)
  • 使用JavaScript實現(xiàn)頁面滑動切換效果

    使用JavaScript實現(xiàn)頁面滑動切換效果

    ? 使用JavaScript實現(xiàn)頁面滑動切換效果 在現(xiàn)代Web頁面設(shè)計中,頁面滑動切換效果已經(jīng)成為了一種常見的設(shè)計要求,能夠提升用戶體驗,增加頁面的交互性。本文將通過JavaScript來實現(xiàn)這一效果。 首先,我們需要在HTML中添加一些基礎(chǔ)結(jié)構(gòu)和樣式。以下是一個簡單的例子: ? 在

    2024年02月13日
    瀏覽(20)
  • HTML + CSS + JavaScript【實戰(zhàn)案例】 實現(xiàn)動畫導(dǎo)航欄效果

    HTML + CSS + JavaScript【實戰(zhàn)案例】 實現(xiàn)動畫導(dǎo)航欄效果

    ?Hello~ 咱們今天一起來學(xué)習(xí)一個動畫導(dǎo)航的小項目 HTML結(jié)構(gòu)

    2024年02月03日
    瀏覽(25)
  • C#實現(xiàn)3D模型的動畫效果和交互設(shè)計

    介紹3D模型動畫效果和交互功能的概念和作用 介紹3D模型動畫效果和交互功能的概念和作用: 3D模型動畫效果是指通過對3D模型進(jìn)行動態(tài)的變化和運動,使其呈現(xiàn)出生動的效果,增強用戶的視覺體驗。交互功能則是指用戶可以通過操作3D模型來實現(xiàn)一些特定的功能,例如旋轉(zhuǎn)、

    2024年02月08日
    瀏覽(45)
  • JavaScript編程實現(xiàn)tab選項卡切換的效果+1

    JavaScript編程實現(xiàn)tab選項卡切換的效果+1

    之前在“圳品”信息系統(tǒng)使用了tab選項卡來顯示信息,詳見: JavaScript編程實現(xiàn)tab選項卡切換的效果 在tab選項卡中使用其它div來顯示信息就出現(xiàn)了問題,亂套了,比如下面的這段代碼: 運行效果如下: 可以看到,第1張選項卡中的div id=\\\"div1\\\" class=\\\"blue\\\"選項卡1/div消失了,而第

    2024年02月03日
    瀏覽(33)
  • SOLIDWORKS Composer如何使用3D工具實現(xiàn)更真實的動畫效果

    SOLIDWORKS Composer如何使用3D工具實現(xiàn)更真實的動畫效果

    當(dāng)我們使用SOLIDWORKS composer創(chuàng)建動畫時,往往會涉及到產(chǎn)品的安裝與拆解,現(xiàn)實生活中我們在拆卸組裝產(chǎn)品的時候,我們往往需要一些工具的協(xié)助,比如扳手、螺絲刀等等,那么我們?nèi)绾卧谔摂M動畫中也將這一過程以逼真的形式展示出來呢。 首先打開SOLIDWORKS composer軟件并加載

    2024年04月22日
    瀏覽(15)
  • Vue3 Transition組件給頁面切換加動畫效果

    Vue3 Transition組件給頁面切換加動畫效果

    本文分享一個Vue頁面組件之間切換的動畫效果,主要應(yīng)用在移動端設(shè)備,使用戶在切換頁面或者切換組件的時候交互體驗感更好一些,使用的是Vue3自帶的Transition組件。 先簡單介紹一下 Transition 組件,來自官方介紹: Transition 是一個內(nèi)置組件,這意味著它在任意別的組件中都

    2024年02月09日
    瀏覽(23)
  • CSS變形與動畫(二):perspctive透視效果 與 preserve-3d 3d效果(奧運五環(huán)例子)

    CSS變形與動畫(二):perspctive透視效果 與 preserve-3d 3d效果(奧運五環(huán)例子)

    perspective 指定了觀察者與 z=0 平面的距離,使具有三維位置變換的元素產(chǎn)生透視效果。z0 的三維元素比正常大,而 z0 時則比正常小,大小程度由該屬性的值決定。 作用于在 父級 上。 相互可以視覺上 插入 和 覆蓋 transform-style: preserve-3d; 也是用在 父級 上 例子 奧運五環(huán) 通過每

    2024年02月12日
    瀏覽(93)
  • Lottie--前端動畫效果--UI輸出json格式--lottie動畫在JavaScript中使用

    Lottie--前端動畫效果--UI輸出json格式--lottie動畫在JavaScript中使用

    Lottie一個適用于Web、Android、iOS、React Native和Window的移動庫,它可以使用Bodymovin解析以json格式導(dǎo)出的Adobe After Effects動畫,并再移動設(shè)備上進(jìn)行本地渲染。 1.需要引入JavaScript文件,我使用的是cdn中的鏈接。這里直接上鏈接,按需取用。點這里 2.json格式的文件 我不是UI啊,我也

    2023年04月09日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包