首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何制作垂直“幻灯片”卷轴?

如何制作垂直“幻灯片”卷轴?
EN

Stack Overflow用户
提问于 2014-05-22 18:25:46
回答 2查看 4.1K关注 0票数 0

我有一个着陆页面,由三个帧组成,这个画面总是100%的视口高度和宽度。我需要使帧之间的转换,如"powerpoint演示文稿“等。用户滚动,框架-1幻灯片以上的视口和框架-2成为他的位置从底部的视口。我在javascript/jquery方面几乎没有经验。有一些想法,你可以在代码中看到,但这个想法行不通。

HTML:

代码语言:javascript
复制
<div class="wrapper" id="wrapper">
    <div class="frame frame-1">
        <!-- Content here -->
    </div>
<div class="frame frame-2">
    <!-- Content here -->
    </div>
    <div class="frame frame-3">
        <!-- Content here -->
    </div>
</div>

CSS:

代码语言:javascript
复制
.wrapper {
    height: 300vh;
}
.frame {
    position: fixed;
    height: 100vh;
    transition: all 1s ease;
}
.frame-1 {
    top: 0vh;
}
.frame-2 {
    top: 100vh;
}
.frame-3 {
    top: 200vh;
}

联署材料:

代码语言:javascript
复制
var $document = $(document),
    $element1 = $('.frame-1'),
    $element2 = $('.frame-2'),
    $element3 = $('.frame-3');

$(window).scroll(function () {
    if ($(this).scrollTop() >= 50) {
        $element1.css("top", "-100vh");
        $element2.css("top", "0vh");
        $element3.css("top", "100vh");
    } else if ($(this).scrollTop() >= 100) {
        $element1.css("top", "-200vh");
        $element2.css("top", "-100vh");
        $element3.css("top", "0vh");
    } else {
        $element1.css("top", "0vh");
        $element2.css("top", "100vh");
        $element3.css("top", "200vh");
    }
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-22 19:33:34

如果有一定数量的帧,我建议将它们全部放在一个div中,并更改该值的top值。这样,只需要修改一个值。

像这样:http://jsfiddle.net/xkh4D/10/

(请注意,虽然使用了px,但vh或其他任何单元都应该同样工作.但还没有试过% .)

代码语言:javascript
复制
<div id='yo' class='view'>
    <div>
        <div class='frame red'></div>
        <div class='frame green'></div>
        <div class='frame blue'></div>
    </div>
</div>
<input type='button' value='Scroll' onclick='scrollFrame()'/>

CSS

代码语言:javascript
复制
.view {
    position:relative;
    width:300px;
    height:250px;
    border:1px solid black;
    overflow:hidden;
}
.view > div {
    position:absolute;
    width:inherit;
    height:inherit;
    top:0px;
}
.frame {
    width:inherit;
    height:inherit;
}
.red { background-color:#faa }
.green { background-color:#afa }
.blue { background-color:#aaf }

JavaScript

代码语言:javascript
复制
scrollFrame = function()
{
    var h = $('#yo').height();
    var y = parseFloat($('.view > div').css('top'));

    var hsum = $('.view .frame').length * h;

    console.log('h,y,hsum',h,y,hsum);

    if (hsum-h == -1*y)
        $('.view > div').animate({'top':0});
    else
        $('.view > div').animate({top:y-h},500);
}
票数 2
EN

Stack Overflow用户

发布于 2014-05-22 18:43:43

这个js可能是你的解决方案

http://alvarotrigo.com/fullPage/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23814509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档