ホームページ  >  記事  >  ウェブフロントエンド  >  イメージ広告ローテーションを実装するJavaScript模倣モールのサンプルコード_JavaScriptスキル

イメージ広告ローテーションを実装するJavaScript模倣モールのサンプルコード_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 15:16:061392ブラウズ

ショッピングモールを閲覧しているとき、モールのホームページにさまざまなカルーセル広告があることに気づいたことはありますか?具体的な内容は以下の通りです:

1.HTML フレームワーク

以下に示すように、最初に保持する div、次に写真を保存する ul、数値を保存する ul、そして 2 つのボタンがあります。


<div class="out">
<ul class="img">
<li><img src="img/1.png" alt=""></li>
<li><img src="img/2.png" alt=""></li>
<li><img src="img/3.png" alt=""></li>
<li><img src="img/4.png" alt=""></li>
<li><img src="img/5.png" alt=""></li>
</ul>
<ul class="num">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<input class="left btn" type="button" value="<">
<input class="right btn" type="button" value=">">
</div>

2.CSS 設定

まず、外枠のdivを画像と同じサイズにして中央に揃える必要があります。後続の画像やその他の画像は相対的に配置されるためです。この大きなフレーム

//div外框
.out{
width: 560px;
height: 350px;
margin: 0 auto;
position: relative;
border: 2px solid red;
}

次に、5 つの画像の重ね合わせは、親コンテナーを相対上に設定しているため、親 div に対して絶対的に配置されます。

.img {
list-style-type: none;
}
.img li{
position: absolute;
top:0;
cursor: pointer;
}
次の他の要素をコメント付きでコードに書き込みます

.num{
list-style-type: none;
/*这个属性会使得text-align失效,所以下面手动写上宽度即可*/
position: absolute;
width: 100%;
bottom:0;
text-align: center;
}
.num li{
width: 20px;
height: 20px;
/*行高这个属性使得元素垂直居中*/
line-height: 20px;
text-align: center;
/*inline-block使得所有元素按行排列*/
display: inline-block;
background-color: #4a4a4a;
color: #fff;
border-radius: 50%;
/*鼠标放上去会有小手*/
cursor: pointer;
}
/*鼠标放到图片上的时候才显示btn*/
.out:hover .btn{
display: block;
}
.btn{
width: 30px;
height: 50px;
position: absolute;
display: none;
/*通过top和margin来定位属性到垂直居中*/
top: 50%;
margin-top: -30px;
border: 0;
/*使用rgba可以修改透明度*/
background-color: rgba(0,0,0,.5);
color: #fff;
}
.right{
right: 0;
}
効果は次のとおりです:

3.jquery コントロール カルーセル

手動カルーセルを実現

下の数字にマウスを移動すると、対応する画像が表示されることを意味します

//手动控制轮播图
$(".img li").eq(0).fadeIn(300);//加载页面的时候让第一个图片显示
$(".num li").eq(0).addClass("active");//给序号为1的加上红色背景
$(".num li").mouseover(function () {
//当前的数字显示红色背景,其他的数字都隐藏背景
$(this).addClass("active").siblings().removeClass("active");
//当前数字对应的图片显示,其他图片都隐藏
var index = $(this).index();
$(".img li").eq(index).stop().fadeIn(300).siblings().stop().fadeOut(300);
})

自動カルーセル

//实现自动轮播
var i = 0;//计时器控制数字
var t = setInterval(move,1500);
//该方法显示与序号对应的图片
function move() {
if (++i ==5){
i = 0;
}
$(".num li").eq(i).addClass("active").siblings().removeClass("active");
$(".img li").eq(i).stop().fadeIn(300).siblings().stop().fadeOut(300);
}
//鼠标移入后停止自动轮播
$(".out").hover(function () {
clearInterval(t);
}, function () {
t = setInterval(move,1500);
});

クリックカルーセルの実装

//按钮移动事件
$(".right").click(function () {
move();
});
$(".left").click(function () {
i = i-2;
move();
});
デジタル表示量の動的制御

写真の数によってタグの数を制御できます

//手动控制li数量
var size = $(".img li").size();
for (var k=1;k<=size;k++){
$(".num").append("<li>"+k+"</li>");
}
$(".num li").eq(0).addClass("active");
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。