JS實現八種焦點輪播圖(下)
佈局同(上),略
5.定時上下無縫滾動
思路:
1.思路1: 將ul複製一份,但滾動一半距離重新歸位;(大型網站效能略低);
2.思路2: 通過相對定位,將第一個li移動到最後,再將ul和Li歸位。
window.onload=function(){
var oBox=document.getElementById('box');
var oUl=document.getElementById('ul');
var aLi_u=oUl.getElementsByTagName('li');
var oOl=document.getElementById('ol');
var aLi_o=oOl.getElementsByTagName('li');
var LiHeight=aLi_u[0].offsetHeight;
var iNow=0;//針對按鈕的值
var iNow2=0;//用於滾動
var timer=null;
for(var i=0;i<aLi_o.length;i++){
aLi_o[i].index=i;
aLi_o[i].onmouseover=function(){
for(var i=0;i<aLi_o.length;i++){
aLi_o[i].className='';
this.className='active';
//建立關係:很重要
iNow=this.index;
iNow2=this.index;
startMove(oUl,{top:-this.index*LiHeight});
}
};
}
timer=setInterval(toRun,2000);
oBox.onmouseover=function(){
clearInterval(timer);
};
oBox.onmouseout=function(){
timer=setInterval(toRun,2000);
};
function toRun(){
if(iNow==0){
//還原li並把ul歸位
aLi_u[0].style.position='static';
oUl.style.top=0;
//記得把iNow2還原
iNow2=0;
}
if(iNow==aLi_o.length-1){
//將第一個Li移到最後
iNow=0;
aLi_u[0].style.position='relative';
aLi_u[0].style.top=aLi_u.length*LiHeight+'px';
}else{
iNow++;
}
iNow2++;
for(var i=0;i<aLi_o.length;i++){
aLi_o[i].className='';
}
aLi_o[iNow].className='active';
startMove(oUl,{top:-iNow2*LiHeight});
}
};
效果圖:
6.左右無縫切換效果
思路:
- 絕對定位:除第一個外的所有Li定位到右邊,比較索引值與當前索引,定位要出現的li位置。
- 加入“開關”或“時間間隔”等來控制運動切換頻率!
window.onload=function(){
var oUl=document.getElementById('ul');
var aLi_u=oUl.getElementsByTagName('li');
var oOl=document.getElementById('ol');
var aLi_o=oOl.getElementsByTagName('li');
var LiWidth=aLi_u[0].offsetWidth;
var iNow=0;
var bBtn=true;
//除第一項外所有定位到右邊
for(var i=1;i<aLi_u.length;i++){
aLi_u[i].style.left=LiWidth+'px';
}
for(var i=0;i<aLi_o.length;i++){
aLi_o[i].index=i;
aLi_o[i].onmouseover=function(){
if(bBtn){
bBtn=false;
for(var i=0;i<aLi_o.length;i++){
aLi_o[i].className='';
}
this.className='active';
//判斷左移右移
if(iNow<this.index){
//定位要出現的li
aLi_u[this.index].style.left=LiWidth+'px';
//將當前li移走
startMove(aLi_u[iNow],{left:-LiWidth});
}else if(iNow>this.index){
aLi_u[this.index].style.left=-LiWidth+'px';
startMove(aLi_u[iNow],{left:LiWidth});
}
startMove(aLi_u[this.index],{left:0},function(){
bBtn=true;//只有當前運動完才可進行下一次運動
});
//將當前索引賦值
iNow=this.index;
}//開關if結束
};
}
};
效果圖:
7.手風琴效果
思路:
- 思路1:通過改變li寬度來製作;
- 思路2:除第一項外的所有li按等距間隔定位,觸發事件後等距變換位置
window.onload=function(){
var oUl=document.getElementById('ul');
var aLi_u=oUl.getElementsByTagName('li');
//除第一項外所有定位
for(var i=1;i<aLi_u.length;i++){
//等距30px定位
aLi_u[i].style.left=(470-3*40)+(i-1)*30+'px';
}
for(var i=0;i<aLi_u.length;i++){
aLi_u[i].index=i;
aLi_u[i].onmouseover=function(){
for(var i=0;i<aLi_u.length;i++){
if(i<=this.index){
//小於索引的全部左排列
startMove(aLi_u[i],{left:i*30});
}else{//大於索引的全部右排列
startMove(aLi_u[i],{left:(470-3*40)+(i-1)*30});
}
}
}
}
};
8.手風琴效果2
在之前的基礎上均勻定位Li!
window.onload=function(){
var oUl=document.getElementById('ul');
var aLi_u=oUl.getElementsByTagName('li');
var num=Math.ceil(470/aLi_u.length);//每個的寬度
//除第一項外所有定位
for(var i=1;i<aLi_u.length;i++){
aLi_u[i].style.left=num*i+'px';
}
for(var i=0;i<aLi_u.length;i++){
aLi_u[i].index=i;
aLi_u[i].onmouseover=function(){
for(var i=0;i<aLi_u.length;i++){
if(i<=this.index){
startMove(aLi_u[i],{left:i*30});
}else{
startMove(aLi_u[i],{left:(470-3*40)+(i-1)*30});
}
}
};
aLi_u[i].onmouseout=function(){
for(var i=0;i<aLi_u.length;i++){
startMove(aLi_u[i],{left:num*i});
}
};
}
};
效果圖:
相關文章
- js實現輪播圖JS
- 原生js實現輪播圖JS
- JavaScript焦點圖輪播效果詳解JavaScript
- 兩種方式實現輪播圖
- 原生JS實現輪播圖的效果JS
- 用原生js實現圖片輪播器JS
- [外掛擴充套件]焦點圖輪播外掛套件
- ViewPage實現輪播圖View
- Banner實現輪播圖
- js 輪播圖 (原生)JS
- 移動端輪播圖實現方法(dGun.js)JS
- 用原生JS實現 圖片輪播切換 功能JS
- JS實現輪播圖效果(有詳細註釋)JS
- 原生JS實現輪播圖--第二章動畫實現JS動畫
- 原生JS實現輪播圖--第一章圖片展示JS
- 前端基礎功能,原生js實現輪播圖例項教程前端JS
- vue元件之輪播圖的實現Vue元件
- 用CSS實現一個輪播圖CSS
- [分享會]只用CSS實現輪播圖CSS
- 原生JS實現一個無縫輪播圖外掛(支援vue)JSVue
- 直播平臺原始碼,純JS實現左右滑動輪播圖原始碼JS
- ViewPager兩種方式實現無限輪播Viewpager
- 文字輪播與圖片輪播?CSS 不在話下CSS
- 網頁佈局------輪播圖效果實現網頁
- vue元件之路之輪播圖的實現Vue元件
- jQuery輪播圖之上下輪播jQuery
- 使用jQuery實現的平滑滾動輪播圖jQuery
- 基於 flex 的 order 實現 carousel 輪播圖Flex
- 仿小米官網輪播圖(Banner)的實現
- 藉助 :has 實現3d輪播圖3D
- 直播app原始碼,HTML + jQuery 實現輪播圖APP原始碼HTMLjQuery
- JQuery實現圖片輪播無縫滾動jQuery
- 輪播圖
- Axure實現輪播效果
- jQuery實現輪播效果jQuery
- 用js寫的輪播圖,八位女明星,你翻誰的牌!JS
- js點選拉拽輪播圖pc端移動端適配JS
- spring boot+bootstrap實現動態輪播圖實戰Spring Boot
- js、jQuery實現文字上下無縫輪播、滾動效果JSjQuery