更改div / iframe滚动?

时间:2018-12-02 23:13:00

标签: css iframe

.video-embed {
    position: relative;
    padding-bottom: 56.25%;
    padding-top: 0px;
    height: 0;
    margin-bottom: 20px;
}

.video-embed iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
<div id="video-embeds">
    <div class="video-embed" style="">
        <iframe width="560" height="315" src="http://www.youtube.com/embed/pa4IxrIsr9g" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe>
    </div>
</div>

现在,当用户向下滚动视频时,我希望<div id="video-embeds">与iframe一起跳到每个@media css具有不同大小的右上角,并停留在那里直到用户返回到实际视频位置为止,视频将再次出现在页面上...

如何执行此操作?用CSS可以吗?

更新: 滚动后我有想要的CSS。

#video-embeds-fixed {
    opacity: 1;
    pointer-events: auto;
    display: block;
    width: 400px;
    height: 225px;
    transition-property: opacity, height;
    transition-duration: 366ms;
    transition-timing-function: cubic-bezier(0.05, 0, 0, 1);
    position: fixed;
    overflow: hidden;
    box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16), 0 3px 6px 0 rgba(0,0,0,0.20);
    right: 12px;
    bottom: 10px;
}

.video-embed-fixed iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

现在将滚动#video-embeds更改为#video-embeds-fixed并将.video-embed更改为.video-embed-fixed的javascript或jQuery吗?

1 个答案:

答案 0 :(得分:0)

仅使用CSS,这是不可能的,您必须使用javascript。 但是首先将您的CSS固定ID选择器更改为类(在您的CSS文件中将#video-embeds-fixed更改为.video-embeds-fixed)。

JQuery解决方案:

var video = $('#video-embeds');
var sticky = video.offset().top;
var videoHeight = video.height();
$(window).on('load scroll resize', function() {
    if ((window.pageYOffset) >= (sticky + videoHeight)) {
        video.addClass('video-embeds-fixed');
        video.children('.video-embed').addClass('video-embed-fixed');
    } else {
        video.removeClass('video-embeds-fixed');
        video.children('.video-embed').removeClass('video-embed-fixed');
    }
});