javascript - 带有固定内容 block 的侧边栏固定面板

标签 javascript jquery html css

我有一个侧边栏,它是position:fixed;overflow:auto; - 这会导致滚动发生在固定元素内。

现在,当侧边栏打开时,该元素不会移动,它只是静止在页面上。

我想要实现的目标:我想在滚动元素内修复 .super-image-thumb ,这样当滚动发生时,顶部的缩略图是固定的。

我也尝试了 javascript 修复,但仍然无法正常工作。有什么建议吗?

jQuery(function($) {
  function fixDiv() {
    var $cache = $('.super-image-thumb');
    if ($('.sliding-panel-content').scrollTop() > 100)
      $cache.css({
        'position': 'fixed',
        'top': '10px'
      });
    else
      $cache.css({
        'position': 'relative',
        'top': 'auto'
      });
  }
  $('.sliding-panel-content').scroll(fixDiv);
  fixDiv();
});
.sliding-panel-content {
    z-index: 1204;
}
.middle-content {
    border-left: 1px solid #ddd;
    border-right: 1px solid #ddd;
}

.middle-content {
    position: fixed;
    left: 8%;
    top: auto;
    width: 85%;
    -webkit-transform: translateY(-115%);
    -ms-transform: translateY(-115%);
    transform: translateY(-115%);
    transition: all .25s linear;
}

.sliding-panel-content {
    overflow: auto;
    top: 0;
    bottom: 0;
    height: 100%;
    background-color: #fff;
    -webkit-overflow-scrolling: touch;
}

.sliding-panel-content.is-visible {
    -webkit-transform: translateX(0);
    -ms-transform: translateX(0);
    transform: translateX(0);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<div class="js-menu sliding-panel-content middle-content is-visible">
  <span class="closeBtn sliding-panel-close"></span>
  <div class="slide-content">


    <div class="super-image-thumb">
      <div id="product-gallery-super">
        <a href="#" class="product-gallery">
          <img src="http://placehold.it/61x79?text=1">
        </a>
        <a href="#" class="product-gallery">
          <img src="http://placehold.it/61x79?text=2">
        </a>
        <a href="#" class="product-gallery">
          <img src="http://placehold.it/61x79?text=3">
        </a>
        <a href="#" class="product-gallery">
          <img src="http://placehold.it/61x79?text=4">
        </a>        
        <a href="#" class="product-gallery">
          <img src="http://placehold.it/61x79?text=5">
        </a>
        <a href="#" class="product-gallery">
          <img src="http://placehold.it/61x79?text=6">
        </a>
      </div>
    </div>

    <div class="main-image-container">
      <img class="main-image" src="http://placehold.it/500x2045">

      <button name="prev" id="super-prev">Prev</button>
      <button name="next" id="super-next">Next</button>
    </div>


  </div>
</div>

最佳答案

Fixed inside Fixed 总是有问题的。让我们更改 top:http://jsfiddle.net/s31edgao/

function fixDiv() {
  $('.super-image-thumb').css({
      'top': $('.sliding-panel-content').scrollTop()+'px'
    });
}
$('.sliding-panel-content').scroll(fixDiv);
fixDiv();

关于javascript - 带有固定内容 block 的侧边栏固定面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31663473/

相关文章:

php - Ajax定时刷新/PHP/MySQL

javascript - 为什么 async await 和 Promise.all 的运行时间相同?

javascript - HTML5 中对 canvas.putImageData 的多次调用

javascript - 如何在 ng-repeating 两次时获取特定的 json 值?

javascript - 使用 jQuery 处理使用 Newtonsoft.Json 发送的 json 数据

Javascript 在对象之间移动数组项

javascript - 为乘法元素javascript设置默认值

javascript - javascript点击事件的if else语句

html - 为什么在 chrome 中我尝试打印时得到黑色背景,但在 IE 中看起来不错

html - SVG 的加载方式取决于我访问网页的方式