フル画面のスライドショー

ブラウザ画面いっぱいに広がるスライドショーです。
結構楽しかった。

以前のエントリ「ブラウザ幅いっぱい広がるビジュアル」ではloadされた時とresizeされた時にブラウザ縦幅を取ってきていましたが、今回はloadのみ。
読み込み時が気持ち悪いので、loading画面とか設定すれば良いと思います。

デモページ

HTML

<header class="header">
    <ul class="slide">
        <li><img src="img/demo/171018_1.jpg" alt=""></li>
        <li><img src="img/demo/171018_2.jpg" alt=""></li>
        <li><img src="img/demo/171018_3.jpg" alt=""></li>
        <li><img src="img/demo/171018_4.jpg" alt=""></li>
    </ul>
    <p>loadするごとにブラウザの縦幅を測定します</p>
</header>
<main class="demo_main">
    <div class="div1"></div>
    <div class="div2"></div>
    <div class="div3"></div>
</main>

CSS

body{
    margin: 0;
    padding:0;
}
.demo_main p{
    text-align: center;
    font-size: 20px;
}
ul{
    list-style-type: none;
    margin:0;
    padding: 0;
}
.div1{
    height: 300px;
    background: #ccc;
}
.div2{
    height: 300px;
    background: #ddd;
}
.div3{
    height: 300px;
    background: #fff;
}
.header {
  position: relative;
}
.header p{
    position: absolute;
    text-align: center;
    width: 100%;
    top: 50%;
    bottom: 50%;
    font-size: 30px;
    color: #fff;
    z-index: 10;
}
.header .slide {
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}
.header .slide img{
    visibility: hidden;
    height: 0;
    width: 0;
}
.header .slide li {
  position: absolute;
  display: none;
  top: 0;
  right: 0;
  width: 100%;
  height: 100%;
  background-repeat: no-repeat;
  background-size: cover;
}

javascript(jQuery)

 /*----------------------------------------------------------------------*/
    /*headerの縦幅
    /*----------------------------------------------------------------------*/
    $(function () {
        //loadされたらブラウザの縦幅を取ってきて.headerに効かせる
        $(window).on('load', function () {
            var heght = $(window).height();
            $('.header').css('height', heght + 'px');
        });
    });

    /*----------------------------------------------------------------------*/
    /*slide
    /*----------------------------------------------------------------------*/

    $(function () {
        var slide = $('.slide');
        var slide_one = $('.slide>li');
        var slide_one_first = $('.slide li:first-child');


        // .slide>liの数を取得しimgをbackgroundにする
        //  slide_one.lengthで.slide>liの数を取得。liが増えても大丈夫
        var all_li = slide_one.length;

        //新しい配列を作る
        var img_all = new Array;
        for (var i = 0; i <= all_li; i++) {

            //.slide>liの中にあるimgをそれぞれ取得
            var slide_img = slide_one.eq(i).find('img');
            //imgのsrcを配列に格納
            img_all[i] = slide_img.attr('src');

            //それぞれの.slide>liにimgをbackgroundとして効かせる
            slide_one.eq(i).css('background-image', 'url(' + img_all[i] + ')');
        }

        //スライド
        $(window).on('load', function () {

            var fadeSpeed = 8000;
            // 切り替わりの間隔(ミリ秒)
            var switchDelay = 1000;
            //  フェード処理の早さ(ミリ秒)

            //  .slide li:first-childにactiveというclassをつけてshowする
            //  ※cssで予めslide liにはdisplay:noneが掛かっている
            slide_one_first.addClass('active').show();

            setInterval(function () {
                var active = $('.slide  li.active');
                //条件演算子を使って、.slide  li.activeの次にliがあるならそれを指定(true)、
                //ないなら.slide  li:firstを指定(false)
                var next = active.next('li').length ? active.next('li') : $('.slide  li:first');

                //activeをfadeOutして、nextをfadeInする
                active.fadeOut(switchDelay).removeClass('active');
                next.fadeIn(switchDelay).addClass('active');
            }, fadeSpeed);
        });
    });

スライドのfadeSpeedとswitchDelayを変えれば切り替わりの速さを変更できます。
htmlのslide liの数が増えれば自動でスライドショーも増えるので更新も楽。

デモページ