日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

CSS3+JS切割轮播图

發布時間:2024/4/14 javascript 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CSS3+JS切割轮播图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下說明數據,是指有4張圖片的輪播圖,分別切割成4張。

首先,做成單張切換的立體效果,即通過旋轉,確定四張圖片的位置,分別是一個立方體的上下前后的圖片翻轉移動角度。

.box ul li:nth-child(1){transform:rotateX(90deg) translateZ(190px);}.box ul li:nth-child(2){transform:rotateX(-90deg) translateZ(190px);}.box ul li:nth-child(3){transform:translateZ(190px);}.box ul li:nth-child(4){transform:rotateX(180deg) translateZ(190px);}

  

其次,切割輪播圖的原理并不是將一個圖片切割成4張,而是通過flex伸縮布局調整4張圖片的位置,并調整圖片位置,使得看起來像一張圖片,通過設置過渡延遲來實現切割效果。

.box {width: 560px;height: 380px;border: 1px solid #000;margin: 100px auto 0;/* 讓這個盒子成為一個伸縮容器 一旦盒子成為了伸縮容器,里面所有的子元素都會自動成為項目 項目默認呈現水平排列 一旦水平排列就會超出box,所以,flex-shrink:1自動就會收縮每一個UL,最終的結果就是一個UL占的box的1/4*/display: flex;}.box ul {width: 560px;height: 380px;position: relative;transform-style:preserve-3d;transform:rotateX(0deg);transition:transform 1s;}.box ul li {/* 這里的LI設置成百分之百分寬高,為的是繼承縮放后的UL的寬度 */width: 100%;height: 100%;position: absolute;left: 0;top: 0;/* 在這里添加overflow:hidden */overflow: hidden;}/* 給每一個UL添加延遲時間 */.box ul:nth-child(2){transition-delay: 0.2s;}.box ul:nth-child(3){transition-delay: 0.4s;}.box ul:nth-child(4){transition-delay: 0.6s;}/* 讓每一個UL下面的圖片都往左走 */.box ul:nth-child(2) img{margin-left: -140px;}.box ul:nth-child(3) img{margin-left: -280px;}.box ul:nth-child(4) img{margin-left: -420px;}

  最后,通過JS的遍歷來分別給每個按鈕、每個ul注冊事件,并通過添加 節流閥來控制輪播圖的進度

<script type="text/javascript">// 需求 :點擊按鈕讓UL進行旋轉 每一次點擊累加一個90的角度//(1)找對象var box = document.querySelector('.box');var _ul = box.querySelectorAll('ul');var btns = document.querySelectorAll('button');// (2)給右邊的按鈕綁定點擊事件 每點擊一次讓Ul基于之前的角度在加上一個90var num = 0; // 模擬信號量// 設置一個flag變量var flag = true;// 整體綁定for(var i = 0; i < btns.length; i++){// 設置自定義屬性btns[i].setAttribute('data-index', i);btns[i].addEventListener('click',function(){if(flag){// 關門flag = false;// 判斷當前點擊的是哪一個對象// 通過this去拿到當前的那個對象的data-indexvar index = this.dataset['index'];// 不能用全等 因為一個是字符串一個是數值型if(index == 1){num++;}else if(index == 0){num--;}console.log(num*90);// _ul.style.transform = 'rotateX('+num*90+'deg)';// 讓所有的UL轉起來for(var i = 0; i < _ul.length; i++){_ul[i].style.transform = 'rotateX('+num*90+'deg)';}}})}// 當用戶暴力點擊的時候,會出現過渡來不及的BUG 解決方案:函數節流 // 當最后一個UL的過渡執行完畢之后重新開門_ul[_ul.length - 1].addEventListener('transitionend',function(){console.log(1);// 開門flag = true;     })

轉載于:https://www.cnblogs.com/tangting/p/6241891.html

總結

以上是生活随笔為你收集整理的CSS3+JS切割轮播图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。