滚动图像元素高度旁边的图像

时间:2017-02-13 20:32:06

标签: javascript jquery html css

我正在尝试针对其当前旁边的元素实现top属性增加。元素只需要在元素旁边滚动,并且在传递元素高度时应该停止。

我想要实现的目标:图像需要使用jQuery粘贴在右边的元素旁边,并停在元素的末尾。



var objectSelect = $(".article");
var objectPosition = objectSelect.offset().top;

//if (scroll > objectPosition) {
//  objectSelect.find('article').addClass("fixable").find('figure').addClass("fixable");
//} else {
//  objectSelect.find('article').removeClass("fixable").find('figure').removeClass("fixable");
//}

body{
  
  height:1000px;
  
  }

.article {
  width: 100%;
  display: block;
}
.wrapper {
  position: relative;
}
figure {
  position: absolute;
  left: 0;
  top: 0;
  width: 50%;
  padding: 0;
  margin: 0;
  overflow: hidden;
}
.other-content {
  background-color: black;
  float: right;
  overflow: hidden;
  display: block;
  width: 50%;
  height: 800px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="article">
  <div class="wrapper">
    <figure>
      <img src="https://placeholdit.imgix.net/~text?txtsize=53&txt=566%C3%97780&w=566&h=500" />
    </figure>
    <div class="other-content">

    </div>
  </div>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您可以固定figure元素,直到它的底部到达.other-content的底部,然后使用bottom: 0使其绝对定位,然后在您使用时删除绝对定位。已经滚动回到figure元素的顶部。

&#13;
&#13;
var $figure = $('figure'),
  $other = $('.other-content'),
  other_bottom = $other.offset().top + $other.outerHeight();

$(window).on('scroll', function() {
  var scroll = $(window).scrollTop(),
    figure_top = $figure.offset().top,
    figure_bottom = $figure.offset().top + $figure.outerHeight();
  if (!$figure.hasClass('abs') && figure_bottom >= other_bottom) {
    $figure.addClass('abs');
  }
  if ($figure.hasClass('abs') && scroll < figure_top) {
    $figure.removeClass('abs');
  }
});
&#13;
body {
  height: 500vh;
  margin: 0;
}

.article {
  width: 100%;
  display: block;
}

.wrapper {
  position: relative;
  overflow: auto;
}

figure {
  position: fixed;
  left: 0;
  top: 0;
  width: 50%;
  padding: 0;
  margin: 0;
  overflow: hidden;
}

.abs {
  position: absolute;
  bottom: 0;
  top: auto;
}

.other-content {
  background-color: black;
  float: right;
  overflow: hidden;
  display: block;
  width: 50%;
  height: 800px;
}

img {
  display: block;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="article">
  <div class="wrapper">
    <figure>
      <img src="https://placeholdit.imgix.net/~text?txtsize=53&txt=566%C3%97780&w=566&h=500" />
    </figure>
    <div class="other-content">
    </div>
  </div>
</div>
&#13;
&#13;
&#13;