JS+CSS实现幻灯片

幻灯片照片特效

很多网站以及博客都有这种带幻灯片的特效,看起来非常酷炫。在这个酷炫的特效的背后主要是通过jquery来实现动态切换,以及html和css实现结构布局。下面是动手自己做一个这样的幻灯片。

学习资料

  • html/css
  • javascript
  • jquery
  • css布局

html结构


<html>

<head>
    <meta charset="utf-8" />
    <title>幻灯片title>
    <link rel="stylesheet" type="text/css" href="css/index.css">
    <script type="text/javascript" src="js/jquery-1.11.3.js">script>
    <script type="text/javascript" src="js/sliders.js">script>
head>

<body>
    <div id="wrap">
        <div id="banner">
            <div id="slide-holder">
                <div id="slide-runner">
                    <a href="/" target="_blank"><img src="images/a1.jpg" id="slide-img-1" />a>
                    <a href="/" target="_blank"><img src="images/a2.jpg" id="slide-img-2" />a>
                    <a href="/" target="_blank"><img src="images/a3.jpg" id="slide-img-3" />a>
                    <a href="/" target="_blank"><img src="images/a4.jpg" id="slide-img-4" />a>
                div>
                <h2 id="caption">Captionh2>
                <h3 id="description">descriptionh3>
                <div id="slide-controls">
                    <button id="slide-next">nextbutton>
                    <button id="slide-pre">prebutton>
                div>
            div>
            <script type="text/javascript">
            if (!window.slider) {
                var slider = {};
            }
            slider.data = [{
                "id": "slide-img-1",
                "caption": "标题1",
                "description": "给点描述吧"
            }, {
                "id": "slide-img-2",
                "caption": "标题2",
                "description": "给点描述吧"
            }, {
                "id": "slide-img-3",
                "caption": "标题3",
                "description": "给点描述吧"
            }, {
                "id": "slide-img-4",
                "caption": "标题4",
                "description": "给点描述吧"
            }];
            script>
        div>
    div>
body>

html>

CSS样式表

/* 幻灯片 */

* {
    padding: 0px;
    margin: 0px;
}

#wrap {
    width: 670px;
    position: relative;
    margin: 10px auto;
}

#banner {
    width: 670px;
    height: 280px;
    position: relative;
}

#slide-holder {
    width: 670px;
    height: 280px;
    position: relative;
    overflow: hidden;
}

#slide-runner {
    position: relative;
}

#slide-runner img {
    width: 670px;
    height: 280px;
    position: absolute;
}

#slide-controls {
    width: 670px;
    height: 20px;
    bottom: 0px;
    background-color: red;
    position: absolute;
}

#slide-pre,
#slide-next {
    background-color: red;
    border: 0px;
    height: 20px;
    width: 40px;
}

#slide-pre {
    float: right;
    margin-right: 10px;
}

#slide-next {
    float: right;
}

#slide-img-2 {
    left: 670px;
}

#caption {
    position: absolute;
    left: 100px;
    top: 100px;
}

#description {
    position: absolute;
    left: 150px;
    top: 150px;
}

JS实现切换

$(function() { //页面加载完全后执行

    //绑定click事件,幻灯片切换按钮
    $("#slide-next").bind("click", slider.next);
    $("#slide-pre").bind("click", slider.pre);
    //标题隐藏
    $("#caption").hide();
    $("#description").hide();
    slider.init();
});


var slider = {
    num: -1, //幻灯片中照片数
    interval: 700, //照片偏移间隔
    index: 0, //当前照片的索引
    //幻灯片初始化
    init: function() {
        if (!slider.data || !slider.data.length) {
            return false;
        }
        var data = slider.data; //index.html输入的数据                           
        slider.num = data.length; //幻灯片数量
        for (var i = 0; i < slider.num; i++) { //设置照片的偏移量,超出外围的隐藏
            $('#' + data[i].id).css({
                left: (i * slider.interval)
            }); //设置left的偏移量
        }
        //填充标题以及描述字符
        $("#caption").html(slider.data[0].caption);
        $("#description").html(slider.data[0].description)
            //动画显示
        $("#caption").show(1000);
        $("#description").show(1000);
    },
    //前一张照片
    pre: function() {
        if (slider.index != 0) { //是否是第一张照片判断
            slider.index -= 1;
            //先隐藏标题和描述字符,然后在动态显示出来
            $("#caption").hide();
            $("#description").hide();
            //动画效果,移动#slide-runner实现画面切换
            $("#slide-runner").animate({
                left: "+=" + slider.interval + "px"
            }, 1000, function() {
                //动画完成之后执行的函数
                //动画显示标题以及描述
                $("#caption").html(slider.data[slider.index].caption);
                $("#description").html(slider.data[slider.index].description);
                $("#caption").show(1000);
                $("#description").show(1000);
            });
        }
    },
    //后一张照片
    next: function() {
        if (slider.index < (slider.num - 1)) { //判断是否是最后一张照片
            slider.index += 1;
            //先隐藏标题和描述字符,然后在动态显示出来
            $("#caption").hide();
            $("#description").hide();
            //动画效果,移动#slide-runner实现画面切换
            $("#slide-runner").animate({
                left: "-=" + slider.interval + "px"
            }, 1000, function() {
                //动画完成之后执行的函数
                //动画显示标题以及描述
                $("#caption").html(slider.data[slider.index].caption);
                $("#description").html(slider.data[slider.index].description);
                $("#caption").show(1000);
                $("#description").show(1000);
            });
        }
    }
}

你可能感兴趣的:(web,幻灯片,动态,酷炫,布局)