【问题标题】:CSS/jQuery full screen slide with next/previous buttons带有下一个/上一个按钮的 CSS/jQuery 全屏幻灯片
【发布时间】:2013-03-07 07:03:26
【问题描述】:

我有一个全屏网站,我正在使用 1960 年的 5 个 div,在一个 9800 的容器中,以及一个带有“上一个”和“下一个”按钮的顶部栏。

目标是滑过 1960 年到下一张幻灯片,按钮保持不变。现在我已经完成了所有设置和工作,所有内容都已布置好,基本动画正在运行,但我对一些事情感到好奇;

  1. 我想知道如何使用这些按钮,所以当你在第一张幻灯片上时,让它说“回家”和“下一个”,然后说你点击“下一个”,然后新幻灯片进来了,我需要将“回家”改为“上一张”。然后在最后一张幻灯片上,反之亦然。

  2. 另外,即使在幻灯片 5 之后,当单击下一步时,我当前如何输入“开始”和“结束”原因,它仍会继续。

当前 jquery:

$(document).ready(function () {
    $(".next_p").click(function () {
        $("#projects").animate({
            marginLeft: "-=1960px"
        });
    });
});

【问题讨论】:

    标签: jquery css slide horizontal-scrolling


    【解决方案1】:

    一种可能的解决方案(存在多种解决方案):

    DEMO

    HTML

    <a href="#" class="prev_p">Previous</a>
    
    <a href="#" class="start">Start</a>
    
    <a href="#" class="next_p">Next</a>
        <div id="projects">
            <div class="slide gray"></div>
            <div class="slide white"></div>
            <div class="slide black"></div>
            <div class="slide gray"></div>
            <div class="slide white"></div>
            <div class="slide black"></div>
        </div>
    

    CSS

    #projects {
        position:relative;
        float:left;
        width:9800px;
        height:300px;
        overflow:hidden;
    }
    .slide {
        position:relative;
        float:left;
        border:1px solid black;
        width:1960px;
        height:300px;
    }
    .gray {
        background-color:gray;
    }
    .white {
        background-color:white;
    }
    .black {
        background-color:black;
    }
    

    jQuery

    $(function () {
         $(".prev_p").hide();
         $(".start").hide();
         var slidewidth = 1960; //in Pixels
         var animationSpeed = 300; //in Milliseconds
    
         //start page
         $(".start").click(function () {
             $("#projects").animate({
                 marginLeft: "0px"
             }, animationSpeed, function () {
                 $(".start").hide();
                 $(".prev_p").hide();
                 $(".next_p").show();
             });
         });
         //next page
         $(".next_p").click(function () {
             $("#projects").animate({
                 marginLeft: "-=" + slidewidth + "px"
             }, animationSpeed, function () {
                 //check location after animation and hide controls
                 //that no longer serve a purpose and add those that do
                 var marginLeft = $("#projects").css("margin-left");
                 var numberOfSlides = 5;
                 if (marginLeft == "-" + (slidewidth * (numberOfSlides - 2)) + "px") {
                     $(".next_p").hide();
                 }
                 if (marginLeft != "0px") $(".start").show();
                 else $(".start").hide();
                 $(".prev_p").show();
             });
    
         });
         //previous page
         $(".prev_p").click(function () {
             $("#projects").animate({
                 marginLeft: "+=" + slidewidth + "px"
             }, animationSpeed, function () {
                 //check location after animation and hide controls
                 //that no longer serve a purpose and add those that do
                 var marginLeft = $("#projects").css("margin-left");
                 if (marginLeft == "0px") {
                     $(".prev_p").hide();
                     $(".start").hide();
                 } else {
                     $(".start").show();
                 }
                 $(".next_p").show();
             });
    
         });
     });
    

    【讨论】:

    • 您是真正的绅士和学者,先生。这是救生和完美的。我想要一些简单的东西,而且没有插件,就做到了。这就是我最终得到的jsfiddle.net/GPXsn
    • 嘿迈克尔.. 所以我不得不回去重做我的结构,使一切都响应并摆脱固定的宽度。现在我一直在努力让这个 jQuery 固定以适应新的结构。有什么提示吗?目前它使图像在点击时看起来是全宽的。我设置了一个容器宽度,它似乎适用于较大的分辨率,但在较小的分辨率下仍然会变大..这没有意义。再次感谢!
    • @Sneezy 更新了 jsFiddle 以在样式表中使用幻灯片的宽度。因此,您应该能够为移动设备将其设置为不同的值,并且代码的工作方式相同。 jsfiddle.net/KML9k/2 如果您调整浏览器的大小,这将不起作用,因为它是在页面加载时设置的。如果您愿意,可以使用 onResize 函数来更改大小。但这应该适合您的目的。
    • 我真的很感谢帮助的人,尤其是快速的反应。我尝试使用 onResize 但我不完全确定将它放在哪里。但是你需要让图像适应浏览器的大小。我制作了一个快速的 jsFiddle 来展示我的 HTML 和 CSS,或许可以更清楚地了解我的情况。 jsfiddle.net/e9aWL/3 再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多