###前提・実現したいこと
JQueryでプラグインを使わずに自作でスライダーを作っています。ウィンドウ幅を縮めても画像の表示位置を常に真ん中にする方法をご教授ください。
###発生している問題・エラーメッセージ
widthが1980pxの画像を3枚スライドさせているのですが、ウィンドウ幅が1980px以下になると画像の左が固定されてしまいます。
結果、画像の左端〜ウィンドウ幅までしか画面が見えず、右側がバランス悪く見切れてしまうのです。
###該当のソースコード
<div id="sliderContainer">
<div id="bannerBox">
<ul class="clearfix">
<li><img src="img/slider_01.jpg"></li>
<li><img src="img/slider_02.jpg"></li>
<li><img src="img/slider_03.jpg"></li>
</ul>
</div>
<div id="btnPagination">
<ul>
<!-- <li>は自動追加 -->
</ul>
</div>
<p id="btnPrev"><a href="#"><img src="slider/btn_prev.png"></a></p>
<p id="btnNext"><a href="#"><img src="slider/btn_next.png"></a></p>
//ページを読み込んでから処理開始
$(window).load(function(){
//一瞬次の画像が表示されるのを対策
$("#sliderContainer #bannerBox ul li").css({
"visibility" : "visible"
});
var _imgNum = 0; //画像の枚数。カウント用。スクリプトで取得
var _imgWidth = 0; //画像のwidth。スクリプトで取得
var _current = 0; //現在の画像の位置。スクリプトで取得
var _timerSpeed = 5000; //タイマー時間。1000=1秒
var _fadeSpeed = 200; //左右ボタンのフェード時間
//bannerBoxとbtnPaginationのulの指定
var _bannerUL = "#bannerBox ul";
var _paginationUL = "#btnPagination ul";
//画像の横幅取得
_imgWidth = $(_bannerUL).children("li").width();
//画像の枚数分だけ繰り返す処理
$(_bannerUL).children("li").each(function(){
//画像を外に配置 $(this).css("margin-left", -_imgWidth); //最初の画像の時 if(_imgNum == _current){ $(this).css("margin-left", "0"); }else{ } //ループの数をカウントし、変数_imgNumに格納 _imgNum++;
});//$(_bannerUL).children("li").each(function() END
//一定時間ごとに画像を切り替える関数(slideImg)を実行
var loopSwitch = setInterval(loop, _timerSpeed);
function loop(){
slideImg(_current + 1);
}
//次へ進むボタンをクリック
$("#btnNext").click(function(e){
e.preventDefault();
slideImg(_current + 1);
});
//前へ戻るボタンをクリック
$("#btnPrev").click(function(e){
e.preventDefault();
slideImg(_current - 1);
});
//画像を切り替える関数
function slideImg(next){
////ループ時間をリセット
clearInterval(loopSwitch);
loopSwitch = setInterval(loop, _timerSpeed);
//次の画像番号が大きければ、変数posに画像の横幅を代入 //次の画像番号が小さければ、変数posに画像の横幅(マイナス)を代入 var pos; if(_current < next){ pos = _imgWidth; }else{ pos = -_imgWidth; } //現在の画像が最後なら、次は1枚目を表示 //現在の画像が最初なら、次は最後を表示 if(next == _imgNum){ next = 0; }else if(next == -1){ next = (_imgNum - 1); } //次の画像を表示 $(_bannerUL).children("li").eq(next).css("margin-left", pos).animate({ marginLeft: "0" }, { duration: 'slow', easing: 'swing', } ); //現在の画像を外へ配置 $(_bannerUL).children("li").eq(_current).animate({ marginLeft: -pos }, { duration: 'slow', easing: 'swing', } ); //画像の位置を次の番号に _current = next;
}//function slideImg(next) END
$("#bannerBox").hover(function(){
});
});
###試したこと
#sliderContainer #bannerBox ul li ing{
position:absolute;
margin-left:-990px;
left:50%;
}
↑これはやりましたが、margin-leftの値を変えることでスライドさせているので今度はうまくスライドしなかった上に画像の表示されかたも変わりませんでした…
###補足情報
まだ勉強し始めて1週間程度ですので、お手柔らかにご指導願います。