JavaScript 圖片切換展示效果alibaba拓展版第1/3頁
更新時間:2008年09月15日 10:27:44 作者:
看到alibaba的一個圖片切換效果,感覺不錯,想拿來用用。但代碼一大堆的,看著昏,還是自己來吧。
由于有了做圖片滑動展示效果的經(jīng)驗(yàn),做這個就容易得多了。
首先需要一個容器,設(shè)置它的overflow為hidden,position為relative;
容器里面還要一個滑動對象,設(shè)置它的position為absolute;
在initialize()函數(shù)里初始化一些屬性。
在切換之前先執(zhí)行Start()函數(shù),進(jìn)行相關(guān)設(shè)置,
主要是設(shè)置Index屬性(索引)和_target屬性(目標(biāo)值):
if(this.Index < 0){
this.Index = this._count - 1;
} else if (this.Index >= this._count){ this.Index = 0; }
this._target = -1 * this._parameter * this.Index;
接著就執(zhí)行Move()函數(shù)開始移動了,原理通過設(shè)置滑動對象的top(或left)來做出移動的效果,
而減速的效果就需要執(zhí)行GetStep()函數(shù)來獲取步長:
var iStep = (iTarget - iNow) / this.Step;用目標(biāo)值減當(dāng)前值再除以一個參數(shù),得到步長,
這樣取得的步長在當(dāng)前值越接近目標(biāo)值時會越來越小,也做成了減速的效果,
然后在top(或left)的設(shè)置中加上這個步長,并設(shè)置定時器繼續(xù)Move(),直到到達(dá)目標(biāo)值:
this._slider.style[style] = (iNow + iStep) + "px";
this._timer = setTimeout(function(){ oThis.Move(); }, this.Time);
下面例子里的容器結(jié)構(gòu):
<div class="container" id="idTransformView">
<ul class="slider" id="idSlider">
<li><img src="http://shundebk.cn/temp/1.jpg"/></li>
<li><img src="http://shundebk.cn/temp/2.jpg"/></li>
<li><img src="http://shundebk.cn/temp/3.gif"/></li>
</ul>
<ul class="num" id="idNum">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
要美觀的話需要css設(shè)置一下:
.container, .container *{margin:0; padding:0;}
.container{width:408px; height:168px; overflow:hidden;}
.slider{position:absolute;}
.slider li{ list-style:none;display:inline;}
.slider img{ width:408px; height:168px; display:block;}
.slider2{width:2000px;}
.slider2 li{float:left;}
.num{ position:absolute; right:5px; bottom:5px;}
.num li{
float: left;
color: #FF7300;
text-align: center;
line-height: 16px;
width: 16px;
height: 16px;
font-family: Arial;
font-size: 12px;
cursor: pointer;
overflow: hidden;
margin: 3px 1px;
border: 1px solid #FF7300;
background-color: #fff;
}
.num li.on{
color: #fff;
line-height: 21px;
width: 21px;
height: 21px;
font-size: 16px;
margin: 0 1px;
border: 0;
background-color: #FF7300;
font-weight: bold;
}
樣式的設(shè)置跟程序也有一定關(guān)系,例如寬和高,這里就不說明了。
接著就可以實(shí)例化了:
var tv = new TransformView ("idTransformView", "idSlider", 168, 3, {
onStart : function(){ Each(objs, function(o, i) { o.className = tv.Index == i ? "on" : ""; }) }//按鈕樣式
});
這里主要有4個參數(shù),分別是容器對象、滑動對象、切換參數(shù)和切換數(shù)量。
當(dāng)程序是上下切換時,切換參數(shù)切換的高度,當(dāng)左右切換時,是切換的寬度。
切換數(shù)量就是有多少個切換對象了,例如上面的例子就是3個。
最后的參數(shù)是一些設(shè)置:
屬性: 默認(rèn)值//說明
Up: true,//是否向上(否則向左)
Step: 5,//滑動變化率
Time: 10,//滑動延時
Auto: true,//是否自動轉(zhuǎn)換
Pause: 2000,//停頓時間(Auto為true時有效)
onStart: function(){},//開始轉(zhuǎn)換時執(zhí)行
onFinish: function(){}//完成轉(zhuǎn)換時執(zhí)行
例子里設(shè)置了onStart屬性,作用是在切換開始時,設(shè)置按鈕的樣式
容器里面還要一個滑動對象,設(shè)置它的position為absolute;
在initialize()函數(shù)里初始化一些屬性。
在切換之前先執(zhí)行Start()函數(shù),進(jìn)行相關(guān)設(shè)置,
主要是設(shè)置Index屬性(索引)和_target屬性(目標(biāo)值):
復(fù)制代碼 代碼如下:
if(this.Index < 0){
this.Index = this._count - 1;
} else if (this.Index >= this._count){ this.Index = 0; }
this._target = -1 * this._parameter * this.Index;
接著就執(zhí)行Move()函數(shù)開始移動了,原理通過設(shè)置滑動對象的top(或left)來做出移動的效果,
而減速的效果就需要執(zhí)行GetStep()函數(shù)來獲取步長:
復(fù)制代碼 代碼如下:
var iStep = (iTarget - iNow) / this.Step;用目標(biāo)值減當(dāng)前值再除以一個參數(shù),得到步長,
這樣取得的步長在當(dāng)前值越接近目標(biāo)值時會越來越小,也做成了減速的效果,
然后在top(或left)的設(shè)置中加上這個步長,并設(shè)置定時器繼續(xù)Move(),直到到達(dá)目標(biāo)值:
復(fù)制代碼 代碼如下:
this._slider.style[style] = (iNow + iStep) + "px";
this._timer = setTimeout(function(){ oThis.Move(); }, this.Time);
下面例子里的容器結(jié)構(gòu):
復(fù)制代碼 代碼如下:
<div class="container" id="idTransformView">
<ul class="slider" id="idSlider">
<li><img src="http://shundebk.cn/temp/1.jpg"/></li>
<li><img src="http://shundebk.cn/temp/2.jpg"/></li>
<li><img src="http://shundebk.cn/temp/3.gif"/></li>
</ul>
<ul class="num" id="idNum">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
要美觀的話需要css設(shè)置一下:
復(fù)制代碼 代碼如下:
.container, .container *{margin:0; padding:0;}
.container{width:408px; height:168px; overflow:hidden;}
.slider{position:absolute;}
.slider li{ list-style:none;display:inline;}
.slider img{ width:408px; height:168px; display:block;}
.slider2{width:2000px;}
.slider2 li{float:left;}
.num{ position:absolute; right:5px; bottom:5px;}
.num li{
float: left;
color: #FF7300;
text-align: center;
line-height: 16px;
width: 16px;
height: 16px;
font-family: Arial;
font-size: 12px;
cursor: pointer;
overflow: hidden;
margin: 3px 1px;
border: 1px solid #FF7300;
background-color: #fff;
}
.num li.on{
color: #fff;
line-height: 21px;
width: 21px;
height: 21px;
font-size: 16px;
margin: 0 1px;
border: 0;
background-color: #FF7300;
font-weight: bold;
}
樣式的設(shè)置跟程序也有一定關(guān)系,例如寬和高,這里就不說明了。
接著就可以實(shí)例化了:
復(fù)制代碼 代碼如下:
var tv = new TransformView ("idTransformView", "idSlider", 168, 3, {
onStart : function(){ Each(objs, function(o, i) { o.className = tv.Index == i ? "on" : ""; }) }//按鈕樣式
});
這里主要有4個參數(shù),分別是容器對象、滑動對象、切換參數(shù)和切換數(shù)量。
當(dāng)程序是上下切換時,切換參數(shù)切換的高度,當(dāng)左右切換時,是切換的寬度。
切換數(shù)量就是有多少個切換對象了,例如上面的例子就是3個。
最后的參數(shù)是一些設(shè)置:
屬性: 默認(rèn)值//說明
Up: true,//是否向上(否則向左)
Step: 5,//滑動變化率
Time: 10,//滑動延時
Auto: true,//是否自動轉(zhuǎn)換
Pause: 2000,//停頓時間(Auto為true時有效)
onStart: function(){},//開始轉(zhuǎn)換時執(zhí)行
onFinish: function(){}//完成轉(zhuǎn)換時執(zhí)行
例子里設(shè)置了onStart屬性,作用是在切換開始時,設(shè)置按鈕的樣式
相關(guān)文章
推薦自用 Javascript 縮圖函數(shù) (onDOMLoaded)……
推薦自用 Javascript 縮圖函數(shù) (onDOMLoaded)……...2007-10-10JS實(shí)現(xiàn)鼠標(biāo)移動到縮略圖顯示大圖的圖片放大效果
一個網(wǎng)頁上用的圖片提示效果,當(dāng)把鼠標(biāo)移動到圖片縮略圖的時候,會顯示圖片大圖,似乎在網(wǎng)上這是個很常見的效果,實(shí)現(xiàn)方法也比較多,有人用CSS,有人用JavaScript,有人用jQuery,總之,選擇自己習(xí)慣的方式去實(shí)現(xiàn),就是最棒的。2012-12-12javascript橢圓旋轉(zhuǎn)相冊實(shí)現(xiàn)代碼
支持自動和手動兩種模式:自動模式下自動旋轉(zhuǎn)展示,手動模式下通過鼠標(biāo)選擇當(dāng)前圖片,或通過提供的接口選擇上一張/下一張圖片2012-01-01javascript 放大鏡效果js組件 qsoft.PopBigImage.v0.35 加入了chrome支持
一般頁面的的圖片為了布局考慮,顯示大小都小于實(shí)際大小。 鼠標(biāo)在圖片上移動時,在旁邊展示一個跟此圖片顯示大小一樣的層。并講鼠標(biāo)附近區(qū)域?qū)?yīng)的原始圖片的區(qū)域按原始大小顯示在這個層中。2009-04-04