是的,趁着在玩輪播我用transition又寫了個滑動式的輪播圖,是仿的嗶哩嗶哩嗶哩嗶哩。效果看下面咯。ide
這回我是用JS修改圖片的left
屬性,用CSS的transition
來實現動畫過程。好比說一個圖left: 200px; transition: left 0.3s linear;
,而後我用JS把這個圖的left
改成0
,這樣圖片就有個0.3s
的左移動畫啦。動畫
滑動式的輪播圖圖片是怎麼動的呢?this
「中間」爲輪播圖展現區。假設有3張圖,咱們理下邏輯。spa
初始的時候,全部圖片都位於「右邊」。而後圖1到「中間」 → 圖1到「左邊」 & 圖2到「中間」 → 圖2到「左邊」 & 圖3到「中間」 → 圖2圖3到「右邊」 & 圖1到「中間」。這樣一個循環的過程。code
我用修改類名的方式來修改圖片的left
值。沒有類名的時候圖片位於右側,有active
類時圖片位於中間,有left
類時位於左側。blog
img{ left: 260px; /*圖片均位於右側*/ transition: left 0.3s linear; /*改變left值實現動畫*/ } img.active{ left: 0; } img.left{ left: -260px; }
而後在JS裏經過setInterval(code,millisec)
來定時執行切換圖片的函數。seo
HTML事件
<div id="slideshow"> <!-- 插入輪播的圖片們 --> <img class="active" src="http://i0.hdslb.com/bfs/archive/1058ca7f23a79f4f0ae0760ad4c08ac9c596f70e.jpg" /> <img src="http://i0.hdslb.com/bfs/archive/e10fa2ca13cb59b264fce0f9085e1a050cc2dab5.jpg" /> <img src="http://i0.hdslb.com/bfs/archive/86783a2c790312bb9f5f473896f9d36ec4c1da34.jpg" /> <!-- 插入輪播的頁碼們 --> <div> <span class="active" name="0"></span><span name="1"></span><span name="2"></span> </div> <!-- 插入圖片的描述們 --> <p class="active">刀劍亂舞-花丸-</p> <p>我太受歡迎了該怎麼辦</p> <p>少女編號</p> </div>
CSS圖片
*{ padding: 0; margin: 0; } /*-- 輪播圖總體樣式-- */ #slideshow{ width: 260px; height: 248px; margin: 20px auto; border-radius: 5px; overflow: hidden; position: relative; } /*-- 圖片樣式 --*/ #slideshow img{ position: absolute; top: 0; left: 260px; /*圖片均位於右側*/ transition: left 0.3s linear; /*改變left值實現動畫*/ } #slideshow img.active{ left: 0; } #slideshow img.left{ left: -260px; } /*-- 頁碼樣式 --*/ #slideshow div{ position: absolute; bottom: 0; width: 100%; line-height: 0; text-align: center; padding: 5px 0; background: rgba(0,0,0,0.7); } #slideshow span{ display: inline-block; width: 15px; height: 10px; margin: 0 3px; border-radius: 5px; background: white; transition: width 0.3s; } #slideshow span.active{ width: 25px; background: rgb(216,83,127); } /*-- 圖片描述的樣式 --*/ #slideshow p{ position: absolute; bottom: 20px; width: 100%; line-height: 20px; font-size: 14px; text-indent: 5px; color: white; background: rgba(0,0,0,0.4); cursor: default; opacity: 0; transition: opacity 0.3s linear; } #slideshow p.active{ opacity: 1; }
JS
//---------主角:輪播圖函數------------- function slideshow() { var slideshow=document.getElementById("slideshow"), imgs=slideshow.getElementsByTagName("img"), //圖片們 pages=slideshow.getElementsByTagName("span"), //頁碼們 descrips=slideshow.getElementsByTagName("p"), //描述們 length=imgs.length, //圖片數目 current=1; //current爲當前活躍的圖片、頁碼、描述的編號 function changeSlide() { //切換圖片的函數 for (var i=0; i<length; i++) { if(i==current) { imgs[i].className="active"; pages[i].className="active"; descrips[i].className="active"; } else { pages[i].className=""; descrips[i].className=""; if(i<current) { imgs[i].className="left"; } else { imgs[i].className=""; } } } current++; //自增1 if(current>=length) { current=0; } } //每2s調用changeSlide函數進行圖片輪播 var slideon=setInterval(changeSlide,2000); slideshow.onmouseover=function(){ clearInterval(slideon); //當鼠標移入時清除輪播事件 } slideshow.onmouseout=function(){ slideon=setInterval(changeSlide,2000); //當鼠標移出時從新開始輪播事件 } for(var i=0; i<length; i++) { //定義鼠標移入頁碼事件 pages[i].onmouseover=function(){ current=this.getAttribute("name"); //獲得當前鼠標指的頁碼 changeSlide(); } } } slideshow();
完。