画面いっぱいにひろげていますが、幅・高さを指定することもできるのでスライドショーとしても使えます。
参考にしたページ
【jQuery】クロスフェードで切り替わるシンプルな画像スライドショー。
【jQuery】拡大・縮小のアニメーションをする例
背景写真の画像は、横1200px、縦800px。画像比率は1.5です。文字は画像で画面中央に配置するようにしています。
【リサイズに対応:改訂2016.08.05。画像位置修正:改訂20170711。】
・フェードアウトバージョン
・指定した回数でストップバージョン(JSの46行目で回数を指定できます。今は2)
・全画面表示ではなく高さを指定したバージョン
・全画面表示ではなくウィンドウの高さからパーセント指定したバージョン
・全画面表示ではなく横幅で合わせるバージョン【高さ取得:改訂20180112】
JSを読み込みます
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script type="text/javascript" src="js/main.js"></script>
[main.js]JavaScript
(function($) {
function setimage(){
(function($) {
function setimage(){
// 設定
var height =$(window).height(); // 高さ
var width =$(window).width(); // 幅
var win_ratio = width / height;
$(".Opening").css({"height":height});
$(".Opening ul li").css({"height":height});
if (win_ratio > 1.5){ //画像の比率が大きかったら
$(".Opening ul li img.Opening__img").css({"width":"100%","height":"auto","margin-left":0});
var winwidth = $(".Opening").width();
var imgheight = winwidth*0.66;
var winheight = $(".Opening").height();
var imgtopmargin = (imgheight-winheight)/2;
$(".Opening ul li img.Opening__img").css({"margin-top":-imgtopmargin});
}else if (win_ratio < 1.5){ //画像の比率が小さかったら
var imgwidth = ((height/800))*1200;
var winwidth = $(".Opening").width();
var imgmargin = (winwidth-imgwidth)/2;
$(".Opening ul li img.Opening__img").css({"width":imgwidth,"height":height,"margin-left":imgmargin,"margin-top":0});
}
}
//slide
$(function(){
setimage();
var interval = 4000; // 切り替わりの間隔(ミリ秒)
var fade_speed = 2000; // フェード処理の早さ(ミリ秒)
$(".Opening ul li").hide().css({"position":"absolute","top":0,"left":0});
$(".Opening ul li:first").addClass("active").show();
$(".Opening ul li:first img.Opening__img").animate({paddingRight:0.1},{
duration:5000,
step:function(now,fx){$(this).css({transform:'scale(' + (1 + now) +')'});},
complete:function(){$(".Opening ul li img.Opening__img").css("paddingRight",0);}
})
setInterval(function(){
var $active = $(".Opening ul li.active");
var $activeafter = $(".Opening ul li.active:after");
var $next = $active.next("li").length?$active.next("li"):$(".Opening ul li:first");
//$active.fadeOut(fade_speed,function(){$active.removeClass("active");});
$active.fadeOut(fade_speed);
$active.removeClass("active");
$next.fadeIn(fade_speed).addClass("active");
$(".Opening ul li.active img.Opening__img").animate({paddingRight:0.1},{
duration:5000,
step:function(now,fx){$(this).css({transform:'scale(' + (1 + now) +')'});},
complete:function(){$(".Opening ul li img.Opening__img").css("paddingRight",0);}
})
},interval);
});
//resi
var timer = false;
$(window).resize(function() {
if (timer !== false) {
clearTimeout(timer);
}
timer = setTimeout(function() {
console.log('resized');
setimage();
}, 200);
});
})(jQuery);
HTMl
<div class="Opening"> <ul> <li><span><img class="Opening__img" src="img/1_drtftgyuhij.jpg" alt=""></span><img class="Opening__text" src="img/tite_01.png" alt=""></li> <li><span><img class="Opening__img" src="img/2_HIRO95_yuubaenokage.jpg" alt=""></span><img class="Opening__text" src="img/tite_02.png" alt=""></li> <li><span><img class="Opening__img" src="img/3_adsfagsrethdter.jpg" alt=""></span><img class="Opening__text" src="img/tite_03.png" alt=""></li> </ul> <!-- /.Opening --></div>
CSS
/* Opening
-----------------------------------------*/
.Opening {
position:relative;
background-color: #FFF;
}
.Opening ul li{
position: relative;
overflow: hidden;
width: 100%;
text-align: center;
}
.Opening ul li img.Opening__text{
position: absolute;
top:50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform:translate(-50%, -50%);
z-index: 9;
}
.Opening ul li span {
}
.Opening ul li span img.Opening__img{
max-width: inherit;
width: 100%;
height: auto;
}